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. } }
コードに関する主なポイント
- ファクトリ ブロック: ファクトリ ブロックは、SceneCore から基盤となる
SurfaceEntityエンティティを初期化する場所です。 - 更新ブロック: 更新ブロックを使用して、Compose 状態の変化に応じてエンティティのプロパティを変更します。
- サイズ適応:
sizeAdapterは、エンティティのサイズを Compose レイアウト システムに返します。
その他の情報
SceneCoreEntity内に 3D コンテンツを読み込む方法について詳しくは、アプリに 3D モデルを追加するをご覧ください。