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 布局系统。
其他信息
- 请参阅向应用添加 3D 模型,更好地了解如何在
SceneCoreEntity中加载 3D 内容。