Puntamento e commit con le mani
Puntamento e commit con le mani è un modello di input che consente agli utenti di puntare come destinazione, selezionare e manipolare contenuto 2D e 3D fuori portata. Questa tecnica di interazione "da lontano" è specifica della realtà mista perché le persone interagiscono naturalmente con il mondo reale in modo diverso. Ad esempio, nel film di supereroi X-Men il personaggio Magneto è in grado di manipolare oggetti lontani a distanza con le sue mani. Questa non è un'azione che gli esseri umani possono compiere nella realtà. Sia in HoloLens (AR) che in Mixed Reality (MR) gli utenti vengono dotati della magica capacità di superare le barriere fisiche imposte dal mondo reale. Si tratta non solo di un'esperienza olografica divertente, ma anche di uno scenario che rende le interazioni utente più efficaci ed efficienti.
Supporto di dispositivi
Modello di input | HoloLens (prima generazione) | HoloLens 2 | Visori VR immersive |
Puntamento e commit con le mani | ❌ Non supportato | ✔️ Consigliata | ✔️ Consigliata |
"Puntamento e commit con le mani" è una delle nuove funzionalità che si avvale dell'innovativo e articolato sistema di tracciamento delle mani. Questo modello di input è anche quello principalmente usato nei visori VR immersive mediante controller del movimento.
Raggi della mano
In HoloLens 2 abbiamo creato un raggio della mano che viene lanciato dal centro del palmo della mano dell'utente. Questo raggio viene considerato come un'estensione della mano. All'estremità del raggio viene visualizzato un cursore ad anello che indica il punto in cui il raggio interseca un oggetto di destinazione. L'oggetto su cui si posa il cursore può quindi ricevere i comandi gestuali dalla mano.
Tale comando gestuale di base viene attivato usando il pollice e l'indice per eseguire l'azione di simulazione del tocco. Usando il raggio della mano per il puntamento e la simulazione del tocco per il commit, gli utenti possono attivare un pulsante o un collegamento ipertestuale. Con movimenti più compositi, gli utenti possono spostarsi nel contenuto Web e manipolare oggetti 3D a distanza. La progettazione visiva del raggio mano dovrebbe anche reagire a questi stati di puntamento e commit come descritto e mostrato di seguito:
Stato di puntamento
Nello stato di puntamento il raggio è una linea tratteggiata e il cursore ha una forma ad anello.
Stato di commit
Nello stato di commit il raggio diventa una linea continua e il cursore si rimpicciolisce diventando un punto.
Transizione dall'interazione da vicino all'interazione da lontano
Invece di usare movimenti specifici come il "puntamento con il dito indice" per indirizzare il raggio, quest'ultimo è stato progettato in modo da uscire dal centro del palmo della mano degli utenti. In questo modo, le cinque dita sono state lasciate libere per eseguire movimenti più finalizzati alla manipolazione, ad esempio l'avvicinamento delle dita e la cattura. Grazie a tale progettazione, viene creato un unico modello mentale che usa esattamente la stessa serie di movimenti della mano per l'interazione da vicino e da lontano. Puoi usare lo stesso movimento di cattura per manipolare oggetti a distanze diverse. I raggi vengono richiamati automaticamente in base alla prossimità, come indicato di seguito:
Manipolazione da vicino
Se un oggetto è a portata di braccio (a una distanza di circa 50 cm), i raggi vengono disattivati automaticamente, incoraggiando l'uso dell'interazione da vicino.
Manipolazione da lontano
Se l'oggetto si trova a una distanza superiore a 50 cm, i raggi vengono attivati. La transizione deve avvenire fluidamente e senza problemi.
Interazione con uno slate 2D
Uno slate 2D è un contenitore olografico che ospita contenuti di app 2D, ad esempio un Web browser. Il concetto di progettazione per l'interazione da lontano con uno slate 2D prevede l'uso dei raggi mano per puntare una destinazione e della simulazione del tocco per effettuare la selezione. Dopo aver individuato la destinazione con un raggio mano, gli utenti possono simulare il tocco per attivare un collegamento ipertestuale o un pulsante. Possono usare una mano per "simulare il tocco e trascinare" in modo da scorrere verso l'alto e verso il basso il contenuto dello slate. Il movimento relativo associato all'uso di due mani per simulare il tocco e trascinare può causare lo zoom avanti e lo zoom indietro sul contenuto dello slate.
Puntando il raggio mano sugli angoli e sui bordi, è possibile vedere l'invito di manipolazione più vicino. "Afferrando e trascinando" gli inviti di manipolazione, gli utenti possono eseguire un ridimensionamento uniforme tramite gli inviti degli angoli, nonché adattare automaticamente il contenuto dello slate tramite gli inviti dei bordi. Afferrando e trascinando la barra dell'ologramma nella parte superiore dello slate 2D, gli utenti possono spostare l'intero slate.
Clic
Scorrimento
Zoom
Per la manipolazione dello slate 2D
- Gli utenti puntano il raggio mano sugli angoli o sui bordi per vedere l'invito di manipolazione più vicino.
- Applicando un movimento di manipolazione all'invito, gli utenti possono eseguire un ridimensionamento uniforme tramite l'invito degli angoli, nonché adattare automaticamente il contenuto dello slate mediante l'invito dei bordi.
- Applicando un movimento di manipolazione alla barra dell'ologramma nella parte superiore dello slate 2D, gli utenti possono spostare l'intero slate.
Manipolazione di oggetti 3D
Nella manipolazione diretta gli utenti possono manipolare gli oggetti 3D in due modi, ovvero con manipolazione basata sugli inviti e non basata sugli inviti. Nel modello puntamento e commit gli utenti possono eseguire esattamente le stesse attività mediante i raggi delle mani. Non è necessario apprendere altre modalità.
Manipolazione basata sugli inviti
Gli utenti usano i raggi mano per puntare e vedere il cubo di delimitazione e gli inviti di manipolazione. Gli utenti possono applicare il movimento di manipolazione al cubo di delimitazione per spostare l'intero oggetto, agli inviti dei bordi per ruotare e agli inviti degli angoli per ridimensionare in modo uniforme.
Sposta
Rotazione
Ridimensiona
Manipolazione non basata sugli inviti
Gli utenti puntano con i raggi mano per vedere il cubo di delimitazione e quindi vi applicano direttamente i movimenti di manipolazione. Con una mano, la traslazione e la rotazione dell'oggetto sono associati al movimento e all'orientamento della mano. Con due mani, gli utenti possono spostarlo, ridimensionarlo e ruotarlo in base ai movimenti relativi delle mani.
Movimenti istintivi
Il concetto di movimenti istintivi per puntamento e commit è analogo a quello per la manipolazione diretta con le mani. I movimenti che gli utenti eseguono su un oggetto 3D dipendono dalla progettazione degli inviti dell'interfaccia utente. Ad esempio, in presenza di un punto di controllo di piccole dimensioni gli utenti sono portati a usare il pollice e l'indice (ovvero ad avvicinare le dita), mentre davanti a un oggetto più grande possono decidere di afferrarlo usando tutte e cinque le dita.
Oggetto piccolo
Oggetto medio
Oggetto grande
Progettazione simmetrica tra le due mani e controller 6DoF
Il concetto di puntamento e commit per l'interazione da lontano è stato creato e definito per il Portale realtà mista (MRP). In questo scenario l'utente usa un visore VR immersive e interagisce con gli oggetti 3D tramite controller del movimento. Tali controller emettono raggi per il puntamento e la manipolazione degli oggetti lontani. Sui controller sono presenti pulsanti che consentono di eseguire ulteriormente il commit di azioni diverse. Viene applicato il modello di interazione dei raggi, che vengono collegati a entrambe le mani. Grazie a questa progettazione simmetrica, gli utenti abituati a operare con il Portale realtà mista non dovranno apprendere un altro modello di interazione per il puntamento e la manipolazione da lontano quando usano HoloLens 2 e viceversa.
Raggi del controller
Raggi della mano
Raggio della mano in MRTK (Mixed Reality Toolkit) per Unity
Per impostazione predefinita, MRTK fornisce un file prefab relativo al raggio della mano (DefaultControllerPointer.prefab) con lo stesso stato di visualizzazione del raggio della mano di sistema della shell. Tale file viene assegnato in Pointers (Puntatori) nel profilo di input di MRTK. In un visore VR immersive gli stessi raggi vengono usati per i controller del movimento.