BoundsControl – MRTK3
BoundsControl stellt ein automatisch angepasstes Begrenzungsfeld zusammen mit Manipulationsangeboten für Drehung und Skalierung bereit.
In MRTK 2.x wurde BoundsControl hauptsächlich durch die Verwendung von KonfigurationsskriptableObjects laufzeitgeneriert. In MRTK3 wurde die Einrichtung und Anpassung von BoundsControl erheblich vereinfacht. Die Grenzen visueller Und Handle sind einfach ein anpassbares Prefab, das BoundsControl zur Laufzeit instanziiert. Entwickler können die visuellen Prefabs optimieren und anpassen oder sogar neue Grenzen von Grund auf neu erstellen. Wir stellen standardmäßige visuelle Implementierungen bereit, und zwar nach der neuen Mixed Reality Entwurfssprache.
Die neuen Visuellen bieten optimierte visuelles Feedback, das die Absicht und Manipulation des Objekts mit minimal intrusivem visuellem Rauschen veranschaulicht.
Einrichten
Fügen Sie "BoundsControl" einfach zu einem vorhandenen Objekt hinzu, und füllen Sie den BoundsVisualsPrefab
Verweis mit den Umgebenden visuellen Elementen auf, die Sie verwenden möchten. Wir stellen ihnen einige verschiedene vordefinierte Grenzen zur Verfügung, 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 skaliert.
Um die Absicht und Fokuseffekte der Grenzen zu verwenden, müssen Sie über ein StatefulInteractable
Objekt verfügen. Wenn die interagierbare Funktion nicht automatisch erkannt wird, können Sie die Verbindung im BoundsControl-Inspektor angeben.
Hinweis
Wir empfehlen Entwicklern, ObjectManipulator neben BoundsControl zu verwenden , um Benutzern zusätzlich zur angebotenen Manipulation direkte Manipulation anzubieten. ObjectManipulator kann als StatefulInteractable
Hover-/Fokusstatus dienen, auf die die Begrenzungen reagieren.
Bounds visuals prefabs
Wir bieten mehrere vordefinierte Grenzen für die Verwendung mit BoundsControl an. Entwickler werden aufgefordert, Vorfab-Varianten dieser Visuellen zu erstellen und sie an ihre Anforderungen anzupassen. Die Handleanimationen und Zustände werden von StateVisualizer unterstützt, sodass Entwickler das Aussehen und Verhalten der Angebote weiter anpassen können.
Behandeln des Okklusionsstils
Diese Grenzen bieten ein vereinfachtes visuelles Design mit weniger Ablenkungen für den Benutzer. Nur die relevanten Ziehpunkte entlang der Ränder der Grenzen sind sichtbar. Der Rahmenvertrag für visuelle Elemente, Erweitern und Ändern der Farbe/Stärke je nach Benutzerabsicht und Auswahlfortschritt. Es wird dringend empfohlen, diese Begrenzungsformatvorlage zu verwenden.
Nur Absicht
In einigen Kontexten können Handle unerwünschte Sein, und Entwickler möchten die Grenzen von Visuellen allein als ansprechenden Indikator für die Benutzerabsicht verwenden. Während dieser Prefab den Auftrag ausführt, kann derselbe Effekt mit einem der anderen Begrenzungen visuals erreicht werden, indem Sie HandleType.None auswählen. Wir haben festgestellt, dass die quezbaren Grenzen visuelle Elemente ein befriedigendes und ansprechendes visuelles Feedbackelement für viele verschiedene Kontexte sind, nicht nur für handlebasierte Manipulationen.
Ältere Formatvorlage
Diese Begrenzungen zeigen alle Ziehpunkte und Kanten des Felds an. Dies entspricht genauer der älteren Entwurfssprache und dem vorherigen Verhalten, das in MRTK 2.x angezeigt wird; Dieses Design kann jedoch aufgrund unnötiger visueller Rauschen für Benutzer besser ablenken. Darüber hinaus kann die Anwesenheit der Ziehpunkte, die sich vor dem Objekt befinden (und hinter) Probleme mit der indirekten Blicknadelbearbeitung verursachen. Es wird nicht empfohlen, diese Formatvorlage für neue Anwendungen zu verwenden, insbesondere diejenigen, die die Blickadressierung nutzen.
Interaktionsgestaltung
In der aktuellen Iteration bieten wir eine einfache Aktivierungs-/Deaktivierungsinteraktion an. Wenn Sie auf die Grenzen klicken (d. h. das Auswählen des Objekts, nicht verschieben und loslassen), können die Ziehpunkte ein- und ausgeschaltet werden. Die Abstandstoleranz für diese Überprüfung kann angepasst DragToggleThreshold
werden, und dieses Aktivierungsverhalten selbst kann mit der ToggleHandlesOnClick
Eigenschaft aktiviert/deaktiviert werden.
Die Ziehpunkte können durch Festlegen HandlesActive
von Code manuell aktiviert oder deaktiviert werden.
Automatische Begrenzungsberechnung
BoundsControl versucht, die Grenzen des zugeordneten Objekts automatisch zu berechnen. Wenn eine bestimmte Begrenzungsform gewünscht ist, überprüfen Sie die OverrideBounds
Option, und geben Sie das Bounds-Objekt direkt an. Das Begrenzungsberechnungssystem berechnet nur die Grenzen für das angegebene Außerkraftsetzungsobjekt.
Die BoundsCalculationMethod
Einflüsse, wie der Algorithmus Grenzen berechnet. Wenn die visuelle Form des eingeschlossenen Objekts nicht unbedingt mit dem Collider übereinstimmt oder das Gegenteil wahr ist, können Entwickler die Berechnungsmethode anpassen, um renderer- oder kollidierte Grenzen oder eine Kombination aus beiden zu bevorzugen.
Unabhängig von der Berechnungsmethode wird die Padding
Option die Grenzen einheitlich in Welteinheiten abfüllen. Wenn die Begrenzungen abgeflacht werden, wird die flache Achse nicht gepolstert.
Vereinfachen
BoundsControl kann auch zum Bearbeiten von 2D-Inhalten verwendet werden. Wenn FlattenMode
die Eigenschaft auf Auto
"BoundsControl" festgelegt ist, wird das BoundsControl-Objekt auf eine rechteckige 2D-Begrenzung abgeflacht, wenn das Objekt auf einer beliebigen Achse ausreichend flach ist. Wenn das Objekt nicht ganz flach genug ist, aber Sie möchten immer noch rechteckige Begrenzungen leisten, FlattenMode.Always
wird die BoundsControl immer entlang der hautsten Achse flacher. Umgekehrt wird verhindert, FlattenMode.Never
dass das BoundsControl-Objekt flacher wird, auch wenn das Objekt sehr dünn ist.
Manipulationsoptionen
Das Manipulationsverhalten von BoundsControl kann auf verschiedene Arten angepasst werden. Mit der RotateAnchor
Option wird der Pivotpunkt gesteuert, um den das BoundsControl gedreht wird, wenn die Drehungsangebote verwendet werden. Die Pivotpunkte einiger Objekte sind weit von ihrem visuellen Zentrum entfernt, was bei der Bearbeitung mit den Drehpunkten Beschwerden und Ungenauigkeit verursachen kann. Wenn Sie für das RotateAnchor
Objekt angebenBoundsCenter
, wird das BoundsControl immer um die geometrische Mitte der berechneten Grenzen gedreht, anstatt den tatsächlichen Ursprung des Objekts.
Das Skalierungsverhalten kann entweder Uniform
oder Non Uniform
. Im Uniform-Modus werden alle Achsen des Objekts zusammen skaliert, das Seitenverhältnis und die Darstellung beibehalten. Eine nicht einheitliche Skalierung ermöglicht es jeder Achse des Objekts unabhängig zu skalieren.