Dodawanie podprzestrzeni do aplikacji

Odpowiednie urządzenia z XR
Te wskazówki pomogą Ci tworzyć treści na te typy urządzeń z XR.
Gogle XR
Przewodowe okulary XR

Podprzestrzeń to partycja przestrzeni 3D w aplikacji, w której możesz umieszczać modele 3D, tworzyć układy 3D i dodawać głębię do treści 2D. Podprzestrzeń jest renderowana tylko wtedy, gdy włączona jest opcja dodawania aspektu przestrzennego. W Home Space lub na urządzeniach bez XR każdy kod w tej podprzestrzeni jest ignorowany.

Więcej informacji o układach przestrzennych i komponentach, których możesz używać w podprzestrzeni, znajdziesz w artykule o komponentach przestrzennych.

Hierarchie podprzestrzeni

Subspace najwyższego poziomu to najbardziej zewnętrzna podprzestrzeń wywoływana przez aplikację. Każde wywołanie metody Subspace tworzy nową, niezależną hierarchię interfejsu przestrzennego. Nie dziedziczy pozycji przestrzennej, orientacji ani skali żadnego elementu nadrzędnego Subspace, w którym jest zagnieżdżony.

Aby utworzyć umieszczony lub zagnieżdżony element Subspace w komponencie SpatialPanel, Orbiter, SpatialPopup lub innym, użyj PlanarEmbeddedSubspace.

PlanarEmbeddedSubspace różni się od Subspace pod 2 względami:

  • Są one częścią układu 2D, w którym są wywoływane. Oznacza to, że wysokość i szerokość podprzestrzeni będą ograniczone wysokością i szerokością jej nadrzędnego układu 2D.
  • Zachowują się jak elementy podrzędne elementu, w którym są wywoływane. Oznacza to, że jeśli wywołasz funkcję kompozycyjną podprzestrzeni zagnieżdżoną wewnątrz SpatialPanel, ta podprzestrzeń będzie elementem podrzędnym elementu SpatialPanel, w którym została wywołana.

Te zachowania PlanarEmbeddedSubspace umożliwiają m.in.:

  • Przenoszenie encji podrzędnej razem z encją nadrzędną
  • Przesunięcie lokalizacji elementu podrzędnego za pomocą przesunięcia SubspaceModifier
  • wyświetlanie obiektu 3D, który unosi się nad interfejsem 2D i odpowiada wysokością i szerokością odpowiedniemu miejscu w układzie 2D;

Dostosowywanie układów do podprzestrzeni

W trybie pełnej przestrzeni na Androidzie XR układ aplikacji jest domyślnie powiązany z VolumeConstraints Subspace. Z tego powodu weź pod uwagę ilość widocznego miejsca dostępnego dla użytkownika i odpowiednio dostosuj układ. recommendedContentBoxInFullSpace podaje konkretne wymiary ramki ograniczającej wewnątrz ActivitySpace, dzięki czemu treści można umieścić w polu widzenia użytkownika.

Główna treść aplikacji powinna mieścić się w tym polu. Jeśli masz treści, które muszą przekraczać zalecane granice, rozważ układ, który zachęca użytkowników do odkrywania przestrzeni przez poruszanie głową. Domyślne ograniczenie recommendedContentBoxInFullSpace można zastąpić, stosując niestandardowy modyfikator oparty na rozmiarze, np. SubspaceModifier.requiredSizeIn. Aby zachowanie było nieograniczone, ustaw allowUnboundedSubspace = true.

Wywołaj recommendedContentBoxInFullSpace, używając bieżącej sesji, aby w razie potrzeby uzyskać te konkretne wymiary. Przyjrzyj się temu przykładowi:

val session = LocalSession.current
session?.scene?.activitySpace?.recommendedContentBoxInFullSpace

Dodawanie podprzestrzeni do aplikacji

Poniższy przykładowy kod pokazuje, jak dodać do aplikacji Subspace i PlanarEmbeddedSubspace:

setContent {
    // This is a top-level subspace
    Subspace {
        SpatialPanel {
            MyComposable()
        }
    }
}

@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}

@Composable
private fun PrimaryPane() {
    // This is an embedded subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in the top-level Subspace
    PlanarEmbeddedSubspace {
        SpatialPanel {}
    }
}

Więcej informacji znajdziesz w pełnej dokumentacji dotyczącej Subspace i PlanarEmbeddedSubspace.