SceneCoreEntity to funkcja kompozycyjna podprzestrzeni, która łączy biblioteki Jetpack SceneCore i Compose for XR, dzięki czemu możesz używać encji utworzonych za pomocą SceneCore w układach Compose. Dzięki temu możesz tworzyć encje niższego poziomu i komponenty niestandardowe, a Compose może określać rozmiar, pozycję, element nadrzędny, dodawać elementy podrzędne i stosować modyfikatory do tych encji.
Używanie encji SceneCore do umieszczania encji w układzie
Poniższy przykład pokazuje, jak używać encji SceneCore do umieszczania encji w układzie:
val virtualPixelDensity = session.scene.virtualPixelDensity Subspace { SceneCoreEntity( modifier = SubspaceModifier.offset(x = 50.dp), factory = { SurfaceEntity.create( session = session, pose = Pose.Identity, stereoMode = SurfaceEntity.StereoMode.MONO ) }, update = { entity -> // Compose state changes may be applied to the SceneCore entity here. entity.stereoMode = SurfaceEntity.StereoMode.SIDE_BY_SIDE }, sizeAdapter = object : SceneCoreEntitySizeAdapter<SurfaceEntity> { override fun onLayoutSizeChanged( entity: SurfaceEntity, size: IntVolumeSize ) { val extents = FloatSize2d( size.width.toFloat(), size.height.toFloat() ) entity.shape = SurfaceEntity.Shape.Quad(extents) } }, ) { // Content here will be children of the SceneCoreEntity // in the scene graph. } }
Najważniejsze informacje o kodzie
- Blok fabryczny: w bloku fabrycznym inicjujesz bazowy element
SurfaceEntityz SceneCore. - Blok aktualizacji: użyj bloku aktualizacji, aby zmodyfikować właściwości elementu w odpowiedzi na zmiany w stanie Compose.
- Dostosowanie rozmiaru:
sizeAdapterprzekazuje wymiary elementu z powrotem do systemu układu Compose.
Dodatkowe informacje
- Aby dowiedzieć się, jak wczytywać treści 3D w elemencie
SceneCoreEntity, przeczytaj artykuł Dodawanie modeli 3D do aplikacji.