Sdílet prostřednictvím


Manipulátor objektů – MRTK3

Manipulátor objektů

ObjectManipulator umožňuje intuitivní manipulaci s objekty v 3D prostoru s jakýmkoli vstupním zařízením nebo způsobem. Provádí podobnou úlohu jako XRI XRGrabInteractable, ale nabízí další funkce a interakce specifické pro hybridní realitu. XRGrabInteractable I když je plně kompatibilní s našimi interakcemi (a opak je také pravdou), přesto doporučujeme používat naši implementaci, aby to bylo co nejlepší.

Poznámka

ObjectManipulator je speciálně navržený pro manipulaci s 3D objekty přímo a intuitivně. Pokud hledáte běžné interakce s uživatelským rozhraním, jako jsou posuvníky nebo tlačítka, přečtěte si místo toho naše články o posuvníkech a tlačítkách . Vyhněte se použití ObjectManipulator k zápisu mikro-interakcí.

Architektura

V MRTK v2 byla většina komplexní logiky a matematiky pro různé typy vstupu zpracována ObjectManipulator sama. Pro každý typ interakce bylo nutné zachovat samostatnou cestu ke kódu, což mělo za následek menší flexibilitu při zavádění nových typů interakcí. V MRTK3 je interagátor zodpovědný za specifika toho, jak se určitý typ vstupu převádí na manipulaci. ObjectManipulator těmto interakcím jednoduše naslouchá a použije příslušnou transformaci na objekt. Výsledkem je, že ObjectManipulator MRTK3 je výrazně jednodušší a menší. Popis toho, jak interagátory komunikují prostřednictvím svých transformací připojení, najdete v architektuře Interactor .

n-manipulace rukou

ObjectManipulator podporuje libovolný počet zúčastněných interagátorů, což umožňuje generalizovatelné chování interakce v rámci jedné, dvou a dokonce i nrukou. Obecně platí, že geometrický centroid attachTransforms všech zúčastněných interagátorů se používá pro interakce s více rukama. Vzhledem k tomu, že je rozhraní XRI interagovatelné, je kompatibilní s jakýmkoli typem interagátoru, který odesílá dobře chovanou transformaci připojení.

Pokud nechcete povolit manipulaci s více rukama, nastavte XRI Selection Mode na Single. Tuto vlastnost v inspektoru používáme jako konkrétnější název Multiselect Mode , abychom se vyhnuli záměně se sadou MRTK Selection Mode, která slouží k určení, jestli se dá interagovatelná vlastnost přepnout (další vysvětlení najdete v dokumentaci k tlačítku ).

Režim vícenásobného výběru

Omezení

ObjectManipulator k omezení manipulace používá rozhraní API pro omezení. Další informace najdete v dokumentaci k omezením .

Injektáž logiky manipulace

Vývojáři můžou přizpůsobit chování při manipulaci s objektem ObjectManipulator , aniž by museli podtřídu nebo jinak upravovat samotný skript. Jednoduše napište nový ManipulationLogic<T> a zadejte typ v inspektoru ManipulationLogicTypes pomocí vlastnosti .

Podobně mohou vývojáři přizpůsobit chování vyhlazování napsáním nové implementace ITransformSmoothingLogic a určení typu v inspektoru TransformSmoothingLogicType pomocí vlastnosti .

Důležité

Pokud zjistíte, že píšete nové typy logiky manipulace pro nový druh interakce nebo vstupního zařízení, pravděpodobně jdete špatnou cestou. Stávající logika manipulace by měla fungovat pro libovolné vstupní typy, pokud se transformace připojení správně chová. Zvažte místo toho úpravu nebo napsání nového interagátoru. Další informace o tom, jak psát správně chovanou logiku interakce, najdete v dokumentaci k architektuře Interactoru a dokumentaci k interagovatelné architektuře .