Dela via


Objektmanipulatör – MRTK3

Objektmanipulator

ObjectManipulator möjliggör intuitiv manipulering av objekt i 3D-utrymme med valfri indataenhet eller modalitet. Den utför en liknande uppgift som XRI XRGrabInteractable, men erbjuder ytterligare funktioner och mixade verklighetsspecifika interaktioner. XRGrabInteractable Även om det är helt kompatibelt med våra interagerare (och motsatsen är också sant), rekommenderar vi fortfarande att du använder vår implementering för bästa möjliga upplevelse.

Anteckning

ObjectManipulator är särskilt utformat för att manipulera 3D-objekt direkt och intuitivt. Om du letar efter vanliga gränssnittsinteraktioner som skjutreglage eller knappar kan du läsa artiklarna om skjutreglage och knappar i stället. Undvik att använda ObjectManipulator för att skriva mikrointeraktioner.

Arkitektur

I MRTK v2 hanterades merparten av den komplexa logiken och matematiken för de olika typerna av indata av ObjectManipulator sig själv. En separat kodsökväg måste underhållas för varje typ av interaktion, vilket ger mindre flexibilitet när nya typer av interaktioner introduceras. I MRTK3 ansvarar interageraren för detaljerna i hur en viss typ av indata översätts till en manipulering. ObjectManipulator lyssnar helt enkelt på dessa interagerare och tillämpar den relevanta omvandlingen på objektet. ObjectManipulator Därför är MRTK3 betydligt enklare och mindre i omfånget. Se Interactor-arkitekturen för beskrivningar av hur interagerare kommunicerar via sina attach-transformeringar.

n-handed manipuleringar

ObjectManipulator stöder valfritt antal deltagande interaktionsfaktorer, vilket möjliggör generaliserbart interaktionsbeteende för en, två och till och med nhandmaniperingar. I allmänhet används den geometriska centroiden av alla deltagande interaktionsledares attachTransforms för flerhandsinteraktioner. Som en XRI-interaktionsbar är den kompatibel med alla typer av interaktionsfunktioner som skickar en väluppfostrad anslutningstransformering.

Om du inte vill tillåta manipuleringar med flera händer anger du XRI Selection Mode till Single. Vi alias den här egenskapen i inspektören till det mer specifika namnet Multiselect Mode för att undvika förvirring med vår MRTK Selection Mode, som används för att ange om en interaktionsbar kan växlas (se knappdokumentationen för ytterligare förtydligande.)

Flervalsläge

Villkor

ObjectManipulator använder API:et Constraints för att begränsa manipuleringar. Mer information finns i dokumentationen om begränsningar .

Manipulera logikinmatning

Utvecklare kan anpassa manipuleringsbeteendet ObjectManipulator för utan att behöva underklass eller på annat sätt ändra själva skriptet. Skriv bara en ny ManipulationLogic<T> och ange typen i inspektören ManipulationLogicTypes med egenskapen .

På samma sätt kan utvecklare anpassa utjämningsbeteendet genom att skriva en ny implementering av ITransformSmoothingLogic och ange typen i inspektören med TransformSmoothingLogicType egenskapen .

Viktigt

Om du skriver nya typer av manipulationslogik för en ny typ av interaktion eller indataenhet går du förmodligen på fel väg. Den befintliga manipulationslogik bör fungera för godtyckliga indatatyper så länge attach-transformeringen är väluppfostrad. Överväg att justera eller skriva en ny interaktionsfaktor i stället. Mer information om hur du skriver väluppfostrad interaktionslogik finns i dokumentationen för Interactor-arkitekturen och dokumentationen om interaktionsbar arkitektur .