BoundsControl – MRTK3

Bounds-Steuerelement

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.

Verschließte Handles

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.

Keine Handles

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.

Herkömmliche Handles

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

Umschalter des Bounds-Steuerelements

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

Flattened BoundsControl

BoundsControl kann auch zum Bearbeiten von 2D-Inhalten verwendet werden. Wenn FlattenMode auf Autofestgelegt 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 Uniformfestgelegt 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.