Object Manipulator — MRTK3
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 n
hand. 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.)
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.