Delen via


Object Manipulator — MRTK3

Objectmanipulator

ObjectManipulator maakt intuïtieve manipulatie van objecten in 3D-ruimte mogelijk met elk invoerapparaat of modaliteit. Het voert een vergelijkbare taak uit als de XRI XRGrabInteractable, maar biedt extra functies en mixed reality-specifieke interacties. Hoewel de XRGrabInteractable volledig compatibel is met onze interactors (en het tegenovergestelde is ook waar), raden we nog steeds aan om onze implementatie te gebruiken voor de beste ervaring.

Notitie

ObjectManipulator is speciaal ontworpen voor het rechtstreeks en intuïtief bewerken van 3D-objecten. Als u op zoek bent naar algemene interacties in de gebruikersinterface, zoals schuifregelaars of knoppen, raadpleegt u in plaats daarvan onze artikelen met schuifregelaars en knoppen . Vermijd het gebruik ObjectManipulator om micro-interacties te schrijven.

Architectuur

In MRTK v2 werden de meeste complexe logica en wiskunde voor de verschillende typen invoer zelf verwerkt ObjectManipulator . Er moest een afzonderlijk codepad worden onderhouden voor elk type interactie, wat resulteert in minder flexibiliteit bij het introduceren van nieuwe typen interacties. In MRTK3 is de interactor verantwoordelijk voor de specifieke manier waarop een bepaald type invoer wordt omgezet in een manipulatie. ObjectManipulator luistert gewoon naar deze interactors en past de relevante transformatie toe op het object. Als gevolg hiervan ObjectManipulator is MRTK3 aanzienlijk eenvoudiger en kleiner qua bereik. Zie de Interactor-architectuur voor beschrijvingen van hoe interactors communiceren via hun koppeltransformaties.

n-handmanipulaties

ObjectManipulator ondersteunt een willekeurig aantal deelnemende interactors, waardoor algemeen interactiegedrag mogelijk is bij bewerkingen met één, twee en zelfs nhand. Over het algemeen wordt het geometrische zwaartepunt van de attachTransforms van alle deelnemende interactors gebruikt voor interacties met meerdere handen. Als een XRI-interactie mogelijk, is het compatibel met elk type interactie die een goed opgevoede koppeltransformatie verzendt.

Als u bewerkingen met meerdere handen niet wilt toestaan, stelt u de XRI Selection Mode in op Single. We aliasen deze eigenschap in de inspector naar de specifiekere naam Multiselect Mode om verwarring te voorkomen met onze MRTK Selection Mode, die wordt gebruikt om aan te geven of een interactie mogelijk is om te schakelen (zie de knopdocumentatie voor meer informatie.)

Modus voor meervoudige selectie

Beperkingen

ObjectManipulator maakt gebruik van de Beperkingen-API om bewerkingen te beperken. Zie de documentatie over beperkingen voor meer informatie.

Manipulatielogica-injectie

Ontwikkelaars kunnen het manipulatiegedrag van ObjectManipulator aanpassen zonder dat ze het script zelf hoeven te subklasseren of anderszins hoeven te wijzigen. Schrijf gewoon een nieuwe ManipulationLogic<T> en geef het type op in de inspector met de ManipulationLogicTypes eigenschap .

Op dezelfde manier kunnen ontwikkelaars het vloeiende gedrag aanpassen door een nieuwe implementatie van ITransformSmoothingLogic te schrijven en het type op te geven in de inspector met de TransformSmoothingLogicType eigenschap .

Belangrijk

Als u merkt dat u nieuwe typen manipulatielogica schrijft voor een nieuw soort interactie of invoerapparaat, gaat u waarschijnlijk de verkeerde weg in. De bestaande bewerkingslogica moet werken voor willekeurige invoertypen, zolang de koppeltransformatie goed werkt. Overweeg in plaats daarvan een nieuwe interactie aan te passen of te schrijven. Lees de documentatie over interactor-architectuur en de documentatie over de interactiebare architectuur voor meer informatie over het schrijven van goed gedragende interactielogica.