Gestione vincoli - MRTK2

Gestione vincoli consente di applicare un set di componenti dei vincoli a una trasformazione. I componenti di tipo TransformConstraint collegati all'oggetto gioco possono essere presi in considerazione. Per impostazione predefinita, gestione vincoli raccoglie automaticamente tutti i componenti dei vincoli collegati all'oggetto game e li applica alle trasformazioni elaborate. Tuttavia, gli utenti possono scegliere di configurare manualmente l'elenco di vincoli applicati e consentire l'applicazione di un subset di vincoli collegati.

Attualmente gli elementi UX MRTK seguenti supportano la gestione vincoli:

Proprietà e campi di controllo

Gestione vincoli può essere gestita in due modalità:

  • Selezione automatica dei vincoli
  • Selezione dei vincoli manuali

Selezione automatica dei vincoli

Auto Selection

La modalità predefinita di gestione vincoli, la selezione automatica dei vincoli, fornirà un elenco di tutti i componenti dei vincoli collegati, nonché passare ai pulsanti e a un pulsante aggiungi vincolo.

Aggiungere un vincolo all'oggetto game

Questo pulsante consente di aggiungere un componente vincolo direttamente dal controllo gestione vincoli. Tutti i tipi di vincolo in un progetto devono essere visibili qui. Per altre informazioni, vedere Vincoli di trasformazione .

Passare al componente

Tutti i vincoli trovati nell'oggetto verranno elencati qui con un pulsante Vai al componente . Questo pulsante causerà lo scorrimento del controllo al componente del vincolo selezionato in modo che possa essere configurato.

Selezione dei vincoli manuali

Manual Selection

Se gestione vincoli è impostato sulla modalità manuale, vengono elaborati e applicati alla trasformazione solo i vincoli collegati nell'elenco dei vincoli. L'elenco visualizzato mostrerà solo i vincoli selezionati dall'utente, nonché passare a pulsanti o opzioni per rimuovere o aggiungere voci. Quando si abilita la modalità manuale per la prima volta, gestione vincoli popola l'elenco tutti i componenti disponibili come punto di partenza per selezionare i componenti dei vincoli collegati.

Rimuovere la voce

In questo modo la voce viene rimossa dall'elenco selezionato manualmente. Si noti che questa opzione non rimuoverà il componente del vincolo dall'oggetto game. I componenti dei vincoli devono sempre essere rimossi manualmente per assicurarsi di non interrompere accidentalmente qualsiasi altro componente che fa riferimento a questo componente.

Aggiungi voce

Aggiungi voce aprirà un elenco a discesa che mostra tutti i componenti dei vincoli disponibili che non sono ancora presenti nell'elenco manuale. Facendo clic su una delle voci che il componente verrà aggiunto alla selezione manuale dei vincoli.

Aggiungere un nuovo vincolo

Questa opzione aggiungerà un componente del tipo selezionato all'oggetto game e aggiungerà il componente del vincolo appena creato all'elenco dei vincoli manuali.

Vincoli di trasformazione

I vincoli possono essere usati per limitare la manipolazione in qualche modo. Ad esempio, alcune applicazioni possono richiedere la rotazione, ma richiedono anche che l'oggetto rimanga in alto. In questo caso, un oggetto RotationAxisConstraint può essere aggiunto all'oggetto e usato per limitare la rotazione all'asse y. MRTK fornisce un numero di vincoli, tutti descritti di seguito.

È anche possibile definire nuovi vincoli e usarli per creare comportamenti di manipolazione univoci che potrebbero essere necessari per alcune applicazioni. A tale scopo, creare uno script che eredita da TransformConstraint e implementare la proprietà astratta ConstraintType e il metodo astratta ApplyConstraint . Dopo aver aggiunto un nuovo vincolo all'oggetto, deve limitare la manipolazione nel modo definito. Questo nuovo vincolo deve essere visualizzato anche nella selezione automatica del gestore vincoli o aggiungere l'elenco a discesa voce in modalità manuale.

Tutti i vincoli forniti da MRTK condividono le proprietà seguenti:

Tipo di mano

Specifica se il vincolo viene usato per una mano, due mani o entrambi i tipi di manipolazione. Poiché questa proprietà è un flag, è possibile selezionare entrambe le opzioni.

  • Una mano: il vincolo verrà usato durante una manipolazione mano se selezionata.
  • Due mani: il vincolo verrà usato durante la manipolazione a due mani se selezionato.

Tipo di prossimità

Specifica se il vincolo viene usato per una manipolazione vicina, lontana o entrambi i tipi. Poiché questa proprietà è un flag, è possibile selezionare entrambe le opzioni.

  • Vicino: il vincolo verrà usato durante la modifica quasi se selezionata.
  • Far: il vincolo verrà usato durante la manipolazione lontana se selezionato.

FaceUserConstraint

Constraint Face User

Quando questo vincolo è collegato a un oggetto, la rotazione sarà limitata in modo che l'oggetto faccia sempre l'utente. Questo è utile per le late o i pannelli. Le proprietà per FaceUserConstraint sono le seguenti:

Viso lontano

L'oggetto si trova lontano dall'utente se true.

FixedDistanceConstraint

Constraint Fixed distances

Questo vincolo corregge la distanza tra l'oggetto modificato e un'altra trasformazione dell'oggetto all'inizio della manipolazione. Ciò è utile per il comportamento, ad esempio la correzione della distanza dall'oggetto manipolato alla trasformazione head. Le proprietà per FixedDistanceConstraint sono le seguenti:

Trasformazione vincolo

Si tratta dell'altra trasformazione a cui l'oggetto modificato avrà una distanza fissa. Impostazione predefinita per la trasformazione della fotocamera.

FixedRotationToUserConstraint

Fixed Rotation

Questo vincolo corregge la rotazione relativa tra l'utente e l'oggetto modificato durante la modifica. Ciò è utile per i pannelli o le liste in quanto garantisce che l'oggetto manipolato mostri sempre la stessa faccia all'utente come ha fatto all'inizio della manipolazione. L'oggetto FixedRotationToUserConstraint non ha proprietà univoce.

FixedRotationToWorldConstraint

Fixed rotation to the world

Questo vincolo corregge la rotazione globale dell'oggetto modificato durante la modifica. Questo può essere utile nei casi in cui nessuna rotazione deve essere impartita dalla manipolazione. L'oggetto FixedRotationToWorldConstraint non ha proprietà univoce:

MaintainApparentSizeConstraint

Maintain Apparent size

Quando questo vincolo è collegato a un oggetto, indipendentemente dalla distanza dell'oggetto dall'utente, manterrà le stesse dimensioni apparenti dell'utente, ovvero richiederà la stessa proporzione del campo di visualizzazione dell'utente. Questa operazione può essere usata per garantire che un pannello di testo o un pannello di testo rimanga leggibile durante la modifica. L'oggetto MaintainApparentSizeConstraint non ha proprietà univoce:

MoveAxisConstraint

Constraint Move Axis

Questo vincolo può essere usato per correggere gli assi che possono essere spostati da un oggetto modificato. Ciò può essere utile per modificare gli oggetti sulla superficie di un piano o lungo una linea. Le proprietà per MoveAxisConstraint sono le seguenti:

Vincolo sullo spostamento

Specifica quali assi impedire lo spostamento. Per impostazione predefinita, questi assi saranno globali anziché locali, ma questo può essere modificato di seguito. Poiché questa proprietà è un flag, è possibile selezionare qualsiasi numero di opzioni.

  • Asse X: lo spostamento lungo l'asse x è vincolato se selezionato.
  • Asse Y: lo spostamento lungo l'asse y è vincolato se selezionato.
  • Asse Z: lo spostamento lungo l'asse z è vincolato se selezionato.

Usare lo spazio locale per il vincolo

Vincola gli assi di trasformazione locale dell'oggetto manipolato se true. False per impostazione predefinita.

RotationAxisConstraint

Constraint Rotation Axis

Questo vincolo può essere usato per correggere gli assi che possono essere ruotati da un oggetto modificato. Ciò può essere utile per mantenere un oggetto manipolato in verticale, ma consente comunque rotazioni dell'asse y, ad esempio. Le proprietà per RotationAxisConstraint sono le seguenti:

Vincolo sulla rotazione

Specifica gli assi da evitare la rotazione. Per impostazione predefinita, questi assi saranno globali anziché locali, ma è possibile modificarli di seguito. Poiché questa proprietà è un flag, è possibile selezionare un numero qualsiasi di opzioni.

  • Asse Y: la rotazione sull'asse y è vincolata se selezionata.
  • Asse Z: la rotazione sull'asse z è vincolata se selezionata.
  • Asse X: la rotazione sull'asse x è vincolata se selezionata.

Usare lo spazio locale per il vincolo

Vincola gli assi di trasformazione locale dell'oggetto manipolato se true. False per impostazione predefinita.

MinMaxScaleConstraint

Min Max Constatint

Questo vincolo consente di impostare i valori minimo e massimo per la scala dell'oggetto modificato. Ciò è utile per impedire agli utenti di ridimensionare un oggetto troppo piccolo o troppo grande. Le proprietà per MinMaxScaleConstraint sono le seguenti:

Scala minima

Valore minimo della scala durante la manipolazione.

Scala massima

Valore di scala massimo durante la manipolazione.

Rispetto allo stato iniziale

Se true, i valori precedenti verranno interpretati come relativi alla scala iniziale degli oggetti. In caso contrario, verranno interpretati come valori di scala assoluta.