Einschränkungen — MRTK3

Mithilfe des ConstraintManager können Sie eine Reihe von Einschränkungskomponenten auf eine Transformation anwenden. Standardmäßig sammelt der Einschränkungs-Manager automatisch alle angefügten Einschränkungskomponenten und wendet sie auf das Zielobjekt an. Benutzer können die Liste der angewendeten Einschränkungen jedoch auch manuell konfigurieren und nur eine Teilmenge der angefügten Einschränkungen zur Verwendung zuzulassen.

Hinweis

MRTK3 bietet aktuell eine begrenzte Teilmenge der Einschränkungen von MRTK 2.x. Wir untersuchen derzeit eine Umgestaltung des Constraints-Systems, um den Entwicklerworkflow mit Solvern und Elastics zu vereinheitlichen. Bleiben Sie auf dem Laufenden!

Derzeit unterstützen die folgenden MRTK-UX-Elemente Einschränkungen:

Der Einschränkungs-Manager kann in zwei Modi ausgeführt werden:

  • Automatische Einschränkungsauswahl
  • Manuelle Einschränkungsauswahl

Einschränkungsauswahl

Automatische Einschränkungsauswahl

Auto Selection mode

Im standardmäßigen automatischen Modus werden alle angefügten Einschränkungskomponenten aufgelistet. Sie können entweder mit den Schaltflächen Zu Komponenten wechseln direkt zur Komponente im Inspektor springen oder eine neue Einschränkung aus der Dropdownliste hinzufügen.

Manuelle Einschränkungsauswahl

Manual Selection mode

Wenn der Einschränkungs-Manager auf den manuellen Modus festgelegt ist, werden nur Einschränkungen verarbeitet und auf die Transformation angewendet, die in der Einschränkungsliste verknüpft sind. Wenn Sie den manuellen Modus zum ersten Mal aktivieren, füllt der Manager die Liste automatisch mit allen derzeit angefügten Einschränkungen auf.

Hinweis

Die Aktion Eintrag entfernen entfernt die Einschränkung nur aus der manuellen Auswahlliste. Die Komponente ist nach wie vor im GameObject vorhanden.

Ausführungsreihenfolge

Die Ausführungsreihenfolge der einzelnen Einschränkungen kann in der Option Ausführungsreihenfolge der Einschränkung selbst definiert werden. Die Reihenfolge spiegelt sich in der Liste wider, die im Einschränkungs-Manager angezeigt wird. Einige Einschränkungen verhalten sich anders, wenn sie in unterschiedlicher Reihenfolge kombiniert werden. Beachten Sie daher die Prioritäten jeder Einschränkung und passen ihre Reihenfolge entsprechend an.

Transformationseinschränkungen

Sie können Einschränkungen verwenden, um die Manipulation in geeigneter Weise einzuschränken. Einige Anwendungen setzen beispielsweise Drehung und das Beibehalten der aufrechten Position von Objekten voraus. In diesem Fall kann dem Objekt eine RotationAxisConstraint hinzugefügt und dazu verwendet werden, die Drehung auf die Y-Achse zu beschränken. MRTK bietet eine Reihe von Einschränkungen, die unten beschrieben werden.

Es ist auch möglich, neue Einschränkungen zu definieren und sie zu verwenden, um ein einzigartiges Manipulationsverhalten zu schaffen, das für manche Anwendungen erforderlich sein kann. Erstellen Sie dazu ein Skript, das von TransformConstraint erbt, und implementieren Sie die abstrakte Eigenschaft ConstraintType und die abstrakte Methode ApplyConstraint. Ihre neue Einschränkung sollte in der Dropdownliste angezeigt werden und beim Hinzufügen zum Objekt automatisch im Einschränkungs-Manager registriert werden.

Alle von MRTK bereitgestellten Einschränkungen teilen die folgenden Eigenschaften:

Der Handtyp gibt an, ob die Einschränkung für einhändige, zweihändige oder beide Arten von Manipulation verwendet wird. Da es sich bei dieser Eigenschaft um ein Flag handelt, können beide Optionen ausgewählt werden.

  • Einhändig: Wenn ausgewählt, wird die Einschränkung auf die einhändige Manipulation angewendet.
  • Zweihändig: Wenn ausgewählt, wird die Einschränkung auf die beidhändige Manipulation angewendet.

ProximityType gibt an, ob die Einschränkung für nahe, ferne oder beide Arten von Manipulation verwendet wird. Da es sich bei dieser Eigenschaft um ein Flag handelt, können beide Optionen ausgewählt werden.

  • Nah: Die Einschränkung wird für die Nahmanipulation verwendet, wenn sie ausgewählt ist.
  • Fern: Die Einschränkung wird für die Fernmanipulation verwendet, wenn sie ausgewählt ist.

FaceUserConstraint

Diese Einschränkung beschränkt die Drehung eines Objekts so, dass es immer dem Benutzer zugewandt ist. Die Option Face Away (Abgewendet) steuert, ob die positive oder negative Z-Achse verwendet wird.

Demonstration of FaceUserConstraint

MinMaxScaleConstraint

Diese Einschränkung beschränkt die Skalierung eines Objekts, was nützlich ist, um Benutzer daran zu hindern, Objekte auf unbrauchbar kleine oder große Größen zu skalieren. Sie funktioniert sowohl für die ziehpunktbasierte Skalierung (mit BoundsControl) als auch für die direkte zweihändige Skalierung (mit ObjectManipulator). Die Option Relativ zum Anfangszustand definiert, ob die spezifischen Minimum- und Maximumwerte der Skala absolute Werte darstellen oder sie ausgehend von der Anfangsgröße des Objekts multipliziert werden.

Demonstration of MinMaxScaleConstraint