Un SceneCoreEntity es un elemento componible de subespacio que une las bibliotecas de Jetpack SceneCore y Compose para XR para que puedas usar entidades compiladas con SceneCore en diseños de Compose. Esto te permite compilar entidades de nivel inferior y componentes personalizados, a la vez que permite que Compose ajuste el tamaño, posicione, cambie el elemento superior, agregue elementos secundarios y aplique modificadores a esas entidades.
Usa una entidad de SceneCore para colocar entidades en tu diseño
En el siguiente ejemplo, se muestra cómo usar una entidad de SceneCore para colocar entidades en tu diseño:
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. } }
Puntos clave sobre el código
- Bloque de fábrica: En el bloque de fábrica, inicializas la entidad
SurfaceEntitysubyacente de SceneCore. - Bloque de actualización: Usa el bloque de actualización para modificar las propiedades de la entidad en respuesta a los cambios en tu estado de Compose.
- Adaptación del tamaño: El
sizeAdaptercomunica las dimensiones de la entidad al sistema de diseño de Compose.
Información adicional
- Consulta Agrega modelos 3D a tu app para comprender mejor cómo cargar contenido 3D en un
SceneCoreEntity.