Einschränkungs-Manager – MRTK2

Der Einschränkungs-Manager ermöglicht das Anwenden einer Reihe von Einschränkungskomponenten auf eine Transformation. Komponenten des Typs TransformConstraint , die an das Spielobjekt angefügt sind, können berücksichtigt werden. Standardmäßig erfasst der Einschränkungs-Manager automatisch alle Einschränkungskomponenten , die an das Spielobjekt angefügt sind, und wendet sie auf verarbeitete Transformationen an. Benutzer können jedoch die Liste der angewendeten Einschränkungen manuell konfigurieren und nur eine Teilmenge der angefügten Einschränkungen anwenden lassen.

Derzeit unterstützen die folgenden MRTK-UX-Elemente den Einschränkungs-Manager:

Eigenschaften und Felder der Inspektor

Der Einschränkungs-Manager kann in zwei Modi betrieben werden:

  • Automatische Einschränkungsauswahl
  • Manuelle Einschränkungsauswahl

Automatische Einschränkungsauswahl

Automatische Auswahl

Der Standardmodus des Einschränkungs-Managers, die automatische Einschränkungsauswahl, stellt eine Liste aller angefügten Einschränkungskomponenten sowie Schaltflächen zu Schaltflächen und eine Schaltfläche zum Hinzufügen von Einschränkungen bereit.

Hinzufügen einer Einschränkung zum Spielobjekt

Mit dieser Schaltfläche kann eine Einschränkungskomponente direkt aus dem Einschränkungs-Manager-Inspektor hinzugefügt werden. Alle Einschränkungstypen in einem Projekt sollten hier sichtbar sein. Weitere Informationen finden Sie unter Transformationseinschränkungen .

Zu Komponente wechseln

Alle Einschränkungen, die für das Objekt gefunden werden, werden hier mit der Schaltfläche Zu Komponente wechseln aufgeführt. Diese Schaltfläche bewirkt, dass der Inspektor zur ausgewählten Einschränkungskomponente scrollt, damit sie konfiguriert werden kann.

Manuelle Einschränkungsauswahl

Manuelle Auswahl

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. In der angezeigten Liste werden nur die vom Benutzer ausgewählten Einschränkungen angezeigt. Außerdem werden Schaltflächen oder Optionen zum Entfernen oder Hinzufügen von Einträgen angezeigt. Wenn der manuelle Modus zum ersten Mal aktiviert wird, füllt der Einschränkungs-Manager die Liste alle verfügbaren Komponenten als Ausgangspunkt für die Auswahl angefügter Einschränkungskomponenten auf.

Eintrag entfernen

Dadurch wird der Eintrag aus der manuell ausgewählten Liste entfernt. Beachten Sie, dass diese Option die Einschränkungskomponente nicht aus dem Spielobjekt entfernt. Einschränkungskomponenten müssen immer manuell entfernt werden, um sicherzustellen, dass keine andere Komponente, die sich auf diese Komponente bezieht, versehentlich beschädigt wird.

Eintrag hinzufügen

Eintrag hinzufügen öffnet eine Dropdownliste mit allen verfügbaren Einschränkungskomponenten, die noch nicht in der manuellen Liste enthalten sind. Wenn Sie auf einen der Einträge klicken, wird diese Komponente der manuellen Einschränkungsauswahl hinzugefügt.

Neue Einschränkung hinzufügen

Mit dieser Option wird dem Spielobjekt eine Komponente des ausgewählten Typs hinzugefügt und die neu erstellte Einschränkungskomponente der manuellen Einschränkungsliste hinzugefügt.

Transformationseinschränkungen

Einschränkungen können verwendet werden, um die Manipulation in irgendeiner Weise einzuschränken. Einige Anwendungen erfordern z. B. eine Drehung, aber auch, dass das Objekt aufrecht bleibt. In diesem Fall kann dem Objekt eine RotationAxisConstraint hinzugefügt und dazu verwendet werden, die Drehung auf die Y-Achse zu beschränken. MRTK stellt eine Reihe von Einschränkungen bereit, die alle unten beschrieben werden.

Es ist auch möglich, neue Einschränkungen zu definieren und sie zu verwenden, um ein eindeutiges Manipulationsverhalten zu schaffen, das möglicherweise für einige Anwendungen erforderlich ist. Erstellen Sie dazu ein Skript, das von TransformConstraint erbt, und implementieren Sie die abstrakte Eigenschaft ConstraintType und die abstrakte Methode ApplyConstraint. Beim Hinzufügen einer neuen Einschränkung zum Objekt sollte die Bearbeitung in der definierten Weise eingeschränkt werden. Diese neue Einschränkung sollte auch in der automatischen Auswahl des Einschränkungs-Managers oder im Dropdownmenü "Eintrag hinzufügen " im manuellen Modus angezeigt werden.

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

Handtyp

Gibt an, ob die Einschränkung für einhändige, zweihändige oder beide Arten von Manipulationen 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 Manipulation verwendet, wenn sie ausgewählt wird.
  • Zweihändig: Die Einschränkung wird bei der zweihändigen Manipulation verwendet, wenn sie ausgewählt wird.

Näherungstyp

Gibt an, ob die Einschränkung für Nah-, Fern- oder beide Arten von Manipulationen 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

Benutzer mit Einschränkungsgesicht

Wenn diese Einschränkung an ein Objekt angefügt wird, wird die Drehung eingeschränkt, sodass das Objekt immer dem Benutzer gegenüber steht. Dies ist für Slates oder Panels nützlich. Die Eigenschaften für FaceUserConstraint sind wie folgt:

Gesicht weg

Das Objekt ist vom Benutzer entfernt, wenn es true ist.

FixedDistanceConstraint

Einschränkung Feste Entfernungen

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. Die Eigenschaften für FixedDistanceConstraint sind wie folgt:

Einschränkungstransformation

Dies ist die andere Transformation, zu der das bearbeitete Objekt einen festen Abstand hat. Standardmäßig wird die Kameratransformation verwendet.

FixedRotationToUserConstraint

Feste Drehung

Diese Einschränkung korrigiert die relative Drehung zwischen dem Benutzer und dem bearbeiteten Objekt, während es bearbeitet wird. Dies ist für Slates oder Panels nützlich, da sichergestellt wird, dass das bearbeitete Objekt dem Benutzer immer das gleiche Gesicht zeigt wie zu Beginn der Bearbeitung. hat FixedRotationToUserConstraint keine eindeutigen Eigenschaften.

FixedRotationToWorldConstraint

Feste Drehung zur Welt

Diese Einschränkung korrigiert die globale Drehung des bearbeiteten Objekts, während es bearbeitet wird. Dies kann in Fällen nützlich sein, in denen keine Drehung durch Manipulation erfolgen soll. Hat FixedRotationToWorldConstraint keine eindeutigen Eigenschaften:

MaintainApparentSizeConstraint

Scheinbare Größe beibehalten

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. Hat MaintainApparentSizeConstraint keine eindeutigen Eigenschaften:

MoveAxisConstraint

Einschränkungsverschiebungsachse

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. Die Eigenschaften für MoveAxisConstraint sind wie folgt:

Einschränkung der Verschiebung

Gibt an, welche Achsen eine Bewegung 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.

  • X-Achse: Die Bewegung entlang der x-Achse ist eingeschränkt, wenn sie ausgewählt ist.
  • Y-Achse: Die Bewegung entlang der y-Achse ist eingeschränkt, wenn sie ausgewählt ist.
  • Z-Achse: Die Bewegung entlang der Z-Achse ist bei Auswahl eingeschränkt.

Verwenden des lokalen Speicherplatzes für Einschränkung

Schränkt die relativen lokalen Transformationsachsen des bearbeiteten Objekts ein, wenn true. Der Standardwert ist gleich „False“.

RotationAxisConstraint

Einschränkung Drehachse

Diese Einschränkung kann verwendet werden, um zu korrigieren, welche Achsen ein bearbeitetes Objekt gedreht werden kann. Dies kann nützlich sein, um ein manipuliertes Objekt aufrecht zu halten, aber weiterhin y-Achsenrotationen zuzulassen, z. B.. Die Eigenschaften für RotationAxisConstraint sind wie folgt:

Einschränkung der Drehung

Gibt an, welche Achsen drehung 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.

  • Y-Achse: Die Drehung um die y-Achse ist eingeschränkt, wenn sie ausgewählt ist.
  • Z-Achse: Die Drehung um die z-Achse ist eingeschränkt, wenn sie ausgewählt ist.
  • X-Achse: Die Drehung um die x-Achse ist eingeschränkt, wenn sie ausgewählt ist.

Verwenden des lokalen Speicherplatzes für Einschränkung

Schränkt die relativen lokalen Transformationsachsen des bearbeiteten Objekts ein, wenn true. Der Standardwert ist gleich „False“.

MinMaxScaleConstraint

Min Max Constatint

Mit dieser Einschränkung können Mindest- und Höchstwerte für die Skalierung des bearbeiteten Objekts festgelegt werden. Dies ist nützlich, um zu verhindern, dass Benutzer ein Objekt zu klein oder zu groß skalieren. Die Eigenschaften für MinMaxScaleConstraint sind wie folgt:

Skalierungsminimierung

Der minimale Skalierungswert während der Bearbeitung.

Maximale Skalierung

Der maximale Skalierungswert während der Bearbeitung.

Relativ zum Anfangszustand

Wenn true, werden die oben genannten Werte relativ zur anfänglichen Skalierung der Objekte interpretiert. Andernfalls werden sie als absolute Skalierungswerte interpretiert.