Freigeben über


Einschränkungen — MRTK3

ConstraintManager ermöglicht es Ihnen, eine Reihe von Einschränkungskomponenten auf eine Transformation anzuwenden. Standardmäßig erfasst 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 verwenden lassen.

Hinweis

MRTK3 bietet derzeit eine begrenzte Teilmenge der Einschränkungen von MRTK 2.x. Wir untersuchen derzeit eine Umgestaltung des Einschränkungssystems, um den Entwicklerworkflow mit Solvers und Elastics zu vereinheitlichen. Schauen Sie regelmäßig vorbei!

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

Der standardmäßige automatische Modus listet alle angefügten Einschränkungskomponenten auf. Sie können direkt zur Komponente im Inspektor springen, indem Sie die Schaltflächen Zu Komponente wechseln verwenden 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 die in der Einschränkungsliste verknüpften Einschränkungen verarbeitet und auf die Transformation angewendet. Wenn der manuelle Modus zum ersten Mal aktiviert wird, füllt der Manager die Liste automatisch mit allen derzeit angefügten Einschränkungen auf.

Hinweis

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

Ausführungsreihenfolge

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

Transformationseinschränkungen

Sie können Einschränkungen verwenden, um die Bearbeitung auf irgendeine Weise einzuschränken. Einige Anwendungen erfordern z. B. eine Drehung und dass das Objekt aufrecht bleibt. In diesem Fall kann dem -Objekt ein RotationAxisConstraint hinzugefügt und verwendet werden, um die Drehung auf die Y-Achse zu beschränken. MRTK bietet mehrere Einschränkungen, die alle unten beschrieben werden.

Es ist auch möglich, neue Einschränkungen zu definieren und sie zu verwenden, um ein eindeutiges Manipulationsverhalten zu erstellen, das möglicherweise für einige Anwendungen erforderlich ist. Erstellen Sie dazu ein Skript, das von TransformConstraint erbt, und implementieren Sie die abstrakte ConstraintType Eigenschaft und die abstrakte ApplyConstraint Methode. Ihre neue Einschränkung sollte in der Dropdownliste angezeigt und automatisch im Einschränkungs-Manager registriert werden, wenn sie dem Objekt hinzugefügt wird.

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

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

  • Einhändig: Die Einschränkung wird bei der einhändigen Bearbeitung verwendet, sofern ausgewählt.
  • Zweihändig: Die Einschränkung wird bei der zweihändigen Manipulation verwendet, wenn diese ausgewählt ist.

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

  • Near: Die Einschränkung wird bei der Near-Manipulation verwendet, wenn sie ausgewählt ist.
  • Far: Einschränkung wird bei der Far-Manipulation verwendet, wenn diese Option ausgewählt ist.

FaceUserConstraint

Diese Einschränkung schränkt die Drehung eines Objekts so ein, dass es immer mit dem Benutzer konfrontiert wird. Die Option Face Away 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 Start der Bearbeitung. Dies ist nützlich für Verhaltensweisen wie das Festlegen des Abstands zwischen dem bearbeiteten Objekt und der Kopftransformation. Das Feld Einschränkungstransformation ist standardmäßig auf die Kameratransformation festgelegt, und ist 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 ist, 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 Benutzerfelds 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, auf welchen Achsen eine Bewegung verhindert werden soll. 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 schränkt die Skalierung eines Objekts ein, was nützlich ist, um zu verhindern, dass Benutzer Objekte auf unbrauchbar kleine oder große Größen skalieren. Es funktioniert sowohl für die handlebasierte Skalierung (mit BoundsControl) als auch für die zweihändige direkte Skalierung (mit ObjectManipulator). Die Option Relativ zum Anfangszustand definiert, ob die spezifischen Minimum - und Maximum-Skalierungswerte absolute Werte sind oder ob sie auf der anfänglichen Skalierung 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 weiterhin Y-Achsendrehungen zuzulassen.
Das Feld Einschränkung für Drehung gibt an, um welche Achsen drehung verhindert werden soll. 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