SceneCoreEntity는 Jetpack SceneCore와 XR용 Compose 라이브러리를 연결하는 하위 공간 컴포저블로, 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 레이아웃 시스템에 다시 전달합니다.
추가 정보
SceneCoreEntity내에서 3D 콘텐츠를 로드하는 방법을 자세히 알아보려면 앱에 3D 모델 추가를 참고하세요.