Skip to content

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, confetti
  • AnimationController — composable-level animation blending, cross-fading, and layering
  • CollisionNode — declarative collision detection between scene nodes

Who should care about 4.0

  • E-commerce teams


    Multi-scene lets you embed 3D product viewers in LazyColumn feeds, BottomSheet configurators, and Pager carousels — all on one screen, all with independent cameras.

  • Real estate / architecture


    PortalNode lets users peek through doors into furnished rooms, walk through 3D floor plans, and compare lighting conditions — all without loading separate screens.

  • XR teams


    SceneView-XR means 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

Full roadmap on GitHub