앱에 하위 공간 추가

하위 스페이스는 앱 내 3D 공간의 파티션으로, 여기서 3D 모델을 배치하고, 3D 레이아웃을 빌드하고, 2D 콘텐츠에 깊이를 추가할 수 있습니다. 하위 공간은 공간화가 사용 설정된 경우에만 렌더링됩니다. Home Space 또는 XR이 아닌 기기에서는 해당 하위 공간 내의 모든 코드가 무시됩니다.

3D 모델을 배치하는 데 VolumeSpatialPanel와 같은 @SubspaceComposable를 사용할 수 있습니다. Orbiter 또는 SpatialDialog와 같은 일부 XR 구성요소는 2D UI 계층 구조의 어디서나 사용할 수 있는 표준 2D 컴포저블이지만 SubspaceComposable는 앱의 하위 공간에서 호출해야 합니다. 이를 위해 Subspace 컴포저블을 사용합니다.

다른 구성 가능한 함수와 마찬가지로 2D UI 계층 구조에서 직접 Subspace를 호출할 수 있습니다. 그러나 계층 구조에서 Subspace를 호출하는 위치의 의미를 이해하는 것이 중요합니다.

하위 공간 계층 구조 정보

최상위 하위 공간은 앱에서 호출하는 가장 바깥쪽 하위 공간입니다. 이 하위 공간은 사실상 무한한 경계를 가지며 일반적으로 앱의 공간 레이아웃과 SpatialPanel를 배치하는 위치입니다.

그러나 최상위 하위 스페이스에 포함된 패널의 2D UI 계층 구조 내에 다른 하위 스페이스를 중첩하면 중첩된 하위 스페이스가 다르게 동작합니다.

중첩된 하위 공간은 최상위 Subspace과 두 가지 주요 차이점이 있습니다.

  • 호출된 2D 레이아웃에 참여합니다. 즉, 하위 공간의 높이와 너비는 2D 상위 레이아웃의 높이와 너비에 의해 제한됩니다.
  • 호출된 위치에서 항목의 하위 요소로 작동합니다. 즉, SpatialPanel 내에 중첩된 Subspace 컴포저블을 호출하면 이 하위 공간은 호출된 SpatialPanel의 하위 요소가 됩니다.

중첩된 하위 공간의 이러한 동작은 다음과 같은 기능을 사용 설정합니다.

  • 상위 항목과 함께 하위 항목 이동
  • 오프셋 SubspaceModifier을 사용하여 하위 요소의 위치 오프셋
  • 2D UI 위에 마우스를 가져가면 표시되고 2D 레이아웃에서 적절한 공간의 높이와 너비와 일치하는 3D 객체를 표시합니다.

앱에 하위 공간 추가

다음 코드 예는 앱에 최상위 및 중첩된 하위 공간을 추가하는 방법을 보여줍니다.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
        // This is a top-level subspace
        Subspace {
            SpatialPanel {
                MyComposable()
            }
        }
    }
}
@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}
@Composable
private fun PrimaryPane() {
      ...
    // This is a nested subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in a top-level Subspace
    Subspace {
        ObjectInAVolume(show3DObject)
    }
      ...
}