Manipulator obiektów — MRTK3
ObjectManipulator
umożliwia intuicyjne manipulowanie obiektami w przestrzeni 3D przy użyciu dowolnego urządzenia wejściowego lub modalnego. Wykonuje podobne zadanie do XRI XRGrabInteractable
, ale oferuje dodatkowe funkcje i interakcje specyficzne dla rzeczywistości mieszanej. Chociaż element XRGrabInteractable
jest w pełni zgodny z naszymi interakcjami (i odwrotnie jest również prawdziwy), nadal zalecamy użycie naszej implementacji w celu uzyskania najlepszego środowiska.
Uwaga
ObjectManipulator
jest specjalnie zaprojektowany do manipulowania obiektami 3D bezpośrednio i intuicyjnie. Jeśli szukasz typowych interakcji interfejsu użytkownika, takich jak suwaki lub przyciski, zobacz nasze artykuły dotyczące suwaków i przycisków . Unikaj używania ObjectManipulator
do pisania mikro interakcji.
Architektura
W zestawie narzędzi MRTK w wersji 2 większość złożonej logiki i matematyki dla różnych typów danych wejściowych była obsługiwana ObjectManipulator
samodzielnie. Oddzielna ścieżka kodu musiała być utrzymywana dla każdego typu interakcji, co skutkuje mniejszą elastycznością podczas wprowadzania nowych typów interakcji. W narzędziu MRTK3 interakcja jest odpowiedzialna za specyfikę sposobu tłumaczenia określonego typu danych wejściowych na manipulowanie. ObjectManipulator po prostu nasłuchuje tych interakcji i stosuje odpowiednią transformację do obiektu. W rezultacie ObjectManipulator
w narzędziu MRTK3 jest znacznie prostsze i mniejsze w zakresie. Zobacz architekturę Interactor, aby uzyskać opis sposobu komunikowania się przez osoby wchodzące w interakcje za pośrednictwem przekształceń dołączania.
n
-wręczane manipulacje
ObjectManipulator
obsługuje dowolną liczbę uczestniczących interakcji, co pozwala na uogólnione zachowanie interakcji między jedną, dwiema, a nawet n
-wręczanymi manipulacjami. Ogólnie rzecz biorąc, geometryczny centroid wszystkich uczestniczących interakcji attachTransforms jest używany do interakcji wieloręcznych. W ramach interakcji XRI jest ona zgodna z dowolnym typem interakcji, który przesyła dobrze zachowywaną transformację dołączania.
Jeśli nie chcesz zezwalać na manipulowanie wieloma rękami, ustaw wartość XRI Selection Mode
na Single
. Alias tej właściwości w inspektorze do bardziej szczegółowej nazwy Multiselect Mode
, aby uniknąć pomyłek z naszym zestawem MRTK Selection Mode
, który służy do określania, czy można włączyć interakcję (zobacz dokumentację Przycisk , aby uzyskać dalsze wyjaśnienie).
Ograniczenia
ObjectManipulator
używa interfejsu API ograniczeń do ograniczania manipulacji. Aby uzyskać więcej informacji, zobacz dokumentację ograniczeń .
Iniekcja logiki manipulowania
Deweloperzy mogą dostosować zachowanie ObjectManipulator
manipulowania bez konieczności podklasy lub modyfikowania samego skryptu. Wystarczy napisać nowy ManipulationLogic<T>
i określić typ inspektora z właściwością ManipulationLogicTypes
.
Podobnie deweloperzy mogą dostosować zachowanie wygładzania, pisząc nową implementację ITransformSmoothingLogic
i określając typ w inspektorze z właściwością TransformSmoothingLogicType
.
Ważne
Jeśli samodzielnie piszesz nowe typy logiki manipulowania dla nowego rodzaju interakcji lub urządzenia wejściowego, prawdopodobnie przejdziesz w dół niewłaściwej ścieżki. Istniejąca logika manipulowania powinna działać dla dowolnych typów wejściowych, o ile transformacja dołączania jest dobrze zachowywana. Zamiast tego rozważ dostosowanie lub napisanie nowego elementu wchodzącego w interakcje. Aby uzyskać więcej informacji na temat sposobu pisania logiki interakcji, zapoznaj się z dokumentacją architektury Interakcja i dokumentacją architektury interakcji, która umożliwia interakcję.