Объекты SceneCore

Поддерживаемые XR-устройства
Это руководство поможет вам создавать продукты для таких XR-устройств.
XR-шлемы
Проводные XR-очки

SceneCoreEntity – это компонуемая функция подпространства, которая связывает библиотеки Jetpack SceneCore и Compose for XR, чтобы вы могли использовать объекты, созданные с помощью SceneCore, в макетах Compose. Это позволяет создавать объекты более низкого уровня и пользовательские компоненты, позволяя Compose определять размер, позиционировать, переназначать родительские элементы, добавлять дочерние элементы и применять модификаторы к этим объектам.

Используйте объект SceneCore, чтобы разместить объекты в макете

В следующем примере показано, как использовать объект SceneCore для размещения объектов в макете:

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.
    }
}

Важные сведения о коде

  • Блок фабрики. В нем инициализируется объект SurfaceEntity из SceneCore.
  • Блок обновления. Используйте блок обновления, чтобы изменить свойства объекта в ответ на изменения в состоянии Compose.
  • Адаптация размера. sizeAdapter передает размеры объекта обратно в систему макета Compose.

Дополнительная информация