BoundsControl - MRTK3
BoundsControl fornisce una casella di selezione di dimensioni automatica, insieme alle offerte di manipolazione per la rotazione e la scalabilità.
In MRTK 2.x, BoundsControl è stato generato principalmente dal runtime tramite l'uso di ScriptableObjects di configurazione. In MRTK3 la configurazione e la personalizzazione di BoundsControl sono state notevolmente semplificate. Gli oggetti visivi e gli handle dei limiti sono semplicemente un prefab personalizzabile che BoundsControl crea un'istanza in fase di esecuzione. Gli sviluppatori possono modificare e personalizzare i prefab degli oggetti visivi o persino creare nuovi oggetti visivi da zero. Sono disponibili implementazioni di oggetti visivi con limiti standard, seguendo la nuova Realtà mista Linguaggio di progettazione.
I nuovi oggetti visivi offrono commenti visivi semplificati che illustrano la finalità e la manipolazione dell'oggetto con rumore visivo intrusivo minimo.
Installazione
È sufficiente aggiungere BoundsControl a un oggetto esistente e popolare il BoundsVisualsPrefab
riferimento con gli oggetti visivi associati da usare. Sono disponibili alcuni oggetti visivi predefiniti diversi per l'uso.
Importante
È consigliabile che gli sviluppatori aggiungono MinMaxScaleConstraint per impedire all'utente di ridimensionare l'oggetto in modo inutilizzabile o di dimensioni elevate.
Per usare le intenzioni e gli effetti dello stato attivo degli oggetti visivi dei limiti, è necessario disporre di un StatefulInteractable
oggetto sull'oggetto. Se l'interazione non viene rilevata automaticamente, è possibile specificare la connessione nel controllo BoundsControl.
Nota
È consigliabile che gli sviluppatori usino ObjectManipulator insieme a BoundsControl per offrire agli utenti la manipolazione diretta oltre alla manipolazione basata sull'offerta. ObjectManipulator può fungere da StatefulInteractable
oggetto per lo stato attivo/passaggio del mouse indica che gli oggetti visivi dei limiti rispondono.
Prefab degli oggetti visivi dei limiti
Sono disponibili diversi oggetti visivi predefiniti per l'uso con BoundsControl. Gli sviluppatori sono invitati a creare varianti prefab di questi oggetti visivi e personalizzarli in base alle proprie esigenze. Le animazioni e gli stati di handle sono basate su StateVisualizer, consentendo agli sviluppatori di personalizzare ulteriormente l'aspetto e l'aspetto delle offerte.
Gestire lo stile di occlusione
Questi oggetti visivi delimitati offrono una progettazione visiva semplificata con un minor numero di distrazioni per l'utente. Solo i handle pertinenti lungo i bordi dei limiti saranno visibili. I limiti degli oggetti visivi, espandere e modificare il colore/spessore a seconda dello stato di avanzamento della selezione e della finalità dell'utente. È consigliabile usare questo stile visivo a limiti.
Solo intenzione
In alcuni contesti, gli handle possono essere indesiderati e gli sviluppatori possono voler usare solo gli oggetti visivi dei limiti come un indicatore delizioso dell'intenzione dell'utente. Anche se questo prefab esegue il processo, lo stesso effetto può essere ottenuto con qualsiasi altro oggetto visivo di limiti selezionando HandleType.None. Abbiamo scoperto che gli oggetti visivi squeezable sono un elemento di feedback visivo soddisfacente e delizioso per molti contesti diversi, non solo per la manipolazione basata su handle.
Stile legacy
Questi oggetti visivi delimitazioni mostrano tutti gli handle e i bordi della casella. Ciò corrisponde più strettamente al linguaggio di progettazione legacy e al comportamento precedente visto in MRTK 2.x; Tuttavia, questa progettazione può essere più distraibile per gli utenti a causa di rumore visivo non necessario. Inoltre, la presenza degli handle che si trovano davanti all'oggetto (e dietro) può causare problemi con la manipolazione dello sguardo indiretto. Non è consigliabile usare questo stile per le nuove applicazioni, soprattutto quelli che sfruttano la destinazione dello sguardo.
Progettazione delle interazioni
Nell'iterazione corrente viene offerta una semplice interazione di attivazione/disattivazione. Facendo clic sui limiti sul posto (in altre parole, selezionando l'oggetto, non spostandolo e rilasciandolo) gli handle possono essere disattivati e disattivati. La tolleranza di distanza per questo controllo può essere modificata con DragToggleThreshold
e questo comportamento di attivazione può essere abilitato/disabilitato con la ToggleHandlesOnClick
proprietà .
Gli handle possono essere attivati manualmente o disattivati dal codice in qualsiasi momento impostando HandlesActive
.
Calcolo dei limiti automatici
BoundsControl tenterà di calcolare automaticamente i limiti dell'oggetto associato. Se si desidera una forma di limiti specifica, selezionare l'opzione e specificare direttamente l'oggetto OverrideBounds
bounds. Il sistema di calcolo dei limiti calcola solo i limiti per l'oggetto override specificato.
Influenza BoundsCalculationMethod
il modo in cui l'algoritmo calcola i limiti. Se la forma visiva dell'oggetto racchiuso non corrisponde necessariamente al collider o l'opposto è true, gli sviluppatori possono modificare il metodo di calcolo per preferire il renderer o i limiti di collider o una combinazione di entrambi.
Indipendentemente dal metodo di calcolo, l'opzione Padding
riquadrirà i limiti uniformemente nelle unità mondiali. Quando i limiti vengono appiattiti, l'asse appiattito non viene riempito.
Rendere flat
BoundsControl può essere usato anche per modificare il contenuto 2D. Se FlattenMode
è impostato su Auto
, boundsControl si appiattirà su un limite rettangolare 2D se l'oggetto è sufficientemente piatto lungo qualsiasi asse. Se l'oggetto non è abbastanza piatto, ma si vuole comunque concedere limiti rettangolari, FlattenMode.Always
continuerà ad appiattire i BoundsControl lungo l'asse più skinniest. Al contrario, FlattenMode.Never
impedirà l'appiattimento di BoundsControl, anche quando l'oggetto è molto sottile.
Opzioni di manipolazione
Il comportamento di manipolazione di BoundsControl può essere modificato in diversi modi. L'opzione RotateAnchor
controlla il punto pivot intorno al quale è ruotato BoundsControl quando si usano le offerte di rotazione. Alcuni punti pivot degli oggetti sono lontano dal loro centro visivo, che può causare disagio e imprecisione durante la manipolazione con gli handle di rotazione.
BoundsCenter
Se si specifica per RotateAnchor
l'oggetto, boundsControl ruota sempre intorno al centro geometrico dei limiti calcolati anziché all'origine effettiva dell'oggetto.
Il comportamento di ridimensionamento può essere impostato su Uniform
o Non Uniform
. In modalità Uniforme tutti gli assi dell'oggetto vengono ridimensionati insieme, mantenendo le proporzioni e l'aspetto. Il ridimensionamento non uniforme consente la scalabilità indipendente di ogni asse dell'oggetto.