BoundsControl – MRTK3

Bounds control

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.

Occluded handles

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.

No handles

Ä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.

Traditional handles

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 DragToggleThresholdwerden, und dieses Aktivierungsverhalten selbst kann mit der ToggleHandlesOnClick Eigenschaft aktiviert/deaktiviert werden.

Bounds control toggle

Die Ziehpunkte können durch Festlegen HandlesActivevon 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

Flattened BoundsControl

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.