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 Subraum-Kompositionen 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
s müssen jedoch im Unterbereich Ihrer App aufgerufen werden. Verwenden Sie dazu entweder das ApplicationSubspace
- oder das Subspace
-Composeable.
Wie der Name schon sagt, sollte die ApplicationSubspace
-Komposition alle ortsbezogenen Inhalte Ihrer App enthalten. Das Subspace
-Element eignet sich ideal, um eine Partition des 3D-Raums tiefer in der vorhandenen UI-Hierarchie Ihrer App einzubetten.
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 Subspace auf oberster Ebene ist der äußerste Subspace, der von Ihrer App aufgerufen wird. Verwenden Sie das ApplicationSubspace
-Komposit für Ihren Subspace auf oberster Ebene. Wenn Sie in Ihrer App jedoch nur das Subspace-Komposit verwenden, ist das äußerste Subspace
-Komposit Ihr Subspace auf oberster Ebene. Dieser untergeordnete Bereich der obersten Ebene ist standardmäßig durch den empfohlenen Bereich für die Anzeige einer App begrenzt. Dort platzieren Sie in der Regel das räumliche Layout und die SpatialPanel
Ihrer App. Wenn Sie die Grenzen des untergeordneten Subspaces der obersten Ebene ändern möchten, übergeben Sie ApplicationSubspace
unterschiedliche [VolumeConstraints
][VolumeConstraints].
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 einemSpatialPanel
-Element verschachtelt ist, ist dieser untergeordnete Bereich ein Kind desSpatialPanel
-Elements, in dem es aufgerufen wird.
Diese Verhaltensweisen verschachtelter Unterbereiche 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
Im folgenden Codebeispiel wird gezeigt, wie Sie Ihrer App übergeordnete und verschachtelte Unterbereiche hinzufügen:
setContent { // This is a top-level subspace ApplicationSubspace { 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(true) } }