Udostępnij za pośrednictwem


Manipulator obiektów — MRTK3

Manipulator obiektów

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).

Tryb wyboru wielokrotnego

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ę.