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,yiz. - Użyj
axisAngle, czyliVector3reprezentują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(lubMovePolicy.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śćPosena 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ściPlaneOrientation(Horizontal,VerticallubAny).anchorPlaneSemantics: zestaw wartościPlaneSemantic(Wall,Floor,Ceiling,TablelubAny).
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ępniaSpatialResizeEventi 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.