Freigeben über


Objektmanipulator – MRTK3

Objektmanipulator

ObjectManipulator ermöglicht die intuitive Manipulation von Objekten im 3D-Raum mit jedem Eingabegerät oder jeder Modalität. Es führt eine ähnliche Aufgabe wie die XRI XRGrabInteractableaus, bietet jedoch zusätzliche Features und Mixed Reality-spezifische Interaktionen. Obwohl mit XRGrabInteractable unseren Interaktoren vollständig kompatibel ist (und das Gegenteil auch der Fall ist), empfehlen wir dennoch die Verwendung unserer Implementierung, um die beste Erfahrung zu erzielen.

Hinweis

ObjectManipulator ist speziell für die direkte und intuitive Bearbeitung von 3D-Objekten konzipiert. Wenn Sie nach allgemeinen Benutzeroberflächeninteraktionen wie Schiebereglern oder Schaltflächen suchen, lesen Sie stattdessen unsere Artikel zu Schiebereglern und Schaltflächen . Vermeiden Sie die Verwendung von ObjectManipulator zum Schreiben von Mikrointeraktionen.

Architektur

In MRTK v2 wurden die meisten komplexen Logiken und Mathematischen für die verschiedenen Eingabetypen selbst ObjectManipulator verarbeitet. Für jeden Interaktionstyp musste ein separater Codepfad verwaltet werden, was zu weniger Flexibilität bei der Einführung neuer Arten von Interaktionen führte. In MRTK3 ist der Interaktor für die Besonderheiten der Übersetzung eines bestimmten Eingabetyps in eine Manipulation verantwortlich. ObjectManipulator lauscht einfach auf diese Interaktoren und wendet die relevante Transformation auf das Objekt an. ObjectManipulator Daher ist MRTK3 deutlich einfacher und kleiner im Umfang. Beschreibungen der Kommunikation von Interaktoren über ihre anfügenden Transformationen finden Sie unter Interactor-Architektur .

n-händige Manipulationen

ObjectManipulator unterstützt eine beliebige Anzahl teilnehmender Interaktoren, wodurch verallgemeinerbares Interaktionsverhalten über eine, zwei und sogar nhändige Manipulationen hinweg ermöglicht wird. Im Allgemeinen wird der geometrische Schwerpunkt aller attachTransforms aller beteiligten Interaktoren für mehrhändige Interaktionen verwendet. Da XRI interagierbar ist, ist es mit jedem Typ von Interaktor kompatibel, der eine wohlverhaltende Anfügungstransformation übermittelt.

Wenn Sie keine mehrhändigen Bearbeitungen zulassen möchten, legen Sie XRI Selection Mode auf fest Single. Wir nennen diese Eigenschaft im Inspektor mit dem spezifischeren Namen Multiselect Mode , um Verwechslungen mit unserem MRTK Selection Modezu vermeiden, das verwendet wird, um anzugeben, ob ein interagierbares Objekt umgeschaltet werden kann (weitere Erläuterungen finden Sie in der Button-Dokumentation .)

Mehrfachauswahlmodus

Einschränkungen

ObjectManipulator verwendet die Einschränkungs-API, um Bearbeitungen einzuschränken. Weitere Informationen finden Sie in der Dokumentation zu Einschränkungen .

Einschleusung von Manipulationslogik

Entwickler können das Bearbeitungsverhalten von ObjectManipulator anpassen, ohne eine Unterklasse oder anderweitige Änderung des Skripts selbst vornehmen zu müssen. Schreiben Sie einfach einen neuen ManipulationLogic<T> , und geben Sie den Typ im Inspektor mit der -Eigenschaft an ManipulationLogicTypes .

Ebenso können Entwickler das Glättungsverhalten anpassen, indem sie eine neue Implementierung von ITransformSmoothingLogic schreiben und den Typ im Inspektor mit der TransformSmoothingLogicType -Eigenschaft angeben.

Wichtig

Wenn Sie neue Manipulationslogiktypen für eine neue Art von Interaktion oder Eingabegerät schreiben, gehen Sie wahrscheinlich den falschen Weg. Die vorhandene Bearbeitungslogik sollte für beliebige Eingabetypen funktionieren, solange sich die Anfügungstransformation gut verhält. Erwägen Sie stattdessen das Anpassen oder Schreiben eines neuen Interaktors. Weitere Informationen zum Schreiben einer wohlverhaltensorientierten Interaktionslogik finden Sie in der Dokumentation zur Interactor-Architektur und in der Dokumentation zur interagierbaren Architektur .