Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
BoundsControl bietet einen Begrenzungsrahmen mit automatischer Größe sowie Bearbeitungsangeboten für Drehung und Skalierung.
In MRTK 2.x wurde BoundsControl hauptsächlich durch die Verwendung von ScriptableObjects zur Konfiguration zur Laufzeit generiert. In MRTK3 wurde die Einrichtung und Anpassung von BoundsControl erheblich vereinfacht. Die Begrenzungsvisuals und Handles sind einfach ein anpassbares Prefab, das BoundsControl zur Laufzeit instanziiert. Entwickler können das Prefab für Visuals optimieren und anpassen oder sogar neue Begrenzungsvisuals von Grund auf erstellen. Wir stellen standardmäßige Implementierungen von Begrenzungsvisuals gemäß der neuen Mixed Reality Design Language bereit.
Die neuen Visuals bieten optimiertes visuelles Feedback, das die Absicht des Benutzers und die Manipulation des Objekts mit minimal aufdringlichem visuellem Rauschen veranschaulicht.
Setup
Fügen Sie einem vorhandenen Objekt einfach BoundsControl hinzu, und füllen Sie den BoundsVisualsPrefab
Verweis mit den visuellen Begrenzungen auf, die Sie verwenden möchten. Wir stellen einige verschiedene vordefinierte Begrenzungsvisuals zur Verfügung, die Sie verwenden können.
Wichtig
Entwicklern wird dringend empfohlen , MinMaxScaleConstraint hinzuzufügen, um zu verhindern, dass der Benutzer das Objekt auf eine unbrauchbar kleine oder große Größe skaliert.
Um die Absichts- und Fokuseffekte der Begrenzungsvisuals verwenden zu können, müssen Sie über ein StatefulInteractable
-Element für das -Objekt verfügen. Wenn die interaktionsfähige Nicht automatisch erkannt wird, können Sie die Verbindung im BoundsControl-Inspektor angeben.
Hinweis
Entwicklern wird empfohlen, ObjectManipulator neben BoundsControl zu 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 Begrenzungsvisuals für die Verwendung mit BoundsControl an. Entwicklern wird empfohlen, 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 Aussehen und Verhalten der Angebote weiter anpassen können.
Behandeln des Okklusionsstils
Diese Begrenzungsvisuals bieten ein vereinfachtes visuelles Design mit weniger Ablenkungen für den Benutzer. Nur die relevanten Ziehpunkte an den Rändern der Begrenzungen sind sichtbar. Die Begrenzungsvisuals verkontrakten, erweitern und ändern Farbe/Stärke je nach Benutzerabsicht und Auswahlfortschritt. Es wird dringend empfohlen, diesen visuellen Stil für Begrenzungen zu verwenden.
Nur Absicht
In einigen Kontexten können Handles unerwünscht sein, und Entwickler möchten möglicherweise nur die Begrenzungsvisuals als einen ansprechenden Indikator für die Absicht des Benutzers verwenden. Während dieses Prefab die Aufgabe 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 für queezierbare Begrenzungen ein befriedigendes und ansprechendes visuelles Feedbackelement für viele verschiedene Kontexte sind, nicht nur für die handlebasierte Bearbeitung.
Legacy-Stil
Diese Begrenzungsvisuals zeigen alle Ziehpunkte und Ränder des Felds an. Dies entspricht der Legacyentwurfssprache und dem vorherigen Verhalten in MRTK 2.x. Dieses Design kann jedoch aufgrund von unnötigem visuellem Rauschen für benutzer ablenkend sein. Darüber hinaus kann das Vorhandensein der Ziehpunkte, die sich vor dem Objekt (und hinter dem Objekt) befinden, Probleme mit der indirekten Anvisieren-Pinch-Manipulation verursachen. Es wird davon abgeraten, diesen Stil für neue Anwendungen zu verwenden, insbesondere für anwendungen, die die Zielausrichtung des Anvisierens nutzen.
Interaktionsdesign
In der aktuellen Iteration bieten wir eine einfache Aktivierungs-/Deaktivierungsinteraktion an. Durch direktes Klicken auf die Begrenzungen (d. h. auswählen, nicht verschieben und loslassen) können die Ziehpunkte ein- und ausgeschaltet werden. Die Entfernungstoleranz 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 im Code aktiviert oder deaktiviert werden, indem Sie festlegen HandlesActive
.
Automatische Begrenzungsberechnung
BoundsControl versucht, die Grenzen des zugeordneten Objekts automatisch zu berechnen. Wenn eine bestimmte Begrenzungsform gewünscht wird, aktivieren Sie die OverrideBounds
Option, und geben Sie das Bounds-Objekt direkt an. Das Begrenzungsberechnungssystem berechnet nur die Begrenzungen 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 wird die Padding
Option die Begrenzungen gleichmäßig in Welteinheiten auffüllen. Wenn die Begrenzungen vereinfacht werden, wird die abgeflachte Achse nicht aufgefüllt.
Abflachung
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 trotzdem rechteckige Begrenzungen wünschen, FlattenMode.Always
wird das BoundsControl immer entlang der skinnesten Achse vereinfacht. Umgekehrt verhindert, FlattenMode.Never
dass boundsControl vereinfacht wird, auch wenn das Objekt sehr dünn ist.
Bearbeitungsoptionen
Das Manipulationsverhalten von BoundsControl kann auf verschiedene Arten angepasst werden. Die RotateAnchor
Option steuert den Pivotpunkt, um den das BoundsControl gedreht wird, wenn die Drehungsangebots verwendet werden. Die Pivotpunkte einiger Objekte sind weit von ihrem visuellen Mittelpunkt entfernt, was bei der Bearbeitung mit den Drehpunkten zu Unannehmlichkeiten und Ungenauigkeiten führen kann. Die Angabe BoundsCenter
für RotateAnchor
bewirkt, dass boundsControl immer um den geometrischen Mittelpunkt der berechneten Begrenzungen und nicht um den tatsächlichen Ursprung des Objekts gedreht wird.
Das Skalierungsverhalten kann entweder Uniform
auf oder Non Uniform
festgelegt werden. Im Modus "Uniform" werden alle Achsen des Objekts zusammen skaliert, wobei seitenverhältnis und Darstellung beibehalten werden. Bei der nicht einheitlichen Skalierung kann jede Achse des Objekts unabhängig skaliert werden.