Manipulátor objektů – MRTK3
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 n
rukou. 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 ).
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 .