Omówienie modyfikatorów podprzestrzeni

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

SubspaceModifier jest podobny do modyfikatora Compose dla funkcji kompozycyjnych w Subspace. SubspaceModifier umożliwia manipulowanie elementami kompozytowymi w przestrzeni 3D, co ułatwia pozycjonowanie, obracanie i dodawanie zachowań do węzłów układu 3D.

Układ

Domyślnie Subspace jest ograniczony zalecanym obszarem wyświetlania aplikacji. Te granice są używane podczas mierzenia układu komponentów podprzestrzeni, podobnie jak granice w układach 2D Compose.

Wypełnij granice

Modyfikatory fillMaxSize, fillMaxWidth, fillMaxHeight i fillMaxDepth sprawiają, że treść (częściowo) wypełnia granice elementu nadrzędnego. Używanie modyfikatorów wypełnienia pomaga aplikacji układać treści niezależnie od charakterystyki wyświetlacza urządzenia z XR.

Ustawianie rozmiaru i wymaganego rozmiaru

Modyfikatory size, width, height i depth deklarują preferowany rozmiar treści. Aby zadeklarować dokładny rozmiar treści, użyj requiredSize, requiredWidth, requiredHeight i requiredDepth. Te jednostki muszą być określone w dp. Aby przeliczyć metry na dp, użyj Meter.toDp().

Pozycjonowanie funkcji kompozycyjnych

offset

Modyfikator offset przesuwa element kompozycyjny w przestrzeni 3D wzdłuż osi x, y i z. Te jednostki muszą być określone w dp. Aby przeliczyć metry na dp, użyj Meter.toDp().

rotate

Modyfikator rotate obraca dany element kompozycyjny w przestrzeni. Kierunek i wartość obrotu możesz określić na różne sposoby:

  • Za pomocą kątów pochylenia, odchylenia i przechylenia, które określają obrót odpowiednio wokół osi x, y i z.
  • Użyj axisAngle, czyli Vector3 reprezentującego oś obrotu, oraz liczby stopni, o jaką ma zostać obrócony,
  • Użycie obiektu Quaternion, który reprezentuje obrót.

rotateToLookAtUser

Modyfikator rotateToLookAtUser stale obraca treści, tak aby zawsze były skierowane w stronę użytkownika. Możesz też użyć tego modyfikatora, aby uzyskać efekt „billboardu”, w którym treść obraca się w stronę użytkownika na osi Y, pozostając w pozycji pionowej i zgodnej z grawitacją. Aby to zrobić, połącz modyfikator rotateToLookAtUser z modyfikatorem gravityAligned.

Przenoszenie i zmienianie rozmiaru elementów kompozycyjnych

Pozwól użytkownikom bezpośrednio manipulować pozycją i rozmiarem obiektów w przestrzeni 3D.

Przenoszenie elementów

Gdy modyfikator movable jest obecny i włączony, wyświetlane są elementy sterujące interfejsu, które można przeciągać, co pozwala użytkownikowi przesuwać element w przestrzeni 3D. Modyfikatory movable możesz stosować do całego elementu Subspace, komponentów układu przestrzennego (takich jak SpatialRow i SpatialColumn) oraz poszczególnych komponentów (takich jak SpatialPanel i SpatialGltfModel).

Konkretne zachowanie tego ruchu jest definiowane przez podany parametr movePolicy:

  • MovePolicy.Default (lub MovePolicy.system()): system całkowicie obsługuje ruch oraz automatycznie oblicza i stosuje nową pozę i skalę na podstawie danych wejściowych użytkownika.
  • MovePolicy.custom(): system oblicza docelową wartość Pose na podstawie danych wejściowych, ale nie stosuje jej automatycznie do powiązanego elementu. Jest to przydatne do ograniczania ruchu lub tworzenia niestandardowego ruchu w aplikacji.
  • MovePolicy.anchor(): umożliwia użytkownikowi przyciąganie i zakotwiczanie ruchomego elementu do wykrytych płaszczyzn w świecie rzeczywistym.

Kotwiczenie funkcji kompozycyjnych

Aby móc zakotwiczyć element kompozycyjny ruchomej podprzestrzeni na powierzchniach w świecie rzeczywistym, przekaż MovePolicy.anchor() do modyfikatora movable. Ta zasada umożliwia użytkownikom przyciąganie elementów (takich jak SpatialPanel i SpatialGltfModel) do fizycznych powierzchni, takich jak stoły, ściany czy podłogi.

Możesz filtrować wykryte płaszczyzny, do których element może się przyciągać, używając tych parametrów (jeśli pozostawisz je puste, element może zostać zakotwiczony na dowolnej wykrytej płaszczyźnie):

  • anchorPlaneOrientations: zbiór wartości PlaneOrientation (Horizontal, Vertical lub Any).
  • anchorPlaneSemantics: zestaw wartości PlaneSemantic (Wall, Floor, Ceiling, Table lub Any).

Zmienianie rozmiaru elementów

Gdy modyfikator resizable() jest obecny i włączony, wyświetlane są elementy sterujące interfejsu, które umożliwiają użytkownikowi zmianę rozmiaru elementu w przestrzeni 3D. Konkretne działanie zmiany rozmiaru jest definiowane przez podany parametr resizePolicy:

  • ResizePolicy.default(): system automatycznie obsługuje gest zmiany rozmiaru i stosuje nowe wymiary do treści.
  • ResizePolicy.custom(): system udostępnia SpatialResizeEvent i nie stosuje automatycznie wyniku zmiany rozmiaru do powiązanego elementu.

Zmienianie wyglądu funkcji kompozycyjnych

alpha

Modyfikator alpha ustawia przezroczystość elementu i jego elementów podrzędnych, gdzie 0f oznacza pełną przezroczystość, a 1.0f – pełną nieprzezroczystość.

scale

Modyfikator scale skaluje zawartość funkcji kompozycyjnej wzdłuż osi poziomej, pionowej i głębokości.

Testowanie i ułatwienia dostępu

semantics

Modyfikator semantics dodaje semantykę do węzła układu, aby można było go używać w testach i ułatwieniach dostępu. Zobacz Semantyka w Jetpack Compose i SemanticsModifier.

testTag

Modyfikator testTag to skrót od SemanticsPropertyReceiver.testTag, który umożliwia platformom testowym znajdowanie elementu w testach.