Gestione vincoli - MRTK2

La gestione vincoli consente di applicare un set di componenti di vincolo a una trasformazione. I componenti di tipo TransformConstraint associati all'oggetto gioco possono essere presi in considerazione. Per impostazione predefinita, gestione vincoli raccoglie automaticamente tutti i componenti di vincolo associati all'oggetto gioco 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 solo subset di vincoli associati.

Attualmente gli elementi dell'esperienza utente MRTK seguenti supportano il gestore dei vincoli:

Proprietà e campi di controllo

Gestione vincoli può essere gestito in due modalità:

  • Selezione automatica dei vincoli
  • Selezione manuale dei vincoli

Selezione automatica dei vincoli

Selezione automatica

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

Aggiungere un vincolo all'oggetto gioco

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 , vedi Vincoli di trasformazione .

Vai al componente

Tutti i vincoli trovati nell'oggetto verranno elencati qui con un pulsante Vai al componente . Questo pulsante farà in modo che il controllo scorrono fino al componente vincolo selezionato in modo che possa essere configurato.

Selezione manuale dei vincoli

Selezione manuale

Se gestione vincoli è impostato sulla modalità manuale, vengono elaborati e applicati alla trasformazione solo i vincoli collegati nell'elenco di vincoli. L'elenco visualizzato mostrerà solo i vincoli selezionati dall'utente, nonché i pulsanti o le 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 la selezione dei componenti dei vincoli associati.

Rimuovi voce

In questo modo la voce viene rimossa dall'elenco selezionato manualmente. Si noti che questa opzione non rimuoverà il componente vincolo dall'oggetto gioco. I componenti di vincolo devono essere sempre rimossi manualmente per evitare di 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 gioco e aggiungerà il componente vincolo appena creato all'elenco di vincoli manuali.

Vincoli di trasformazione

I vincoli possono essere usati per limitare in qualche modo la manipolazione. Ad esempio, alcune applicazioni possono richiedere la rotazione, ma richiedono anche che l'oggetto rimanga in posizione verticale. In questo caso, un RotationAxisConstraint oggetto può essere aggiunto all'oggetto e usato per limitare la rotazione alla rotazione dell'asse y. MRTK fornisce una serie 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 implementa la proprietà astratta ConstraintType e il metodo astratto ApplyConstraint . Quando si aggiunge un nuovo vincolo all'oggetto, è necessario vincolare la manipolazione nel modo definito. Questo nuovo vincolo deve essere visualizzato anche nella selezione automatica di Gestione vincoli o nell'elenco a discesa aggiungi voce in modalità manuale.

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

Tipo di mano

Specifica se il vincolo viene utilizzato 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 la manipolazione di una mano, se selezionata.
  • Due mani: il vincolo verrà usato durante la manipolazione di due mani, se selezionato.

Tipo di prossimità

Specifica se il vincolo viene utilizzato per la manipolazione da vicino, lontano o per entrambi i tipi. Poiché questa proprietà è un flag, è possibile selezionare entrambe le opzioni.

  • Near: il vincolo verrà usato durante la manipolazione vicina, se selezionato.
  • Far: il vincolo verrà usato durante la manipolazione da lontano, se selezionato.

FaceUserConstraint

Utente del viso del vincolo

Quando questo vincolo è associato a un oggetto, la rotazione sarà limitata in modo che l'oggetto faccia sempre fronte all'utente. Questa opzione è utile per le laghe o i pannelli. Le proprietà per FaceUserConstraint sono le seguenti:

Faccia lontano

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

FixedDistanceConstraint

Distanze fisse dei vincoli

Questo vincolo corregge la distanza tra l'oggetto manipolato e un'altra trasformazione 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 manipolato avrà una distanza fissa. Il valore predefinito è la trasformazione della fotocamera.

FixedRotationToUserConstraint

Rotazione fissa

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

FixedRotationToWorldConstraint

Rotazione fissa al mondo

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

MaintainApparentSizeConstraint

Mantenere le dimensioni apparenti

Quando questo vincolo viene associato a un oggetto, indipendentemente dalla distanza dell'oggetto dall'utente, manterrà le stesse dimensioni apparenti per l'utente( ad esempio, occupa la stessa proporzione del campo di visualizzazione dell'utente). Ciò può essere usato per garantire che uno slate o un pannello di testo rimanga leggibile durante la modifica. L'oggetto MaintainApparentSizeConstraint non dispone di proprietà univoce:

MoveAxisConstraint

Asse di spostamento dei vincoli

Questo vincolo può essere utilizzato per correggere gli assi in cui è possibile spostare 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 per lo spostamento

Specifica gli assi su cui impedire lo spostamento. 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 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

Asse di rotazione dei vincoli

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 quali assi impedire la rotazione. 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 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 valori minimi e massimi per la scala dell'oggetto modificato. Questo è 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.

Scalabilità massima

Valore massimo della scala 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.