sceneview-android
Introduction: SceneView is a 3D and AR Android Composable and View with Google Filament and ARCore. This is a Sceneform replacement in Kotlin
Tags:
Off-3D and AR Android Jetpack Compose and Layout View based on Google Filament and ARCore
3D Scene (Filament)
Dependency
app/build.gradle
dependencies {
// Sceneview
implementation("io.github.sceneview:sceneview:2.1.0")
}
API
https://sceneview.github.io/api/sceneview-android/sceneview/
Usage
Current Version
Filament
Included Dependencies
AR ARScene (Scene + ARCore)
Dependency
app/build.gradle
dependencies {
// ARSceneview
implementation 'io.github.sceneview:arsceneview:2.1.0'
}
Usage
val engine = rememberEngine()
val modelLoader = rememberModelLoader(engine)
val environmentLoader = rememberEnvironmentLoader(engine)
Scene(
modifier = Modifier.fillMaxSize(),
engine = engine,
modelLoader = modelLoader,
childNodes = rememberNodes {
add(ModelNode(modelLoader.createModelInstance("model.glb")).apply {
// Move the node 4 units in Camera front direction
position = Position(z = -4.0f)
})
},
environment = environmentLoader.createHDREnvironment("environment.hdr")!!
)
AR Model Viewer
val engine = rememberEngine()
val modelLoader = rememberModelLoader(engine)
val model = modelLoader.createModel("model.glb")
var frame by remember { mutableStateOf<Frame?>(null) }
val childNodes = rememberNodes()
ARScene(
modifier = Modifier.fillMaxSize(),
engine = engine,
modelLoader = modelLoader,
onSessionUpdated = { session, updatedFrame ->
frame = updatedFrame
},
onGestureListener = rememberOnGestureListener(
onSingleTapConfirmed = { motionEvent, node ->
val hitResults = frame?.hitTest(motionEvent.x, motionEvent.y)
val anchor = hitResults?.firstOrNull {
it.isValid(depthPoint = false, point = false)
}?.createAnchorOrNull()
if (anchor != null) {
val anchorNode = AnchorNode(engine = engine, anchor = anchor)
anchorNode.addChildNode(
ModelNode(modelInstance = modelLoader.createInstance(model)!!)
)
childNodes += anchorNode
}
}
)
)
3D @Composable Scene()
AR @Composable ARScene()
Samples
https://github.com/SceneView/sceneview-android/tree/main/samples
Links
Tutorials
Filament
GitHub
https://github.com/google/filament
Dependencies
Filament Dependency
Support our work
Help us
- Buy devices to test the SDK on
- Equipment for decent video recording Tutorials and Presentations
- Sceneview Hosting Fees
How To Contribute
- Send $9.99 on Open Collective (CB, Paypal, Google Pay,..)
- Buy a SceneView T-Shirt
- Create a Pull Request
⚠️ Geospatial API: Be sure to follow the official Google Geospatial Developer guide to enable Geospatial API in your application.