Entidades de SceneCore

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Visores de realidad extendida
Lentes de realidad extendida con cable

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 SurfaceEntity subyacente 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 sizeAdapter comunica las dimensiones de la entidad al sistema de diseño de Compose.

Información adicional