Ihrer App einen Unterbereich hinzufügen

Ein Unterraum ist eine Partition des 3D-Raums in Ihrer App, in der Sie 3D-Modelle platzieren, 3D-Layouts erstellen und ansonsten 2D-Inhalten Tiefe verleihen können. Ein Unterraum wird nur gerendert, wenn die Spatialisierung aktiviert ist. Im Zuhausebereich oder auf Nicht-XR-Geräten wird jeglicher Code in diesem Unterbereich ignoriert.

Sie können @SubspaceComposables wie Volume und SpatialPanel zum Platzieren von 3D‑Modellen verwenden. Einige XR-Komponenten wie Orbiter oder SpatialDialog sind standardmäßige 2D-Kompositionen, die überall in der 2D-UI-Hierarchie verwendet werden können. SubspaceComposable-Elemente müssen jedoch im Unterraum Ihrer App aufgerufen werden. Dazu verwenden Sie die Subspace-Funktion „composable“.

Wie bei allen anderen Composeable-Elementen können Sie Subspace direkt in Ihrer 2D-UI-Hierarchie aufrufen. Es ist jedoch wichtig, sich der Auswirkungen bewusst zu sein, die sich daraus ergeben, wo in der Hierarchie Sie Subspace aufrufen.

Unterraumhierarchien

Der Subraum der obersten Ebene ist der äußerste Subraum, der von Ihrer App aufgerufen wird. Dieser Subraum hat praktisch unendliche Grenzen und dort platzieren Sie normalerweise das räumliche Layout und die SpatialPanel Ihrer App.

Wenn Sie jedoch einen anderen Unterraum in einer 2D-UI-Hierarchie in einem Bereich verschachteln, der sich im übergeordneten Unterraum befindet, verhält sich dieser verschachtelte Unterraum anders.

Verschachtelte Unterräume unterscheiden sich in zwei wichtigen Punkten von Subspace auf oberster Ebene:

  • Sie werden im 2D-Layout verwendet, in dem sie aufgerufen werden. Das bedeutet, dass die Höhe und Breite des Unterraums durch die Höhe und Breite des übergeordneten 2D-Layouts begrenzt wird.
  • Sie verhalten sich wie untergeordnete Elemente der Entität, in der sie aufgerufen werden. Wenn Sie also ein Subspace-Element aufrufen, das in einem SpatialPanel-Element verschachtelt ist, ist dieser untergeordnete Bereich ein untergeordnetes Element des SpatialPanel-Elements, in dem es aufgerufen wird.

Diese Verhaltensweisen verschachtelter Unterräume ermöglichen Funktionen wie:

  • Untergeordnete Entität mit der übergeordneten Entität verschieben
  • Standort des Kindes mit dem Offset verschieben SubspaceModifier
  • Ein 3D-Objekt präsentieren, das über der 2D-Benutzeroberfläche schwebt und der Höhe und Breite des entsprechenden Bereichs im 2D-Layout entspricht

Ihrer App einen Unterbereich hinzufügen

Das folgende Codebeispiel zeigt, wie Sie Ihrer App übergeordnete und verschachtelte Unterräume hinzufügen.

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)
    }
      ...
}