Realtà virtuale: realizzare mondi virtuali con Unity

Autore: Claudio Mazzuco (Software Developer)

La realtà virtuale ci riprova! Era già apparsa timidamente durante gli anni 90, spinta anche dalla moda cyberpunk che in quell’epoca arrivò al grande pubblico grazie ai romanzi di W.Gibson o a film quali “il tagliaerbe” (1992), Strange Days (1995) ed altri, finendo tuttavia per sparire dalla circolazione molto rapidamente e senza grandi rimpianti. Da un paio di anni però il mercato è tornato prepotentemente ad insistere con nuovi visori e rinnovate promesse di esperienze rivoluzionarie: sarà la volta buona?

Il flop di fine millennio è presto spiegato: dopo diversi tentativi divenne evidente che la tecnologia dell’epoca non era ancora pronta per proporre un’esperienza accettabile e a buon mercato. Per essere credibile il visore deve mostrare un universo complesso, e tale universo deve rispondere immediatamente alle interazioni del cybernauta. I computer dell’epoca semplicemente non ce la facevano, e la realizzazione di un casco dotato di giroscopi, schermi ad alta risoluzione e che non fossero un incubo da indossare non era pensabile. Le suggestioni di libri e pellicole si frantumavano dinnanzi alla povertà di quel che il mercato offriva. Rappresentativo fu, ad esempio, il caso del Virtual Boy, console prodotta da Nintendo, che rappresenta ad oggi uno dei più grandi fallimenti della storia della casa nipponica.

Negli ultimi 2 anni il tema è tornato invece alla ribalta, complice ovviamente l’evoluzione tecnologica che, pur sempre con qualche limite, riesce finalmente a presentare delle soluzioni interessanti sotto i 1000 euro, ma soprattutto grazie all’interesse di alcuni pesi massimi del mercato quali Sony o HTC. Questi hanno presentato delle loro soluzioni per il mercato customer in grado finalmente di fornire un’esperienza abbastanza convincente.

Attualmente non è ancora chiaro se la realtà virtuale finalmente avrà o meno successo. Il prezzo, però, resta ancora non alla portata di tutte le tasche e questo genere di dispositivi per raggiungere il successo dovrà fornire contenuti di qualità in grado di convincere il grande pubblico. Non è tanto importante la tecnologia del dispositivo, quanto la qualità e la quantità delle esperienze che questo dispositivo può offrire. Questa considerazione ha fatto nascere l’esigenza di creare degli strumenti che permettano, a chi sviluppa software, di poter realizzare rappresentazioni virtuali in maniera semplice e standardizzata, diminuendo i costi di produzione senza intaccare la qualità del prodotto finale.

Il motore Unity

La realtà virtuale si appoggia integralmente alla scienza della rappresentazione tridimensionale. Per dare l’impressione di spazialità, il caschetto deve riprodurre due immagini tridimensionali, leggermente diverse l’una dall’altra, che vengono inviate una a ciascun occhio. Questo processo dev’essere fatto almeno sessanta volte al secondo per creare un’esperienza credibile. Inoltre, il dispositivo deve reagire ai movimenti del capo (e del corpo) per aggiornare coerentemente quanto visualizzato dagli occhi.

Rispetto a quanto accadeva più di vent’anni fa, oggi le schede video presenti nei nostri computer presentano potentissime funzionalità per la rappresentazione tridimensionale. Lo sviluppo di questa tecnologia ha avuto un’esplosione esponenziale grazie al mercato dei videogiochi che ormai utilizza il 3D come standard per la resa degli ambienti di gioco.
 Assieme allo sviluppo hardware, il mondo dei videogames ha permesso anche la nascita di diverse soluzioni software che aiutano e semplificano di molto lo sviluppo dei contenuti. Non deve pertanto sorprendere che i medesimi tool siano diventati anche lo standard per la creazione di mondi per la realtà virtuale: in realtà diversi produttori di videogiochi stanno sperimentando la VR all’interno dei loro titoli.

Esistono diversi prodotti presenti sul mercato (che vengono denominati motori), alcuni di essi sono a pagamento, altri gratuiti. I più noti sono Unreal Engine, Cry Engine, Unity, Source, e ciascuno di questi ha ormai introdotto la compatibilità con la realtà virtuale ed i visori presenti sul mercato.

In questo articolo andremo ad illustrare brevemente il motore Unity, che è diventato col tempo il riferimento di tutte le produzioni “indie” (piccoli gruppi di sviluppo senza un grosso publisher alle spalle) anche in virtù del suo costo veramente accessibile. Unity, infatti, è totalmente gratuito, anche se usato per scopi commerciali fino a quando i titoli creati non creano guadagni uguali o superiori ai centomila dollari.

Unity è un ambiente di sviluppo multipiattaforma: i contenuti possono essere creati usando un PC con Windows o un Mac, ma possono poi essere installati in pressoché su qualsiasi dispositivo presente sul mercato: computer, tablet (Android o iOS), console, ecc.

Per scaricare l’ambiente di sviluppo è sufficiente andare su questo link: https://unity3d.com/get-unity/download

e poi selezionare la versione “Personal”.

La procedura di installazione è molto semplice anche se particolarmente lunga. Una volta terminata sarà sufficiente avviare il programma e apparirà la seguente pagina iniziale.

Da qui è sufficiente premere su “NEW”, dare un nome al progetto che si vuole creare, lasciando l’opzione “3D” attivata, e premere su “Create project”

Una volta fatto apparirà finalmente l’ambiente di lavoro dal quale potrete creare tutto ciò che desiderate.

Lo sviluppo su Unity avviene sia in modo visuale, utilizzando la sua interfaccia utente, sia programmando, utilizzando a scelta il linguaggio C# o Javascript. Per creare contenuti sofisticati è necessario utilizzare entrambi gli approcci e comunque è richiesta una conoscenza di base della programmazione ad oggetti. Fortunatamente Unity mette a disposizione dello sviluppatore, oltre ad una documentazione molto completa (e gratuita), anche una serie di tutorial molto semplici e chiari in grado di aiutare il neofita a compiere i primi passi, che potete trovare presso questo indirizzo: https://unity3d.com/learn/tutorials

Personalmente consiglio caldamente di provarne almeno due:

  1. Roll-a-ball tutorial: un’introduzione all’ambiente molto semplice che serve a prendere confidenza con lo strumento illustrandone comunque i suoi punti di forza quali il motore fisico.
  2. Space Shooter tutorial: un interessante progetto che vi permetterà di realizzare un vero e proprio videogioco e che approfondisce alcuni aspetti cruciali di Unity. Al termine di questo tutorial sarete già in grado di iniziare a creare i vostri contenuti.

E, ovviamente, per esplorare gli aspetti tipici della realtà virtuale è imperativa la lettura di questo tutorial: https://unity3d.com/learn/tutorials/topics/virtual-reality

Cos’altro vi serve Per la Realtà virtuale?

Pur essendo una suite completa e matura, per poter creare contenuti di qualità vi serviranno almeno due altri strumenti:

  • un modellatore tridimensionale, per realizzare la geometria del vostro mondo,
  • un editor bidimensionale per realizzare le texture delle geometrie.

Unity mette a disposizione una serie di oggetti semplici già preconfezionati (cubi, sfere, cilindri ed altri) che chiaramente non sono sufficienti per realizzare un universo credibile.

Due ottimi tool che possono essere utilizzati, e del tutto gratuiti, sono:

  1. Blender: per la modellazione 3D
  2. Gimp: per l’editing delle immagini

L’utilizzo di Blender è tutt’altro che semplice, e richiederebbe da solo una serie di approfondimenti per poter anche solo scalfirne le sue potenzialità. Fortunatamente anche per esso esistono una quantità infinita di video, corsi, documentazione totalmente gratuiti.
 Alternativamente Unity mette a disposizione un negozio dove è possibile acquistare tutta una serie di articoli creati da artisti e sviluppatori, tra cui anche modelli 3d, textures ed altro. Alcuni di essi sono persino messi a disposizione gratuitamente.

E, ovviamente, vi serve un visore…


Originally published at www.interlogica.it.