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

Modus für die automatische Auswahl

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

Manueller Auswahlmodus

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 von FaceUserConstraint

FixedDistanceConstraint

Diese Einschränkung korrigiert den Abstand zwischen dem bearbeiteten Objekt und einer anderen Objekttransformation beim Manipulationsstart. Dies ist nützlich für Verhaltensweisen wie das Festlegen des Abstands zwischen dem manipulierten Objekt und der Kopftransformation. Das Feld Einschränkungstransformation ist standardmäßig die Kameratransformation und die andere Transformation, zu der das bearbeitete Objekt einen festen Abstand hat.

Demonstration von FixedDistanceConstraint

MaintainApparentSizeConstraint

Wenn diese Einschränkung an ein Objekt angefügt wird, unabhängig davon, wie weit das Objekt vom Benutzer entfernt ist, behält es die gleiche scheinbare Größe für den Benutzer bei (d. h. es nimmt den gleichen Anteil des Benutzeransichtsfelds ein). Dies kann verwendet werden, um sicherzustellen, dass ein Slate- oder Textbereich während der Bearbeitung lesbar bleibt.

Demonstration von MaintainApparentSizeConstraint

MoveAxisConstraint

Diese Einschränkung kann verwendet werden, um zu korrigieren, entlang welcher Achsen ein bearbeitetes Objekt verschoben werden kann. Dies kann nützlich sein, um Objekte über die Oberfläche einer Ebene oder entlang einer Linie zu bearbeiten.
Das Feld Einschränkung für Bewegung gibt an, welche Achsen bewegung verhindert werden sollen. Standardmäßig sind diese Achsen global und nicht lokal, aber dies kann unten geändert werden. Da es sich bei dieser Eigenschaft um ein Flag handelt, kann eine beliebige Anzahl von Optionen ausgewählt werden.

Demonstration von MoveAxisConstraint

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 von MinMaxScaleConstraint

RotationAxisConstraint

Diese Einschränkung kann verwendet werden, um zu korrigieren, welche Achsen ein bearbeitetes Objekt gedreht werden kann. Dies kann nützlich sein, um ein bearbeitetes Objekt aufrecht zu halten, aber z. B. weiterhin Drehungen der Y-Achse zuzulassen.
Das Feld Einschränkung für Drehung gibt an, welche Achsen eine Drehung verhindern sollen. Standardmäßig sind diese Achsen global und nicht lokal, aber dies kann unten geändert werden. Da es sich bei dieser Eigenschaft um ein Flag handelt, kann eine beliebige Anzahl von Optionen ausgewählt werden.

Demonstration von RotationAxisConstraint