Entidades do SceneCore

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Headsets XR
Óculos XR com fio

Um SceneCoreEntity é um elemento combinável de subespaço que une as bibliotecas Jetpack SceneCore e Compose para XR para que você possa usar entidades criadas com o SceneCore em layouts do Compose. Isso permite criar entidades de nível inferior e componentes personalizados, além de permitir que o Compose dimensione, posicione, redefina o pai, adicione filhos e aplique modificadores a essas entidades.

Usar uma entidade do SceneCore para colocar entidades no layout

O exemplo a seguir mostra como usar uma entidade do SceneCore para colocar entidades no 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.
    }
}

Pontos principais sobre o código

  • Bloco de fábrica: é onde você inicializa a entidade SurfaceEntity do SceneCore.
  • Bloco de atualização: use o bloco de atualização para modificar as propriedades da entidade em resposta a mudanças no estado do Compose.
  • Adaptação de tamanho: o sizeAdapter comunica as dimensões da entidade de volta ao sistema de layout do Compose.

Informações adicionais