Come posizionare oggetti virtuali nel mondo reale in modo convincente

La realtà aumentata ha creato un’incredibile opportunità per gli sviluppatori di portare i videogiochi nel mondo reale per la prima volta. Ma come ogni nuova opportunità, costruire per la realtà aumentata comporta una serie di nuove sfide che pochi creatori hanno affrontato prima.

Come si fa a creare un’esperienza che esiste a 360 gradi intorno al giocatore? Come si fa a tenere conto degli ostacoli nella stanza? Cosa si dovrebbe fare per rispecchiare l’illuminazione e i colori del mondo reale?

Ciò che distingue i giochi AR da tutto ciò che è venuto prima è la necessità di creare un significativo senso di immersione che fonde insieme il mondo reale e quello virtuale.

Come direttore tecnico per la realtà aumentata e mista a Resolution Games, questo è qualcosa con cui ho avuto una vasta esperienza da quando il formato è emerso, e ho avuto la fortuna di sviluppare per ogni dispositivo AR degno di nota finora. Quello che ho imparato è che l’immersione AR si riduce a poche cose chiave.

  • Ombre
  • Seguire gli spunti di illuminazione della natura
  • Aggiungere un tocco di colore alla stanza
  • Aumentare il mondo reale
  • Creare consapevolezza spaziale con le particelle
  • Non dimenticare: il mondo reale è un ostacolo (ed è una buona cosa)

Ombre

Ogni artista sa che le ombre sono cruciali per creare un mondo credibile, ma come devi pensare ad esse in modo diverso quando metti oggetti digitali in uno spazio fisico? L’occlusione ambientale è un grande pezzo del puzzle – permette ai creatori di mettere una piccola ombra blob sotto qualsiasi oggetto appoggiato a terra, facendo in modo che l’ombra non sia solo attaccata all’oggetto, ma chiaramente collegata alla superficie su cui è proiettata.

Sia gli oggetti statici che quelli dinamici possono beneficiare dell’occlusione ambientale, ma l’approccio deve essere un po’ diverso per ciascuno.

Come posizionare oggetti virtuali nel mondo reale in modo convincente

L’occlusione ambientale è normalmente ottenuta automaticamente con il baking delle luci o metodi simili, ma per usare questo effetto con gli oggetti statici, abbiamo costruito la geometria intorno ai nostri oggetti di scena e quella geometria è diventata l’occlusione ambientale. Così tutti i nostri oggetti di scena statici hanno ciò che chiamiamo “gonne di ambient occlusion” intorno a loro. In questo modo possiamo modificare l’ambient occlusion per farla apparire esattamente come vogliamo in ogni situazione.

Per gli oggetti dinamici, abbiamo ottenuto l’occlusione ambientale disegnando i blocchi di livello dal basso verso l’alto con una telecamera ortogonale. Questo crea un buffer di profondità dove il nero indica un’ombra. Più il nero è scuro, più il blocco è vicino al suolo.

Per esempio, abbiamo disegnato l’ombra in una texture di 32×32 pixel, che abbiamo poi trasformato in una texture 128×128 in bianco e nero con una semplice sfocatura. Questo crea un’ombra di ambient occlusion bella e morbida. Abbiamo poi disegnato la texture 128×128 su un quadrato trasparente sul piano terra.

Seguire gli spunti di illuminazione della natura

L’illuminazione è qualcosa con cui ogni sviluppatore di giochi ha familiarità, ma pochi hanno dovuto confrontarsi con le realtà dell’illuminazione nel mondo reale e come regolare il proprio approccio alla luce di queste condizioni variabili.

Quando si crea l’illuminazione per progetti AR, è necessario regolare l’intensità della luce degli oggetti virtuali in base a ciò che sta accadendo nella stanza in tempo reale. Se qualcuno sta giocando in una stanza luminosa, il suo gioco dovrebbe apparire diverso da quello di qualcuno che gioca in una stanza buia. E come si può immaginare con l’illuminazione, ci sono molti altri fattori da considerare.

In Angry Birds AR: Isle of Pigs, abbiamo usato due luci nel nostro setup: una luce direzionale e una luce ambientale. ARKit ci dà un valore di stima della luce tra 0 e 1, ma prima di darlo alle luci nella scena, modifichiamo leggermente questa stima per ottenere le precise intensità di luce che vogliamo. Regoliamo anche il colore delle luci, sia ambientali che direzionali, in base alla stima della temperatura della luce dal dispositivo.

Uno degli altri trucchi di illuminazione che vale la pena considerare è quello di utilizzare la texture dell’ambiente prodotta da ARKit come uno skybox per influenzare l’illuminazione nella vostra scena, permettendo ai colori che si sentono riflessi nell’ambiente di apparire invece di avere oggetti che mostrano un colore innaturale che può spiccare come un pollice dolente.

Colors can better reflect the environment different if you use the environment texture just right

I colori possono riflettere meglio l’ambiente diverso se si utilizza la texture dell’ambiente giusto

Una parola di avvertimento, questo può essere abbastanza difficile da implementare perché a volte un ambiente può essere molto luminoso o molto scuro. Quindi, mentre questa tecnica può essere usata con grande effetto, viene anche con il suo set di sfide.

Aggiungete un pizzico di colore alla stanza

Il colore gioca una parte integrante nel modo in cui presentate il vostro gioco, ma come i colori dei vostri oggetti si mescolano con i colori del mondo reale può essere facilmente trascurato.

Alterando il feed video per tingere il mondo reale in un modo che corrisponda adeguatamente alla vostra scena, è possibile ottenere un approccio al colore che impedisce qualsiasi disagio o esperienza di rottura delle vibrazioni. È una soluzione semplice che sembra più nel regno delle applicazioni di condivisione di foto che nello sviluppo di giochi, ma non si può negare che i filtri di colore fanno miracoli per migliorare l’immersione.

Different themed environments are displayed with a corresponding color filter for the video feed

Diversi ambienti a tema vengono visualizzati con un corrispondente filtro di colore per il feed video

Nell’esempio sopra di Angry Birds AR: Isle of Pigs, il feed video viene fornito al gioco come due texture, entrambe nello spazio colore YCbCr. C’è poi uno shader che converte da YCbCr a RGB, ed è questo shader che abbiamo modificato per ottenere questo effetto.

La conversione prende il colore YCbCr come un Vector4, lo moltiplica con una matrice 4×4 e poi il vettore risultante è il colore RGB.

Aumentare il mondo reale

Impostare il tono con il colore è una cosa, ma che dire della gestione degli oggetti del mondo reale che sono nella vostra scena semplicemente in quanto esistenti? È possibile utilizzare lo stesso feed video per modificare questi oggetti utilizzando uno shader di rifrazione.

Iniziate con il rendering del feed video come sfondo. Poi renderizzate tutti gli oggetti opachi e prendete il render buffer da usare come texture. Ora usate la texture del render buffer come input nel vostro shader di rifrazione.

Nel video qui sopra, date un’occhiata al blocco di ghiaccio superiore e guardate cosa succede quando passa davanti a una pianta d’appartamento. Anche la pianta viene rifratta! L’AR non è solo mettere oggetti virtuali in ambienti reali – si tratta di modificare anche il mondo reale intorno a noi. E più riesci a farlo, più credibile sarà il tuo progetto AR.

Crea consapevolezza spaziale con le particelle

Poche cose creano un senso di immersione nell’AR così bene come far sentire ai giocatori che ci sono cose che devono esplorare appena fuori dalla telecamera. Le particelle possono raggiungere questa sensazione in modo molto efficace. Pensate ai fiocchi di neve che cadono nella stanza, o alla polvere di stelle che cade dal cielo notturno.

Elementi come questi creano un effetto molto immediato sul giocatore, facendogli desiderare di muoversi per vedere di più — quasi come se potessero catturarli.

Non dimenticare: il mondo reale è un ostacolo (e questa è una buona cosa)

Poche cose rompono una grande esperienza AR più velocemente di avere oggetti che non si comportano come farebbero nel mondo reale. Se muovete il vostro dispositivo in modo che un mobile blocchi la scena sottostante, ha davvero bisogno di bloccare la scena sottostante. Tutto si riduce a una parola: occlusione.

Le superfici di occlusione sono il modo in cui potete nascondere un oggetto virtuale dietro o sotto uno reale. Non vorrete sempre farlo (dopo tutto, potreste volere che il vostro gioco sia giocato su un tavolo piuttosto che nascosto sotto di esso), ma se il dispositivo di un utente può scansionare le superfici del mondo reale e rilevare la profondità, potete usare quella profondità come un buffer per mascherare qualsiasi cosa nel mondo reale.

Questo non è qualcosa che era possibile all’alba dell’AR gaming, ma sempre più dispositivi hanno queste capacità, e dovreste sfruttarle ogni volta che potete.

E la tecnologia intorno alla realtà aumentata è in costante evoluzione. Con gli occhiali legati al telefono all’orizzonte, e nuovi kit di sviluppo da artisti del calibro di Qualcomm e Niantic in arrivo, ci saranno un sacco di nuovi modi per costruire esperienze immersive che saltano proprio nella stanza.

Ma non importa dove ci porterà la tecnologia, i suggerimenti di cui sopra dovrebbero fornire una grande base per la creazione di giochi AR che i giocatori possono godere, sperimentare e immergersi completamente.

Magnus Runesson è il direttore tecnico per la realtà aumentata e mista di Resolution Games. L’azienda ha recentemente annunciato la formazione di una divisione dedicata ai progetti AR.