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 內容。