SceneCore 实体

适用的 XR 设备
本指南可帮助您为以下类型的 XR 设备打造优质体验。
扩展现实头戴设备
有线扩展现实眼镜

SceneCoreEntity 是一种子空间可组合项,它连接了 Jetpack SceneCore 和 Compose for XR 库,以便您在 Compose 布局中使用通过 SceneCore 构建的实体。这样,您就可以构建较低级别的实体和自定义组件,同时允许 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.
    }
}

代码要点

  • 工厂块:工厂块是您从 SceneCore 初始化底层 SurfaceEntity 实体的位置。
  • 更新块:使用更新块可修改实体的属性,以响应 Compose 状态的变化。
  • 尺寸自适应:sizeAdapter 会将实体的尺寸传回 Compose 布局系统。

其他信息