BoundsControl – MRTK3
BoundsControl bietet ein Begrenzungsfeld mit automatischer Größe sowie Bearbeitungsangebote für Drehung und Skalierung.
In MRTK 2.x wurde BoundsControl hauptsächlich durch die Verwendung von Configuration ScriptableObjects runtime-generiert. In MRTK3 wurden die Einrichtung und Anpassung von BoundsControl erheblich vereinfacht. Die Bounds-Visuals und -Handles sind einfach ein anpassbares Prefab, das BoundsControl zur Laufzeit instanziiert. Entwickler können das Prefab der Visuals optimieren und anpassen oder sogar neue Begrenzungsvisuals von Grund auf neu erstellen. Wir bieten Standardmäßige Implementierungen von Begrenzungsvisuals gemäß der neuen Mixed Reality Design Language.
Die neuen Visuals bieten optimiertes visuelles Feedback, das die Absicht und Manipulation des Objekts durch den Benutzer mit minimal intrusivem visuellem Rauschen veranschaulicht.
Einrichten
Fügen Sie einfach BoundsControl zu einem vorhandenen Objekt hinzu, und füllen Sie den BoundsVisualsPrefab
Verweis mit den Visuellen Begrenzungen auf, die Sie verwenden möchten. Wir bieten einige verschiedene vordefinierte Begrenzungsvisuals, die Sie verwenden können.
Wichtig
Es wird dringend empfohlen, dass Entwickler MinMaxScaleConstraint hinzufügen, um zu verhindern, dass der Benutzer das Objekt auf eine unbrauchbar kleine oder große Größe skalieren kann.
Um die Absicht und die Fokuseffekte der Begrenzungsvisuals verwenden zu können, müssen Sie über eine für StatefulInteractable
das -Objekt verfügen. Wenn das interagierbare nicht automatisch erkannt wird, können Sie die Verbindung im BoundsControl-Inspektor angeben.
Hinweis
Es wird empfohlen, Dass Entwickler ObjectManipulator neben BoundsControl verwenden , um Benutzern zusätzlich zur angebotsbasierten Manipulation eine direkte Manipulation anzubieten. ObjectManipulator kann als der für die StatefulInteractable
Hover-/Fokuszustände dienen, auf die die Begrenzungsvisuals reagieren.
Prefabs für Begrenzungsvisuals
Wir bieten mehrere vordefinierte Bounds-Visuals für die Verwendung mit BoundsControl an. Entwickler werden ermutigt, Prefab-Varianten dieser Visuals zu erstellen und sie an ihre Anforderungen anzupassen. Die Handleanimationen und -zustände werden von StateVisualizer unterstützt, sodass Entwickler das Erscheinungsbild der Angebote weiter anpassen können.
Behandeln von Okklusionsstil
Diese Begrenzungsvisuals bieten ein vereinfachtes visuelles Design mit weniger Ablenkung für den Benutzer. Nur die relevanten Griffe entlang der Kanten der Begrenzungen sind sichtbar. Die Begrenzungsvisuals kontrahieren, erweitern und ändern Farbe/Stärke je nach Benutzerabsicht und Auswahlfortschritt. Es wird dringend empfohlen, diesen visuellen Stil für Grenzen zu verwenden.
Nur Absicht
In einigen Kontexten können Handles unerwünscht sein, und Entwickler möchten möglicherweise die Begrenzungsvisuals allein als reizvollen Indikator für die Benutzerabsicht verwenden. Während dieses Prefab den Auftrag ausführt, kann der gleiche Effekt mit jedem der anderen Begrenzungsvisuals erzielt werden, indem Sie HandleType.None auswählen. Wir haben festgestellt, dass die Visuals zum Quetschen von Begrenzungen ein befriedigendes und ansprechendes visuelles Feedbackelement für viele verschiedene Kontexte sind, nicht nur für die griffbasierte Bearbeitung.
Legacystil
Diese Begrenzungsvisuals zeigen alle Griffe und Kanten des Felds an. Dies entspricht der Legacyentwurfssprache und dem vorherigen Verhalten in MRTK 2.x. Dieses Design kann jedoch aufgrund unnötiger visueller Rauschen für Benutzer ablenkend sein. Darüber hinaus kann das Vorhandensein der Griffe, die sich vor dem Objekt (und dahinter) befinden, Probleme mit der indirekten Bearbeitung des Blicks verursachen. Es wird davon abgeraten, diesen Stil für neue Anwendungen zu verwenden, insbesondere nicht für diejenigen, die die Zielausrichtung des Blicks nutzen.
Interaktionsgestaltung
In der aktuellen Iteration bieten wir eine einfache Interaktion zwischen Aktivierung und Deaktivierung. Durch direktes Klicken auf die Grenzen (d. h. auswählen, nicht verschieben und loslassen) können die Handles ein- und ausgeschaltet werden. Die Abstandstoleranz für diese Überprüfung kann mit DragToggleThreshold
angepasst werden, und dieses Aktivierungsverhalten selbst kann mit der ToggleHandlesOnClick
-Eigenschaft aktiviert/deaktiviert werden.
Die Handles können jederzeit manuell aktiviert oder vom Code deaktiviert werden, indem Sie festlegen HandlesActive
.
Automatische Begrenzungsberechnung
BoundsControl versucht, die Grenzen des zugeordneten Objekts automatisch zu berechnen. Wenn eine bestimmte Begrenzungsform gewünscht ist, aktivieren Sie die OverrideBounds
Option, und geben Sie das bounds-Objekt direkt an. Das Begrenzungsberechnungssystem berechnet nur die Grenzen für das angegebene Überschreibungsobjekt.
Der BoundsCalculationMethod
beeinflusst, wie der Algorithmus Grenzen berechnet. Wenn die visuelle Form des eingeschlossenen Objekts nicht unbedingt mit dem Collider übereinstimmt oder das Gegenteil zutrifft, können Entwickler die Berechnungsmethode so anpassen, dass sie Renderer- oder Collidergrenzen oder eine Kombination aus beidem bevorzugt.
Unabhängig von der Berechnungsmethode polstert die Padding
Option die Grenzen gleichmäßig in Welteinheiten. Wenn die Grenzen abgeflacht sind, ist die abgeflachte Achse nicht gepolstert.
Vereinfachen
BoundsControl kann auch zum Bearbeiten von 2D-Inhalten verwendet werden. Wenn FlattenMode
auf Auto
festgelegt ist, wird das BoundsControl-Element auf eine rechteckige 2D-Begrenzung abgeflacht, wenn das Objekt entlang einer beliebigen Achse ausreichend flach ist. Wenn das Objekt nicht ganz flach genug ist, Sie aber dennoch rechteckige Begrenzungen wünschen, FlattenMode.Always
wird das BoundsControl immer entlang der dünnsten Achse abgeflacht. Umgekehrt wird verhindert, FlattenMode.Never
dass das BoundsControl-Steuerelement abgeflacht wird, auch wenn das Objekt sehr dünn ist.
Bearbeitungsoptionen
Das Manipulationsverhalten von BoundsControl kann auf verschiedene Weise angepasst werden. Die RotateAnchor
Option steuert den Drehpunkt, um den das BoundsControl gedreht wird, wenn die Drehungsangebote verwendet werden. Die Pivotpunkte einiger Objekte sind weit von ihrem visuellen Mittelpunkt entfernt, was bei der Bearbeitung mit den Drehpunkten zu Unbehagen und Ungenauigkeiten führen kann. Wenn Sie BoundsCenter
für RotateAnchor
angeben, wird das BoundsControl immer um den geometrischen Mittelpunkt der berechneten Grenzen gedreht und nicht um den tatsächlichen Ursprung des Objekts.
Das Skalierungsverhalten kann entweder Uniform
auf oder Non Uniform
festgelegt werden. Im Uniform-Modus werden alle Achsen des Objekts zusammenskaliert, wobei Seitenverhältnis und Darstellung beibehalten werden. Bei der nicht gleichmäßigen Skalierung kann jede Achse des Objekts unabhängig skaliert werden.