Un SceneCoreEntity è un componibile di sottospazio che collega le librerie Jetpack SceneCore e Compose per XR in modo da poter utilizzare le entità create con SceneCore nei layout di Compose. In questo modo puoi creare entità di livello inferiore e componenti personalizzati, consentendo al contempo a Compose di ridimensionare, posizionare, riassegnare l'elemento principale, aggiungere elementi secondari e applicare modificatori a queste entità.
Utilizza un'entità SceneCore per posizionare le entità nel layout
L'esempio seguente mostra come utilizzare un'entità SceneCore per posizionare le entità nel layout:
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. } }
Punti chiave sul codice
- Blocco di fabbrica: nel blocco di fabbrica inizializzi l'entità
SurfaceEntitysottostante da SceneCore. - Blocco di aggiornamento: utilizza il blocco di aggiornamento per modificare le proprietà dell'entità in risposta alle modifiche dello stato di Compose.
- Adattamento delle dimensioni: l'
sizeAdaptercomunica le dimensioni dell'entità al sistema di layout di Compose.
Informazioni aggiuntive
- Consulta Aggiungi modelli 3D alla tua app per capire meglio come caricare contenuti 3D all'interno di un
SceneCoreEntity.