BoundsControl — MRTK3

Besturingselement Voor grenzen

BoundsControl biedt een begrenzingsvak met automatische grootte, samen met manipulatiemogelijkheden voor draaien en schalen.

In MRTK 2.x werd BoundsControl voornamelijk door runtime gegenereerd door het gebruik van configuratieScriptableObjects. In MRTK3 is het instellen en aanpassen van BoundsControl aanzienlijk vereenvoudigd. De visuals en ingangen voor grenzen zijn eenvoudigweg een aanpasbare prefab die Door BoundsControl tijdens runtime wordt geïnstitueert. Ontwikkelaars kunnen de visuals prefab aanpassen en aanpassen, of zelfs nieuwe grenzen maken. We bieden implementaties van standard bounds-visuals volgens de nieuwe Mixed Reality Design Language.

De nieuwe visuals bieden gestroomlijnde visuele feedback die de intentie en manipulatie van het object door de gebruiker illustreert met minimaal opdringerige visuele ruis.

Instellen

Voeg Gewoon BoundsControl toe aan een bestaand object en vul de BoundsVisualsPrefab verwijzing in met de visuals voor grenzen die u wilt gebruiken. We bieden een aantal verschillende vooraf gemaakte grenzenvisuals die u kunt gebruiken.

Belangrijk

Het wordt ten zeerste aangeraden dat ontwikkelaars MinMaxScaleConstraint toevoegen om te voorkomen dat de gebruiker het object schaalt naar een onherstelbaar kleine of grote grootte.

Als u de intentie- en focuseffecten van de visuals voor grenzen wilt gebruiken, moet u een StatefulInteractable op het object hebben. Als de interactiebare niet automatisch wordt gedetecteerd, kunt u de verbinding opgeven in de inspector BoundsControl.

Notitie

We raden ontwikkelaars aan objectmanipulator naast BoundsControl te gebruiken om gebruikers directe manipulatie te bieden naast de op betaalbaarheid gebaseerde manipulatie. ObjectManipulator kan fungeren als de StatefulInteractable voor de aanwijs-/focusstatussen waarop de grenzen van visuals reageren.

Prefabs voor visuals voor grenzen

We bieden verschillende vooraf gebouwde visuals voor grenzen voor gebruik met BoundsControl. Ontwikkelaars worden aangemoedigd om prefabvarianten van deze visuals te maken en deze aan te passen aan hun behoeften. De handgreepanimaties en statussen worden mogelijk gemaakt door StateVisualizer, zodat ontwikkelaars het uiterlijk van de betaalbaarheid verder kunnen aanpassen.

Occlusiestijl verwerken

Deze grenzenvisuals bieden een vereenvoudigd visueel ontwerp met minder afleidingen voor de gebruiker. Alleen de relevante grepen langs de randen van de grenzen zijn zichtbaar. De grenzen van visuals worden samengebonden, uitgebreid en de kleur/dikte wordt gewijzigd, afhankelijk van de intentie van de gebruiker en de voortgang van de selectie. U wordt ten zeerste aangeraden deze visualstijl voor grenzen te gebruiken.

Occluded ingangen

Alleen intentie

In sommige contexten kunnen ingangen ongewenst zijn en willen ontwikkelaars mogelijk alleen de visuals voor grenzen gebruiken als een goede indicator van de intentie van de gebruiker. Hoewel deze prefab de taak doet, kan hetzelfde effect worden bereikt met een van de andere begrenzingsvisuals door HandleType.None te selecteren. We hebben vastgesteld dat de visuele knijpbare grenzen een bevredigend en prettig visueel feedback-element zijn voor veel verschillende contexten, niet alleen voor manipulatie op basis van grepen.

Geen grepen

Verouderde stijl

In deze visuals voor grenzen worden alle grepen en randen van het vak weergegeven. Dit komt meer overeen met de verouderde ontwerptaal en het vorige gedrag in MRTK 2.x; Dit ontwerp kan echter leidender zijn voor gebruikers vanwege onnodige visuele ruis. Bovendien kan de aanwezigheid van de handgrepen die zich voor het object (en achter) bevinden, problemen veroorzaken met de indirecte manipulatie van staren en knijpen. We raden u aan deze stijl niet te gebruiken voor nieuwe toepassingen, met name voor toepassingen die profiteren van staren gerichtheid.

Traditionele grepen

Interactieontwerp

In de huidige iteratie bieden we een eenvoudige activerings-/deactiveringsinteractie. Door op de grenzen te klikken (met andere woorden, het object te selecteren, niet te verplaatsen en los te laten), kunnen de grepen worden in- en uitgeschakeld. De afstandstolerantie voor deze controle kan worden aangepast met DragToggleThreshold, en dit activeringsgedrag zelf kan worden ingeschakeld/uitgeschakeld met de ToggleHandlesOnClick eigenschap .

Wisselknop voor besturingselement Voor grenzen

De ingangen kunnen op elk gewenst moment handmatig worden geactiveerd of gedeactiveerd vanuit code door in te stellen HandlesActive.

Automatische berekening van grenzen

BoundsControl probeert automatisch de grenzen van het gekoppelde object te berekenen. Als een specifieke shape voor grenzen gewenst is, schakelt u de OverrideBounds optie in en geeft u het object bounds rechtstreeks op. Het berekeningssysteem voor grenzen berekent alleen de grenzen voor het opgegeven onderdrukkingsobject.

De BoundsCalculationMethod beïnvloedt hoe het algoritme grenzen berekent. Als de visuele vorm van het ingesloten object niet noodzakelijkerwijs overeenkomt met de collider, of als het tegenovergestelde waar is, kunnen ontwikkelaars de berekeningsmethode aanpassen om de voorkeur te geven aan het gebruik van renderer- of collidergrenzen of een combinatie van beide.

Ongeacht de berekeningsmethode, worden met de Padding optie de grenzen uniform in wereldeenheden opvulling gegeven. Wanneer de grenzen zijn afgevlakt, wordt de afgevlakte as niet opgevuld.

Afvlakken

Platgemaakte grenzenBesturingselement

BoundsControl kan ook worden gebruikt voor het bewerken van 2D-inhoud. Als FlattenMode is ingesteld op Auto, wordt het BoundsControl afgevlakt tot een rechthoekige 2D-grenzen als het object voldoende vlak langs een as is. Als het object niet helemaal vlak genoeg is, maar u nog steeds rechthoekige grenzen wilt, FlattenMode.Always wordt de BoundsControl altijd langs de meest magere as afgevlakt. Omgekeerd FlattenMode.Never voorkomt u dat de BoundsControl wordt afgevlakt, zelfs wanneer het object erg dun is.

Bewerkingsopties

Het manipulatiegedrag van BoundsControl kan op verschillende manieren worden aangepast. De RotateAnchor optie bepaalt het draaipunt waaromheen het BoundsControl wordt gedraaid bij het gebruik van de rotatiemogelijkheden. De draaipunten van sommige objecten bevinden zich ver van het visuele midden, wat ongemak en onnauwkeurigheid kan veroorzaken bij het bewerken met de draaigrepen. Als BoundsCenter u opgeeft voor de RotateAnchor , wordt het besturingselement Bounds altijd rond het geometrische midden van de berekende grenzen gedraaid in plaats van de werkelijke oorsprong van het object.

Schaalgedrag kan worden ingesteld op Uniform of Non Uniform. In de modus Uniform worden alle assen van het object samen geschaald, waarbij de hoogte-breedteverhouding en het uiterlijk behouden blijven. Met niet-uniforme schaalaanpassing kan elke as van het object onafhankelijk worden geschaald.