SceneView 4.0 preview¶
The next major release takes SceneView beyond Android — multi-platform, spatial computing, and a more powerful scene graph.
v3.2.0 is production-ready today
You don't need to wait for 4.0. Everything below adds capabilities on top — it doesn't replace anything. Get started now.
The journey¶
| Version | Theme |
|---|---|
| 2.x | View-based Sceneform successor |
| 3.0 | Compose rewrite — "3D is just Compose UI" |
| 3.1 | rememberModelInstance, camera manipulator, gesture polish |
| 3.2 | Physics, dynamic sky, fog, reflections, lines, text, post-processing |
| 4.0 | Multi-scene, portals, XR, Kotlin Multiplatform |
Multiple Scene {} on one screen¶
Today, you get one Scene per screen. In 4.0, multiple independent scenes share a single
Filament Engine, each with its own camera, environment, and node tree.
@Composable
fun DashboardScreen() {
Column {
// Product hero
Scene(
modifier = Modifier.fillMaxWidth().height(300.dp),
engine = engine,
environment = studioEnvironment
) {
ModelNode(modelInstance = product, scaleToUnits = 1.0f)
}
// Inline data globe — different camera, different lighting
Scene(
modifier = Modifier.size(200.dp),
engine = engine,
environment = darkEnvironment
) {
SphereNode(radius = 0.5f, materialInstance = globeMaterial)
}
// Standard Compose content
LazyColumn { /* cards, charts, text */ }
}
}
Dashboards, e-commerce feeds, social timelines — 3D elements mixed freely with
LazyColumn, Pager, BottomSheet.
PortalNode — a scene inside a scene¶
Render a secondary scene inside a 3D frame. A window into another world.
Scene(modifier = Modifier.fillMaxSize()) {
ModelNode(modelInstance = room, scaleToUnits = 2.0f)
// A portal on the wall
PortalNode(
position = Position(0f, 1.5f, -2f),
size = Size(1.2f, 1.8f),
scene = portalScene
) {
ModelNode(modelInstance = fantasyLandscape, scaleToUnits = 5.0f)
DynamicSkyNode(sunPosition = Position(0.2f, 0.8f, 0.3f))
FogNode(density = 0.05f, color = Color(0.6f, 0.7f, 1.0f))
}
}
Use cases: AR portals, product showcases with custom lighting, game level transitions, real estate walkthroughs.
SceneView-XR — spatial computing¶
A new module for XR headsets and passthrough AR. Same composable API — now in spatial environments.
implementation("io.github.sceneview:sceneview-xr:4.0.0")
XRScene(modifier = Modifier.fillMaxSize()) {
ModelNode(
modelInstance = furniture,
position = Position(0f, 0f, -2f)
)
ViewNode(position = Position(0.5f, 1.5f, -1.5f)) {
Card {
Text("Tap to customize")
ColorPicker(onColorSelected = { /* update material */ })
}
}
}
Your existing 3D/AR code patterns transfer directly to spatial computing.
Kotlin Multiplatform¶
Share scene definitions between Android and iOS from a single Kotlin codebase. iOS rendering via Filament's Metal backend.
// commonMain — shared across platforms
@Composable
fun ProductViewer(modelPath: String) {
Scene(modifier = Modifier.fillMaxSize()) {
rememberModelInstance(modelLoader, modelPath)?.let { instance ->
ModelNode(modelInstance = instance, scaleToUnits = 1.0f)
}
}
}
Write once, render natively on both platforms.
Also in 4.0¶
- Filament 2.x migration — improved performance, better materials, reduced memory
ParticleNode— GPU particle system for fire, smoke, sparkles, confettiAnimationController— composable-level animation blending, cross-fading, and layeringCollisionNode— declarative collision detection between scene nodes
Who should care about 4.0¶
-
E-commerce teams
Multi-scene lets you embed 3D product viewers in
LazyColumnfeeds,BottomSheetconfigurators, andPagercarousels — all on one screen, all with independent cameras. -
Real estate / architecture
PortalNodelets users peek through doors into furnished rooms, walk through 3D floor plans, and compare lighting conditions — all without loading separate screens. -
XR teams
SceneView-XRmeans the same code and patterns you build for phone AR transfer directly to XR headsets. No new framework to learn. -
Cross-platform teams
Kotlin Multiplatform means you can share scene definitions between Android and iOS. One Kotlin codebase, two platforms.
Summary¶
| Limitation today | v4.0 solution |
|---|---|
| One Scene per screen | Multiple independent Scenes |
| Flat scene graph | PortalNode — scenes within scenes |
| Android only | Kotlin Multiplatform (iOS) |
| Phone/tablet only | SceneView-XR for spatial computing |