SceneCore 항목

적용 가능한 XR 기기
이 가이드는 이러한 유형의 XR 기기를 위한 환경을 빌드하는 데 도움이 됩니다.
XR 헤드셋
유선 XR 글라스

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 모델 추가를 참고하세요.