Manipolatore oggetto - MRTK2

Manipolatore oggetti

ObjectManipulator è il nuovo componente per il comportamento di manipolazione, trovato in precedenza in ManipulationHandler. Il manipolatore dell'oggetto apporta numerosi miglioramenti e semplificazioni. Questo componente è una sostituzione del gestore di manipolazione, che verrà deprecato.

Lo script ObjectManipulator rende un oggetto rimovibile, scalabile e ruotabile usando una o due mani. Il manipolatore di oggetti può essere configurato per controllare come l'oggetto risponderà a vari input. Lo script deve funzionare con la maggior parte delle forme di interazione, ad esempio HoloLens 2 mano articolata, HoloLens 2 raggi di mano, HoloLens 1 sguardo e movimenti e input del controller di movimento visore immersivo.

Come usare il manipolatore dell'oggetto

Per usare il manipolatore dell'oggetto, aggiungere prima il ObjectManipulator componente script a un GameObject. Assicurarsi di aggiungere anche un collider all'oggetto, che corrisponde ai relativi limiti afferrabili.

Per rendere l'oggetto risponde all'input a mano quasi articolato, aggiungere anche lo NearInteractionGrabbable script.

Il comportamento fisico può essere abilitato per il manipolatore dell'oggetto aggiungendo un componente rigidbody all'oggetto. Il comportamento fisico abilitato aggiungendo questo componente viene descritto in modo più dettagliato in Fisica e collisioni.

Inoltre, la manipolazione può essere vincolata aggiungendo componenti dei vincoli di manipolazione all'oggetto. Questi sono componenti speciali che funzionano con la manipolazione e modificano il comportamento di manipolazione in qualche modo.

Uso del gestore di manipolazione nell'editor di Unity

Proprietà e campi di controllo

Struttura del manipolatore oggetto

Proprietà generali

Trasformazione host

Trasformazione dell'oggetto che verrà modificata. Impostazione predefinita per l'oggetto del componente.

Tipo di manipolazione

Specifica se l'oggetto può essere modificato usando una mano o due mani. Poiché questa proprietà è un flag, è possibile selezionare entrambe le opzioni.

  • Una mano: abilita la manipolazione di una mano se selezionata.
  • Due mani: abilita la manipolazione a due mani se selezionata.

Consenti manipolazione lontano

Specifica se la manipolazione può essere eseguita usando l'interazione di gran lunga con i puntatori.

Proprietà di manipolazione di una mano

Una modalità di rotazione della mano vicino

Specifica il comportamento dell'oggetto quando viene afferrato con una mano. Queste opzioni funzionano solo per le mani articolate.

  • Ruotare sul centro oggetti: l'oggetto ruota usando la rotazione della mano, ma sul punto centrale dell'oggetto. L'oggetto apparirà spostarsi meno quando ruota, ma potrebbe verificarsi una sensazione di disconnessione tra la mano e l'oggetto. Più utile per l'interazione di gran lunga.
  • Ruotare il punto di afferramento: ruotare l'oggetto con la mano sul punto di afferramento tra il pollice e il dito dell'indice. Dovrebbe sentirsi come se l'oggetto è tenuto dalla mano.

Una modalità di rotazione delle mani lontano

Specifica il comportamento dell'oggetto quando viene afferrato con una mano a distanza. Queste opzioni funzionano solo per le mani articolate.

  • Ruotare il centro oggetti: ruotare l'oggetto usando la rotazione della mano, ma sul punto centrale dell'oggetto. Utile per l'ispezione a distanza senza lo spostamento del centro oggetti quando l'oggetto ruota.
  • Ruotare il punto di afferramento: ruotare l'oggetto usando la rotazione della mano, ma circa il punto di hit point del puntatore. Utile per l'ispezione.

Proprietà di manipolazione a due mani

Tipo di manipolazione a due mani

Specifica la modalità di trasformazione di due mani di un oggetto. Poiché questa proprietà è un flag, è possibile selezionare qualsiasi numero di opzioni.

  • Sposta: lo spostamento è consentito se selezionato.
  • Scalabilità: il ridimensionamento è consentito se selezionato.
  • Ruota: la rotazione è consentita se selezionata.

Gestore manipolazione

Vincoli

Abilitare i vincoli

Questa impostazione abilita la gestione vincoli collegato. Le modifiche di trasformazione verranno elaborate dai vincoli registrati nella gestione vincoli selezionati.

Gestione vincoli

L'elenco a discesa consente di selezionare una delle gestioni vincoli associate. Il manipolatore di oggetti garantisce che sia associato un gestore vincoli in ogni momento. Si noti che più componenti dello stesso tipo verranno visualizzati con lo stesso nome in unity. Per semplificare la distinzione tra più gestioni vincoli nello stesso oggetto, le opzioni disponibili mostreranno un hint sulla configurazione della gestione vincoli selezionata (selezione manuale o automatica dei vincoli).

Passare al componente

La selezione del gestore vincoli include un pulsante Vai al componente . Questo pulsante causerà lo scorrimento del controllo sul componente selezionato in modo che possa essere configurato.

Fisica

Le impostazioni in questa sezione vengono visualizzate solo quando l'oggetto ha un componente RigidBody.

Comportamento della versione

Specificare le proprietà fisiche che un oggetto modificato deve mantenere al rilascio. Poiché questa proprietà è un flag, è possibile selezionare entrambe le opzioni.

  • Mantieni velocità: quando l'oggetto viene rilasciato, se questa opzione è selezionata manterrà la velocità lineare.
  • Mantieni Angular Velocità: quando l'oggetto viene rilasciato, se questa opzione è selezionata mantiene la velocità angolare.

Usare le forze per la manipolazione quasi

Se le forze fisiche vengono usate per spostare l'oggetto durante l'esecuzione di manipolazioni vicine. L'impostazione di questa opzione su false rende l'oggetto più direttamente connesso alla mano degli utenti. Impostando questo su true si onorerà la massa e l'inerzia dell'oggetto, ma potrebbe sembrare come se l'oggetto sia connesso attraverso una primavera. Il valore predefinito è false.

Definizione di movimenti uniformi

Smoothing lontano

Se il smoothing indipendente della frequenza di fotogrammi è abilitato per le interazioni lontane. Per impostazione predefinita, il smoothing è abilitato per impostazione predefinita.

Smoothing vicino

Se il smoothing indipendente a frequenza di fotogrammi è abilitato per le interazioni vicino. Per impostazione predefinita, l'effetto può essere percepito come "disconnesso" dalla mano.

Smoothing attivo

Obsoleto e verrà rimosso in una versione futura. Le applicazioni devono usare SmoothingFar, SmoothingNear o una combinazione dei due.

Spostare il tempo di lerp

Quantità di smoothing da applicare al movimento. L'smoothing di 0 significa che non si liscia. Il valore massimo non indica alcuna modifica al valore.

Ruotare il tempo di lerp

Quantità di smoothing da applicare alla rotazione. L'smoothing di 0 significa che non si liscia. Il valore massimo non indica alcuna modifica al valore.

Ridimensionare il tempo di lerp

Quantità di smoothing da applicare alla scala. L'smoothing di 0 significa che non si liscia. Il valore massimo non indica alcuna modifica al valore.

Eventi di manipolazione

Il gestore di manipolazione fornisce gli eventi seguenti:

  • OnManipulationStarted: attivato all'avvio della manipolazione.
  • OnManipulationEnded: genera quando termina la manipolazione.
  • OnHoverStarted: viene generato quando un mano/controller passa il puntatore del mouse sul manipolabile, vicino o lontano.
  • OnHoverEnded: viene generato quando un controller/mano non passa il puntatore del mouse sul manipolabile, vicino o lontano.

L'ordine di incendio dell'evento per la manipolazione è:

OnHoverStarted -OnManipulationStarted -OnManipulationEnded ->>>OnHoverEnded

Se non è presente alcuna manipolazione, si otterranno comunque eventi del puntatore del mouse con l'ordine di fuoco seguente:

OnHoverStarted ->OnHoverEnded

Fisica e collisioni

Il comportamento fisico può essere abilitato aggiungendo un componente rigidbody allo stesso oggetto di un manipolatore di oggetti. Non solo questa abilita la configurazione del comportamento di rilascio precedente, abilita anche le collisioni. Senza un componente rigido, le collisioni non si comportano correttamente durante la manipolazione:

  • Le collisioni tra un oggetto manipolato e un collider statico (ad esempio un oggetto con un collisore ma nessuna rigida) non funzionano, l'oggetto manipolato passa direttamente attraverso il collider statico non interessato.
  • Le collisioni tra un oggetto manipolato e un corpo rigido (ovvero un oggetto con un collider e un corpo rigido) causano una risposta di collisione, ma la risposta è saltata e innaturale. Non esiste anche alcuna risposta di collisione sull'oggetto manipolato.

Quando viene aggiunto un corpo rigido, le collisioni devono funzionare correttamente.

Senza rigido

Nessun corpo rigido

Con un corpo rigido

Corpo rigido

Elastici (sperimentale)

Gli elastici possono essere usati quando si modificano gli oggetti tramite il manipolatore di oggetti. Si noti che il sistema elastico è ancora in stato sperimentale. Per abilitare elastici collegare un componente di gestione elastici esistente o creare e collegare un nuovo gestore elastici tramite il Add Elastics Manager pulsante.

Controllo limiti elastici

Vedi anche