Ein SceneCoreEntity ist ein Subspace-Composable, das die Bibliotheken Jetpack SceneCore und Compose for XR verbindet, sodass Sie mit SceneCore erstellte Entitäten in Compose-Layouts verwenden können. So können Sie untergeordnete Entitäten und benutzerdefinierte Komponenten erstellen, während Compose die Größe, Position, Neuzuordnung, das Hinzufügen von untergeordneten Elementen und das Anwenden von Modifikatoren auf diese Entitäten ermöglicht.
SceneCore-Entität verwenden, um Entitäten in Ihrem Layout zu platzieren
Im folgenden Beispiel wird gezeigt, wie Sie eine SceneCore-Entität verwenden, um Entitäten in Ihrem Layout zu platzieren:
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. } }
Wichtige Punkte zum Code
- Factory-Block: Im Factory-Block initialisieren Sie die zugrunde liegende
SurfaceEntity-Entität aus SceneCore. - Update-Block: Verwenden Sie den Update-Block, um die Attribute der Entität als Reaktion auf Änderungen im Compose-Status zu ändern.
- Größenanpassung: Die
sizeAdaptergibt die Abmessungen der Entität an das Compose-Layoutsystem zurück.
Weitere Informationen
- Unter 3D-Modelle zu Ihrer App hinzufügen erfahren Sie, wie Sie 3D-Inhalte in ein
SceneCoreEntityladen.