Progettare per Apple Vision Pro. Primi passi nello Spatial Computing e le prime lezioni imparate

Come scrivo da giorni, son circa 3 mesi che studio e sperimento in ambiente di sviluppo e test per Apple Vision Pro (nelle prossime ore mi arriverร  il mio primo visore, di due, che ne ho acquistato). Non c’รจ dubbio che fin dall’ambiente di sviluppo, e senza ancora aver avuto modo di fare lunga sperimentazione con l’oggetto fisico – a parte un test di 15 min a Dicembre – il nuovo dispositivo presenta una serie di nuove sfide progettuali, rispetto ad altri visori e rispetto al mondo IOS, da considerare, e che non sono del tutto scontate.

Partiamo da un punto a mio avviso fondamentale:

La forza di Vision Pro non รจ l’hardware ( o meglio non solo e non soprattutto ), ma bensรฌ la visione e la concezione che porta con se a livello di sistema e approccio.

Proprio come ho scritto qui . Detto questo qui di seguito riporto alcuni appunti che in questi mesi ho preso durante la progettazione from scratch per Apple Vision Pro.

Vision Pro non รจ un comune visore AR/VR

L’arrivo di Apple nel mercato dell’AR รจ un tema di discussione, e attesa, di lungo termine e fino a poco tempo fa non c’erano informazioni specifiche per poter iniziare a ragionare su cosa volesse dire progettare per questo device. Per esperienza il processo di migrazione di un applicativo tra diversi visori, cosi come succede tra diversi device smartphone con OS differenti, implica l’adattamento di piรน parti del progetto, dalla UX alle scelte tecniche di sviluppo, nonchรฉ in alcuni casi anche servizi per gestire correttamente le dinamiche dell’OS / ambiente di riferimento. Sono pochi i casi che permettono di lasciare il design pressochรฉ inalterato, ma nel caso del VR invece รจ prassi.

Nel caso di Apple, rientriamo assolutamente nel secondo caso, ossia รจ un nuovo approccio, ergo รจ un contesto del tutto nuovo in cui sviluppare applicativi immersivi “per Vision pro“, e non “anche per Vision Pro“.

Da documentazione Apple รจ palese fin da subito che non si parla di AR / VR, ma di Spatial Computing. Di questo in questi giorni ne ho giร  ampiamente parlato e scritto,ย  e anche se per molti puรฒ sembrare solo marketing, a mio avviso ci sono alcune differenze reali nel modo in cui questo visore รจ progettato rispetto a Quest 3 e altri visori provati negli ultimi due anni.

Un ambiente di sviluppo, per diverse modalitร 

Per prima cosa in questo contesto รจ importante definire le tipologie di applicazioni sviluppabili. In particolare in Vision Pro ci sono tre tipi di app che si possono sviluppare: windowed, bounded e unbounded (sono termini ereditati da Unity). Nel contesto dell’Apple Vision Pro, i tre approcci alla progettazione di applicazioni rappresentano modi differenti di sfruttare le capacitร  di spatial computing del dispositivo. Questi approcci definiscono come l’applicazione interagisce con lo spazio dell’utente e il grado di immersivitร .ย 

  • Windowed: le applicazioni “windowed” sono quelle che appaiono agli utenti come finestre fluttuanti nello spazio davanti a loro, in modalitร  Passthrough, simili a come le finestre appaiono su un computer desktop tradizionale. Questo approccio consente agli utenti di interagire con l’applicazione in un formato rettangolare 2D, mantenendo contemporaneamente la consapevolezza dell’ambiente fisico. รˆ l’opzione meno immersiva tra le tre, ma offre grande flessibilitร  e puรฒ essere particolarmente utile per applicazioni che non richiedono un’esperienza completamente immersiva o per quelle che devono essere eseguite in parallelo ad altre attivitร , in multi tasking praticamente.
  • Bounded: le applicazioni “bounded” sono progettate per operare all’interno di un volume definito, o “bounded space”, nello spazio fisico dell’utente. Questo significa che l’app crea un’esperienza 3D immersiva che gli utenti possono esplorare o interagire entro i limiti di uno spazio virtuale delimitato. Il volume puรฒ essere visualizzato come una porzione di spazio virtuale che coesiste con il mondo reale, permettendo agli utenti di muoversi e guardarsi intorno all’interno dei confini definiti. Questo approccio รจ piรน immersivo rispetto alle applicazioni windowed, offrendo un’esperienza che sfrutta la percezione dello spazio 3D pur essendo ancorata a un’area specifica del mondo reale.
  • Unbounded: le applicazioni “unbounded” rappresentano il livello piรน elevato di immersione, in cui l’esperienza virtuale non รจ confinata da limiti spaziali definiti. In questo scenario, l’app puรฒ trasformare l’intero ambiente circostante dell’utente in uno spazio di gioco o di lavoro virtuale, permettendo interazioni e movimenti virtuali senza restrizioni spaziali. Questo approccio รจ ideale per esperienze di realtร  aumentata o virtuale che intendono sostituire o trasformare completamente la percezione dell’ambiente fisico dell’utente, offrendo la massima libertร  nell’esplorazione di mondi virtuali.

Ogni approccio ha i suoi vantaggi specifici e la scelta tra windowed, bounded e unbounded dipende dagli obiettivi dell’applicazione, dalle esigenze degli utenti e dal tipo di esperienza che si desidera creare. L’Apple Vision Pro, in questo modo offre agli sviluppatori la flessibilitร  di esplorare questi diversi approcci per progettare esperienze utente innovative e coinvolgenti.

Un approccio flessibile e unico (per adesso)

Tecnicamente non c’รจ una netta divisione in questo contesto di sviluppo. Da parte di Apple, ci sono finestre o volumi (oggetti ed entitร ) che possono apparire in modalitร  Shared Space o Full Space, in Passthrough o in un ambiente VR completamente immersivo. Un’app nel caso di Vision pro puรฒ combinarli tutti insieme, in vari modi.

Faccio degli esempi per rendere meglio l’idea.ย Nel caso di Apple รจ possibile per esempio sviluppare un gruppo di finestre, che si combinano con un gruppo di volumi, in uno spazio Full o Shared. In questo caso si puรฒ passare da uno all’altro, a seconda delle esigenze dell’utente, e si possono creare dinamiche di interazione e spostamento particolari: la vera distinzione da รจ tra il come il contenuto รจ rappresentato ( finestra 2D o volume 3D) e in quale spazio si trova (condiviso con altre app o non condiviso), e soprattutto se รจ in Passthrough o in VR completo. Molte applicazioni per necessitร  o precedenti sviluppi in altri ambienti e device nascono con modelli vincolati, mentre nel caso di Apple, se si vuole mantenere una completa flessibilitร  la soluzione piรน semplice (e probabilmente corretta) รจ utilizzare in modalitร  Full Space. L’unico caso che diventa veramente vincolate e inibisce alle applicazioni di poter esser gestite contemporaneamente ad altre รจ lo sviluppo Unbounded/Full Space, che ha di per se molti vantaggi, ma ha lo svantaggio principale che l’utente appunto non puรฒ aprire applicazioni una a fianco all’altra.

In pratica se vogliamo realizzare applicazioni che permettano all’utente in contemporanea di leggere la posta, navigare in internet, ascoltare musica, guardare un video, giocare e fare qualsiasi altra cosa dobbiamo realizzare app bounded e in uno spazio condiviso. Questo tipo di soluzione di sviluppo, che dal possibilitร  di utilizzo senza soluzione di continuitร , da la sensazione di essere magica. E questa cosa per adesso la si puรฒ fare solo in Apple Vision Pro.

Quando Apple menziona lo Spatial Computing in pratica non parla di AR o VR, ma si riferisce esattamente a questo.

Apple Vision pro รจ “un computer indossabile”. E non lo dico solo per un tema di hardware o caratteristiche tecniche, ma per via dell’ecosistema che Apple vuole integrare e lo scopo che vuole raggiungere: un dispositivo, come un computer personale, indossato sulla testa, con cui puoi fare tutto, ovunque.

Scegliere quindi in quale spazio si trova l’app, a mio avviso รจ la prima fase della progettazione dell’esperienza dell’applicativo che si vuole sviluppare e che consentirร  al progetto di poter sfruttare a pieno le potenzialitร  del visore. Non c’รจ dubbio che allinearsi alla visione di Apple, come successo negli anni con le linee progettuali dettate da Apple stessa per IOS, possa accelerare lo sviluppo e trovarsi esattamente a progettare nel corretto paradigma – approvato da Apple appunto – e su cui il visore di fatto nasce.

La differenza dei controlli tra Apple Vision Pro e gli altri sistemi

Una delle cose che mi ha sorpreso negli ultimi anni รจ quanto i giochi VR possano essere accessibili ai non giocatori, per quanto il numero di visori e la diffusione dei giochi VR non sia ancora cosรฌ estesa. Uno dei motivi della semplicitร  d’uso a primo impatto รจ senza dubbio il controllo all’interno del gioco, ossia per la VR รจ viene chiamato controllo diretto. Questo รจ un modo elegante per dire che giochi attraverso l’incarnazione diretta e questa forma di controllo รจ estremamente intuitiva, perchรฉ tutti sanno come usare il proprio corpo.

All’interno del Vision Pro, il paradigma di controllo รจ differente. In Vision pro le cose con cui puoi interagire le guardi e poi le pizzichi. In pratica รจ come se gli occhi fossero il puntatore del mouse e al tuo pizzico delle dita il clic sul tasto sinistro. Questo รจ quello che Apple chiama il controllo indiretto. Se il controllo diretto รจ intuitivo, il controllo indiretto all’inizio lo รจ un po’ meno.

I concetti di controllo diretto e controllo indiretto si riferiscono quindi a due diversi modi in cui gli utenti possono interagire con le interfacce digitali, in particolare nel contesto di dispositivi come l’Apple Vision Pro e altri sistemi di realtร  aumentata o virtuale.

  • Controllo Diretto: il controllo diretto si basa sull’interazione fisica e intuitiva con l’ambiente virtuale. In pratica, significa che le azioni dell’utente nel mondo reale vengono mappate direttamente nel mondo virtuale in modo uno a uno. Ad esempio, se in un gioco VR l’utente vuole afferrare un oggetto, estenderร  la mano e lo prenderร  proprio come farebbe nella vita reale. Questo approccio รจ definito “diretto” perchรฉ l’azione compiuta ha un corrispettivo immediato e intuitivo nell’ambiente virtuale, rendendo l’esperienza di gioco o l’interazione estremamente naturale e accessibile anche per chi non รจ abituato ai videogiochi. La tecnologia di tracking di movimento, come il tracciamento delle mani e dei movimenti del corpo, รจ cruciale per questo tipo di controllo.
  • Controllo Indiretto: il controllo indiretto richiede invece un’azione che non corrisponde fisicamente all’azione che si verifica nel mondo virtuale. Utilizzando l’esempio dell’Apple Vision Pro, gli utenti interagiscono con l’ambiente virtuale guardando gli oggetti e compiendo un gesto specifico, come un pizzicotto, per selezionarli o interagire con essi. In questo caso, lo sguardo dell’utente funziona, come detto, come un cursore del mouse, e il “clic” delle dita sostituisce il mouse. Questo metodo รจ considerato “indiretto” perchรฉ c’รจ una disconnessione tra l’azione fisica e il risultato nell’ambiente virtuale; l’utente non tocca o afferra fisicamente l’oggetto, ma usa un’interazione basata su gesti per controllarlo.

Scegliere tra un controllo diretto o indiretto

Non c’รจ dubbio che la modalitร  in controllo indiretto debba esser appreso dall’utente poichรฉ, almeno nella fase iniziale, non risulta naturale, soprattutto se paragonata ad altre esperienze di altri visori per gli utenti che hanno giร  avuto altre esperienze.

Ma questa fase di apprendimento, l’abbiamo giร  vissuta piรน volte e non รจ stato un disastro, anzi:

  • le levette analogiche introdotte per la prima volta nei videogiochi
  • il cursore del mouse e la sua interazione con il sistema operativo
  • lo swipe di apple per lo sblocco del cellulare per per le diverse interazioni

Ogni nuova interazione porta con se una nuova fase ed una nuova curva di apprendimento. E non necessariamente รจ un male.

Ora, rispetto il punto รจ “scegliere tra un controllo diretto o indiretto”. Ovviamente la prima riflessione รจ che aย seconda del tipo di sviluppo che si affronta รจ corretto pensare di sviluppare differenti tipologie di interazione, o eventualmente supportare sia il controllo diretto che quello indiretto.

I sistemi di interazione indiretta a mio avviso prenderanno popolaritร  per la loro versatilitร  e capacitร  di adattarsi soprattutto alla pigrizia umana, offrendo un’interfaccia concettualmente trasparente che permette di compiere molteplici azioni con minimi spostamenti nel mondo reale. Questo tipo di controllo diventa essenziale in ambienti con spazi limitati, dove l’interazione diretta fisica รจ impraticabile, e aggiungo in contesti in cui l’utilizzo del visore รจ in condizioni di lavoro “stabili” ed il visore รจ il sostituto di un equipaggiamento fatto di pc, device mobile e monitor. In tali contesti, gli utenti interagiscono con il sistema da una certa distanza, rendendo le azioni simili all’uso di un mouse in un ambiente 2D, ma con la tecnologia che interpreta automaticamente la profonditร  e l’orientamento desiderato. Questo approccio consente una partecipazione efficace e comoda in progetti complessi senza la necessitร  di movimenti ampi o fisici, adattandosi perfettamente a situazioni dove lo spazio รจ un vincolo.

In pratica progettare per il controllo indiretto significa tornare a progettare nel modo in cui si farebbe per un mouse o un controller. Invece di mappare il movimento fisico del giocatore uno a uno nel mondo virtuale, va ripensato in modo che una piccola quantitร  di movimento abiliti un ampio spazio di possibilitร  nello spazio di interazione.ย Questo schema di controllo si basa molto sul tracciamento degli occhi.

Tracciamento Oculare, tra punti di forza e debolezze

Il tracciamento oculare del Vision Pro รจ sicuramente molto efficace e preciso, seppur tecnicamente non sbagli mai su punto in cui gli occhi sono puntati, il modo in cui deve esser implementato e utilizzato ha ancora delle debolezze (che non ho dubbi verranno migliorate).

Prima di tutto il tracciamento oculare come metodo di input presenta un potenziale limite legato alla necessitร  di eseguire azioni in modo sequenziale, a causa della limitazione naturale di poter focalizzare visivamente un solo elemento alla volta. Questo implica che, nonostante la potenziale rapiditร  e intuitivitร  dell’interazione visiva, gli utenti sono vincolati a comunicare le loro intenzioni al sistema in una sequenza temporale definita. Questo vincolo puรฒ limitare la capacitร  di multitasking, in particolare in contesti dove l’efficienza e la simultaneitร  delle azioni sono cruciali. รˆ possibile organizzare le interazioni in modo che consentano una forma di multitasking sequenziale, ad esempio attraverso l’uso combinato di input visivi e gestuali che permettono di gestire diversi elementi quasi contemporaneamente.

Secondo tema รจ relativo alla percezione visiva umana, caratterizzata da rapidi e brevi movimenti degli occhi che spostano il punto di focalizzazione, introduce ulteriori complicazioni nel tracciamento oculare. Questi aspetti biologici possono distorcere la corrispondenza tra l’intenzione dell’utente e il punto effettivo di focalizzazione, portando a discrepanze tra dove l’utente crede di aver guardato e dove i suoi occhi si sono effettivamente mossi. Questo fenomeno puรฒ causare interazioni imprecise o non intenzionali, sottolineando l’importanza di considerare le peculiaritร  della visione umana nella progettazione di interfacce basate sul tracciamento oculare. La sfida che vedo รจ quella di progettare sistemi che tengano conto di queste limitazioni, minimizzando gli errori e migliorando l’esperienza utente attraverso un’interpretazione accurata delle intenzioni visive.

Da considerare infine รจ l’ottimizzazione delle interfacce di tracciamento oculare ed in particolare va fatta molta attenzione al tempo di reazione richiesto nell’interazione, alla disposizione spaziale degli elementi interattivi e ai falsi positivi. Minimizzare la possibilitร  di azioni non intenzionali e ridurre l’impatto degli errori diventa fondamentale per mantenere un’esperienza utente positiva, fluida e che non generi frustrazione. Strategie come la distanza minima tra gli elementi interattivi e la conferma delle azioni critiche possono mitigare le conseguenze degli errori e migliorare significativamente l’usabilitร . La progettazione di interfacce , soprattutto in un contesto immersivo / sensoriale deve quindi bilanciare l’introduzione di esigenze tecnologica e comportamento umano, al fine di creare sistemi di interazione che siano sia avanzati che intuitivi.

Personalizzazione dell’esperienza utente su Apple Vision Pro

Un aspetto fondamentale nella progettazione di applicazioni per Vision Pro รจ l’importanza di offrire esperienze altamente personalizzabili. Nell’era del computing spaziale e dell’iperpersonalizzazione, la UX si trasforma richiedendo un approccio che vada oltre la “semplice” navigazione tradizionale. Lo sviluppo deve pertanto considerare che il design possano adattarsi non solo alle diverse modalitร  di interazione (diretta e indiretta), ma anche alle preferenze individuali degli utenti. La capacitร  di modificare impostazioni quali la scala di visualizzazione, la sensibilitร  dei controlli o gli schemi di colore diventa cruciale per accogliere un pubblico ampio e diversificato. Questo livello di personalizzazione non solo migliora il comfort e l’usabilitร , ma incoraggia anche un maggior grado di immersione e soddisfazione dell’utente, ed accessibilitร .

Game Design per l’Immersivitร  Spaziale

Nel contesto di Vision Pro, il game design assume nuove dimensioni, spingendo lo sviluppo a forme di esplorazione innovative e meccaniche di gioco che sfruttino appieno le capacitร  dello spatial computing. La progettazione di giochi in ambienti windowed, bounded e unbounded offre opportunitร  senza precedenti per creare esperienze ludiche che si intrecciano con l’ambiente fisico dell’utente. Questo richiede una riflessione approfondita su come gli elementi di stimolo possano esser applicati per far emergere ed attivare comportamenti ed interazioni all’interno di spazi reali e virtuali, in un continuo di esperienza. Elementi come la realtร  aumentata dinamica, gli oggetti interattivi che reagiscono alla presenza fisica e ai movimenti dell’utente, l’interazione con oggetti fisici, sensori e la narrazione che si adatta all’ambiente circostante, pongono le basi per una nuova era del game design, dove l’ambiente stesso diventa un componente chiave del gameplay.

Lo spazio condiviso: ottimizzazione e integrazione

Nella progettazione di applicazioni che utilizzano lo “spazio condiviso” diventa importante e fondamentale considerare l’impatto sulla potenza di calcolo del dispositivo e sul carico cognitivo degli utenti. Le applicazioni in questi contesti non operano in isolamento (ossia in modalitร  unica) ma coesistono con altre applicazioni, condividendo di conseguenza le risorse limitate come la potenza di elaborazione. Questo implica la necessitร  di ottimizzare le prestazioni senza presupporre l’accesso esclusivo alle risorse del sistema. Allo stesso tempo, รจ essenziale progettare esperienze che non sovraccarichino l’utente, lasciando spazio cognitivo (in modo fagocitante) per altre attivitร  parallele, sottolineando l’importanza di un design che sia efficiente e non invadente.

Il concetto di spazio condiviso estende la sua rilevanza ed importanza progettuale anche al tema sonoro delle applicazioni. Nello sviluppo di un applicativo devono esser bilanciate la creazione di un contesto ambientale sonoro coinvolgente e la consapevolezza che esisteranno altri suoni nell’ambiente dell’utente fisico circostante. Questo richiede un attento lavoro di design del suono che consideri la coesistenza di fonti sonore multiple, garantendo che l’audio dell’applicazione non sia invasivo ma piuttosto si integri armoniosamente con il contesto di utilizzo. Son parecchi i giochi e applicazioni giร  presenti in altri store VR che non hanno una corretta attenzione progettuale a queste dinamiche.

Sfide e Strategie nello Sviluppo per Piattaforme Avanzate

Ultimo tema da affrontare รจ relativo alla scelta della piattaforma di sviluppo per un progetto, e qui le opzioni spaziano da ambienti nativi, come Swift per dispositivi Apple, a motori di terze parti come Unity. La decisione dipende spesso dalla familiaritร  con l’ecosistema e dalla valutazione dei rischi e delle tempistiche di sviluppo del singolo progetto.

Sviluppare nativamente puรฒ offrire un accesso diretto alle ultime funzionalitร  e ottimizzazioni e caratteristiche tecniche del dispostivo stesso e dell’OS (come succede dopo tutto con swift su IOS), ma richiede una conoscenza approfondita della piattaforma. Al contrario, l’uso di motori di terze parti puรฒ accelerare lo sviluppo grazie alla loro flessibilitร  e alla vasta gamma di funzionalitร , anche se potrebbe comportare limitazioni in termini di accesso alle funzionalitร  piรน recenti e specifiche del dispositivo ed una maggiore dipendenza da aggiornamenti di terze parti.

Le differenze architetturali tra le piattaforme di sviluppo possono presentare complessitร  differenti: un esempio, in particolare, riguarda lo sviluppo in Unity (e prossimamente anche Unreal) nell’interazione con l’hardware di ogni specifica piattaforma (VisionPro, Quest3, altri) e creare delle discrepanze nella gestione del rendering, conversioni di materiali e shader, e differenze nel modo in cui di conseguenza la logica dell’applicativo interagisce con le API native.

Nello specifico questa fase di approccio alla scelta necessitร  di una comprensione dettagliata degli ambienti e delle loro peculiaritร  al fine di ottimizzare le prestazioni e garantire che il progetto funzioni come previsto. Se ci pensate non รจ diverso da quanto accade quando scegliamo di sviluppare app mobile in nativo o con framework come Flutter o altro.

Le questioni di rendering, in particolare, possono essere complesse, con considerazioni da valutare sull’efficacia in termini di risoluzione, framerate, latenza e come queste influenzano di conseguenza l’esperienza utente.

Last, but not Least… i dati e la privacy

La progettazione di applicazioni piรน complesse ci mette davanti anche temi da trattare come privacy e l’accesso ai dati, soprattutto in contesti di spazio condiviso. L’accesso a dati ed informazioni sensibili come la posizione dell’utente o il movimento degli occhi puรฒ essere limitata per motivi di sicurezza.

Nella fase di analisi di un progetto รจ importante comprendere fin da subito quali restrizioni dover affrontare bilanciando le necessitร  funzionali dell’applicativo con il rispetto della privacy dell’utente, cercando soluzioni creative per migliorare l’interazione senza compromettere la sicurezza e quindi danneggiare l’adozione.

Insomma, in questo viaggio appena iniziato vedo una potenzialitร  enorme, ma soprattutto uno spazio tutto nuovo di possibili progettualitร  che, ad oggi, nemmeno immaginiamo. Esattamente come quando per la prima volta iniziammo a pensare alla prossima app per iPhone.