Objektmanipulator – MRTK2

Object manipulator

Der ObjectManipulator ist die neue Komponente für Manipulationsverhalten, die zuvor in ManipulationHandler gefunden wurde. Der Objektmanipulator macht eine Reihe von Verbesserungen und Vereinfachungen. Diese Komponente ist ein Ersatz für den Manipulationshandler, der veraltet ist.

Das ObjectManipulator-Skript macht ein Objekt verschiebbar, skalierbare und drehbar mit einem oder zwei Händen. Der Objektmanipulator kann konfiguriert werden, um zu steuern, wie das Objekt auf verschiedene Eingaben reagiert. Das Skript sollte mit den meisten Interaktionsformen arbeiten, z. B. HoloLens 2 artikulierte Hand, HoloLens 2 Handstrahlen, HoloLens 1 Blick und Gesten und immersive Headset-Bewegungscontrollereingaben.

Verwenden des Objektmanipulators

Um den Objektmanipulator zu verwenden, fügen Sie zuerst die ObjectManipulator Skriptkomponente zu einem GameObject hinzu. Stellen Sie sicher, dass Sie dem Objekt auch einen Collider hinzufügen, deren ziehbare Grenzen übereinstimmen.

Fügen Sie das NearInteractionGrabbable Skript auch hinzu, um das Objekt auf die nah artikulierte Handeingabe zu reagieren.

Das Physikalische Verhalten kann für den Objektmanipulator aktiviert werden, indem eine starre Körperkomponente zum Objekt hinzugefügt wird. Physikverhalten, das durch hinzufügen dieser Komponente aktiviert ist, wird in Physik und Kollisionen genauer erläutert.

Außerdem kann die Manipulation eingeschränkt werden, indem Manipulationsbeschränkungskomponenten zum Objekt hinzugefügt werden. Dies sind spezielle Komponenten, die mit Manipulation arbeiten und das Manipulationsverhalten auf einige Weise ändern.

Using the Manipulation Handler in the Unity editor

Inspektoreigenschaften und Felder

Object Manipulator Structure

Allgemeine Eigenschaften

Hosttransformation

Die Objekttransformation, die bearbeitet wird. Standardeinstellung für das Objekt der Komponente.

Manipulationstyp

Gibt an, ob das Objekt mithilfe einer Hand oder zwei Händen bearbeitet werden kann. Da es sich bei dieser Eigenschaft um ein Flag handelt, können beide Optionen ausgewählt werden.

  • Eine Hand: Ermöglicht eine handgesteuerte Manipulation, wenn ausgewählt.
  • Zweihand: Ermöglicht zweihändige Manipulation, wenn ausgewählt.

Weit manipulation zulassen

Gibt an, ob die Manipulation mit zeigern weit genutzt werden kann.

Eigenschaften einer Handbearbeitung

Ein Handdrehungsmodus in der Nähe

Gibt an, wie sich das Objekt verhält, wenn es mit einer Hand nahe geraubt wird. Diese Optionen funktionieren nur für artikulierte Hände.

  • Drehen Sie sich über das Objektcenter: Das Objekt dreht sich mithilfe der Drehung der Hand, aber über den Objektzentrpunkt. Das Objekt wird erscheinen, weniger zu bewegen, während es gedreht wird, aber es kann ein Gefühl der Trennung zwischen der Hand und dem Objekt geben. Nützlicher für eine weite Interaktion.
  • Drehen Sie den Grabpunkt: Drehen Sie das Objekt mit der Hand über den Ziehpunkt zwischen dem Daumen und dem Indexfinger. Es sollte so aussehen, als ob das Objekt von der Hand gehalten wird.

Ein Handdrehungsmodus weit

Gibt an, wie sich das Objekt verhält, wenn er mit einer Hand in Abstand geraubt wird. Diese Optionen funktionieren nur für artikulierte Hände.

  • Drehen Sie sich über das Objektcenter: Drehen Des Objekts mithilfe der Drehung der Hand, aber über den Objektzentrpunkt. Nützlich für die Überprüfung in einem Abstand, ohne dass sich das Objektzentrum bewegt, wenn das Objekt gedreht wird.
  • Drehen Sie den Greifpunkt: Drehen Sie das Objekt mithilfe der Drehung der Hand, aber über den Zeigerstrahl-Trefferpunkt. Nützlich zur Untersuchung.

Zweihand-Manipulationseigenschaften

Zweihand-Manipulationstyp

Gibt an, wie zwei Handbearbeitungen ein Objekt transformieren können. Da diese Eigenschaft ein Flag ist, kann eine beliebige Anzahl von Optionen ausgewählt werden.

  • Verschieben: Das Verschieben ist zulässig, wenn ausgewählt.
  • Skalierung: Skalierung ist zulässig, wenn ausgewählt.
  • Drehen: Drehung ist zulässig, wenn ausgewählt.

Manipulation Handler

Einschränkungen

Aktivieren von Einschränkungen

Diese Einstellung aktiviert den verknüpften Einschränkungs-Manager. Transformationsänderungen werden durch Einschränkungen verarbeitet, die für den ausgewählten Einschränkungs-Manager registriert sind.

Einschränkungs-Manager

Mit der Dropdownliste können Sie eine der angefügten Einschränkungsmanager auswählen. Der Objektmanipulator stellt sicher, dass ein Einschränkungs-Manager jederzeit angefügt ist. Beachten Sie, dass mehrere Komponenten desselben Typs unter demselben Namen in Unity angezeigt werden. Um es einfacher zu machen, zwischen mehreren Einschränkungsmanagern auf demselben Objekt zu unterscheiden, werden die verfügbaren Optionen einen Hinweis auf die Konfiguration des ausgewählten Einschränkungs-Managers (manuelle oder automatische Einschränkungsauswahl) angezeigt.

Zu Komponente wechseln

Die Einschränkungs-Manager-Auswahl enthält eine Schaltfläche " Zu Komponente wechseln ". Diese Schaltfläche führt dazu, dass der Inspektor zu der ausgewählten Komponente scrollen kann, damit er konfiguriert werden kann.

Physische Effekte

Einstellungen in diesem Abschnitt werden nur angezeigt, wenn das Objekt über eine RigidBody-Komponente verfügt.

Veröffentlichungsverhalten

Geben Sie an, welche physischen Eigenschaften ein bearbeitetes Objekt auf der Version beibehalten werden soll. Da es sich bei dieser Eigenschaft um ein Flag handelt, können beide Optionen ausgewählt werden.

  • Geschwindigkeit beibehalten: Wenn das Objekt freigegeben wird, wenn diese Option ausgewählt wird, behält er seine lineare Geschwindigkeit.
  • Halten Sie Angular Geschwindigkeit fest: Wenn das Objekt freigegeben wird, wird diese Option ausgewählt, wird die Winkelgeschwindigkeit beibehalten.

Verwenden von Kräften für die nahe Manipulation

Ob Physikkräfte verwendet werden, um das Objekt beim Ausführen von Manipulationen in der Nähe zu verschieben. Wenn Sie dies auf "false " festlegen, wird das Objekt direkt mit der Benutzerhand verbunden. Dies auf "True " festgelegt wird, wird die Masse und Dietheit des Objekts honorieren, aber kann sich fühlen, dass das Objekt über eine Quelle verbunden ist. Die Standardeinstellung ist false.

Glättung

Verglätten weit

Unabhängig davon, ob eine unabhängige Framerate für viele Interaktionen aktiviert ist. Die Glattung ist standardmäßig aktiviert.

Glätten in der Nähe

Ob die unabhängige Framerate für interaktionen aktiviert ist. In der Nähe ist die Verglättung standardmäßig deaktiviert, da der Effekt möglicherweise als "getrennt" von der Hand wahrgenommen wird.

Aktives Glätten

Veraltet und wird in einer zukünftigen Version entfernt. Anwendungen sollten SmoothingFar, SmoothingNear oder eine Kombination der beiden verwenden.

Lerp-Zeit verschieben

Die Verglättung, die auf die Bewegung angewendet werden soll. Das Glätten von 0 bedeutet keine Verglättung. Max.-Wert bedeutet keine Änderung des Werts.

Drehen der Lerp-Zeit

Die Reibungsmenge, die auf die Drehung angewendet werden soll. Das Glätten von 0 bedeutet keine Verglättung. Max.-Wert bedeutet keine Änderung des Werts.

Skalierungs-Lerp-Zeit

Menge der Verglättung, die auf die Skalierung angewendet werden soll. Das Glätten von 0 bedeutet keine Verglättung. Max.-Wert bedeutet keine Änderung des Werts.

Bearbeitungsereignisse

Der Manipulationshandler stellt die folgenden Ereignisse bereit:

  • OnManipulationStarted: Beim Starten der Manipulation ausgelöst.
  • OnManipulationEnded: Wird ausgelöst, wenn die Manipulation endet.
  • OnHoverStarted: Wird ausgelöst, wenn ein Hand- / Controller die manipulationsfähige, nahe oder weit bewegt.
  • OnHoverEnded: Wird ausgelöst, wenn ein Hand- / Controller die manipulationsfähige, nahe oder weit bewegt.

Die Ereignis fire order for manipulation is:

OnHoverStarted ->OnManipulationStarted ->OnManipulationEnded ->OnHoverEnded

Wenn keine Manipulation vorliegt, erhalten Sie weiterhin Hoverereignisse mit der folgenden Feuerreihenfolge:

OnHoverStarted ->OnHoverEnded

Physik und Kollisionen

Das Physikalische Verhalten kann durch Hinzufügen einer starrenBody-Komponente zumselben Objekt wie ein Objektmanipulator aktiviert werden. Dies ermöglicht nicht nur die Konfiguration des oben genannten Releaseverhaltens , es ermöglicht auch Kollisionen. Ohne eine starre Komponente verhalten sich Kollisionen während der Manipulation nicht richtig:

  • Kollisionen zwischen einem bearbeiteten Objekt und einem statischen Kollidierungsobjekt (d. h. ein Objekt mit einem Collider, aber kein starrer) funktionieren nicht, das bearbeitete Objekt überläuft gerade den statischen Kollider.
  • Kollisionen zwischen einem manipulierten Objekt und einem starren Objekt (d. h. ein Objekt mit einem Kollidieren und einem starren Objekt) führen dazu, dass der starre Mensch eine Kollisionsreaktion hat, aber die Antwort ist sprunghaft und unnatürlich. Es gibt auch keine Kollisionsantwort für das bearbeitete Objekt.

Wenn ein starrer Mensch hinzugefügt wird, sollten Kollisionen ordnungsgemäß funktionieren.

Ohne starrer Mensch

No Rigid Body

Mit Starrkörper

Rigid Body

Elastics (Experimental)

Elastics können beim Bearbeiten von Objekten über Objektmanipulator verwendet werden. Beachten Sie, dass das Elastics-System noch im experimentellen Zustand ist. Zum Aktivieren von Elastics können Sie entweder eine vorhandene Elastics Manager-Komponente verknüpfen oder einen neuen Elastics Manager über die Add Elastics Manager Schaltfläche erstellen und verknüpfen.

Bounds Control Elastics

Siehe auch