• Non ci sono risultati.

4.1 Software e Hardware: descrizione di strumenti comuni ai progetti

4.1.1 Unity3D: game engine multipurpose

Unity3D nasce come game engine per lo sviluppo di videogiochi dai contenuti 3D, ma nel corso del tempo si evoluto affermandosi come ambiente di sviluppo ideale per artefatti digitali di diversa natura e destinazione.

La mia esperienza con questo ambiente di sviluppo è iniziata con un timido approccio nel 2010 quando stavo preparando la tesi di laurea triennale sviluppando con Microsoft Kinect, ed è poi ripresa nel 2011 nel corso del master 3D con un maggior impatto durante la collaborazione avvenuta sul progetto eLaparo4D che più tardi verrà descritto.

Oltre a questi motivi, tra le ragioni del mio utilizzo di Unity3D vi rientrano una serie di fattori collegati allo sviluppo di tale software:

● la presenza di una buona documentazione; ● l’esistenza di una vasta community online; ● l’utilizzo di versione gratuita;

● la possibilità di sviluppare cross-platform;

● il rilascio di librerie SDK dedicate di manufacturer;

● l’opportunità di trovare demo e features pronte all’uso sull’asset store.

Questi sono anche i motivi che fanno di Unity3D un importante player all’interno di quello che riguarda il mercato di giochi ed esperienze immersive sviluppate nel mondo17(Fig. 74).

Fig. 74 Statistiche mercato Unity

L’utilizzo di Unity3D è utile e funzionale per progetti che rientrano in casi applicativi appartenenti ai settori del:

● Games;

● Automotive, Transportation & Manufacturing; ● Film, Animation & Cinematics;

● Architecture, Engineering & Construction; ● Brands & Creative Agencies;

● Gambling; ● EdTech; ● XR.

Per poter sviluppare in Unity3D ci sono diverse cose da dover sempre tenere a mente ma diciamo che le tre principali parole di cui sapere bene il significato sono le seguenti:

● Gameobject; ● Component; ● Property;

Un gameobject (GO) indica ogni entità presente all’interno della scena virtuale ed è

caratterizzato da un nome e alcune proprietà di base che ne permettono il posizionamento nello spazio 3D.

I component sono pezzi funzionali dei GO che ne caratterizzano i comportamenti e l’aspetto attraverso le differenti caratteristiche e finalità. Possono essere aggiunti, tolti o modificati secondo le necessità richieste dallo sviluppo.

Le property sono attributi dei componenti e caratterizzati da variabilità sulla base del componente a cui appartengono e del valore che assumono.

permettendo anche la presenza di diversi gameobject che possono condividere component identici ma che assumono valori differenti nelle sue proprietà. Questo permette così il verificarsi di comportamenti e risposte diverse per ciascun gameobject.

I componenti presenti in Unity sono diversi e con finalità differenti tra loro a seconda che si voglia modificare o controllare aspetti legati alla fisica, alla visualizzazione o al

comportamento di un GameObject.

Tra tutti quelli esistenti, quello di cui bisogna avere conoscenza certa è il Transform, componente fondamentale perché determina la posizione di un GameObject nella scena attraverso il controllo della sua posizione, rotazione e scala.

Oltre alle conoscenze dei concetti base di Unity3D è bene sapere come questo ambiente di sviluppo è organizzato, in modo da sapere cosa ciascuna delle aree delle interfacce

visualizza e permette di fare.

A livello generale le sezioni più importanti e comunemente usate all’interno dell’editor sono (Fig. 75):

● scene view, viene mostrata in tempo reale la scena composta da gameobject 2D e 3D;

● game view, visualizza l’anteprima e il compiersi dell’esperienza virtuale agli utenti e dipende dalla principale telecamera attiva;

● hierarchy view, questa area mostra l’elenco di tutti gli elementi che compongono la scena corrente in maniera organizzata secondo il loro grado parenting con altri GO; ● project view, include le risorse presenti nella cartella di lavoro come i modelli, i

materiali, le scene, gli script, le animazioni, i suoni, texture, ecc;

● inspector view, mostra le informazioni relative al GameObject selezionato all'interno della scene view o della hierarchy;

● la console, dove sono riportati i messaggi di errore e di debug dell’applicazione

Un elemento che va descritto tra i tanti presenti all’interno di Unity è quello del Canvas, elemento che viene inserito dalla versione 4.6 beta e che rientra in una serie di

aggiornamenti di Unity3D fatti per mettere a disposizione degli sviluppatori un insieme di strumenti molto flessibili per la realizzazione di interfacce utente all’interno dei progetti interattivi.

Questo strumento è il contenitore dei GO che compongono l’interfaccia utente, ed è in pratica costituito da un GameObject con component Canvas e altri GO all’interno di esso che vanno a rappresentare pulsanti, testi, immagine e altro ancora.

La caratteristica principale di questo strumento è quella di possedere tre differenti modalità di rendering che definiscono il comportamento di questo oggetto all’interno dell’applicazione:

● Screen Space – Overlay: in questa modalità di render il Canvas viene

automaticamente posizionato nella parte superiore della scena. Gli elementi UI saranno quindi visualizzati davanti a qualunque oggetto presente nella scena. ● Screen Space – Camera: modalità simile alla precedente se non per il fatto che in

questo caso è possibile regolare la distanza con gli elementi UI mediante la scelta di una videocamera. É possibile quindi selezionare per quale delle videocamere presenti nella scena devono essere rispettati i differenti valori per la corretta visualizzazione. Se l’utente volesse ubicare elementi dell’interfaccia ad esempio dietro un GameObject presente in scena, con questa modalità è possibile farlo. ● World Space: il Canvas si comporta come un qualunque oggetto nella scena, infatti

ha una posizione, orientazione e dimensione precisa nello spazio tridimensionale. La conoscenza di questi aspetti principali permette un primo approccio con quello che è Unity3D, in modo da poter cercare di sviluppare artefatti con differenti modalità di interazione e differenti modalità di pubblicazione.

In mercato esistono molti competitor di Unity3D, tra i quali possiamo citare Unreal Engine e CryEngine, ma Unity3D porta in dote con sé alcune caratteristiche di versatilità e potenziale che lo rendono un valido strumento al servizio di professionisti e ricercatori nel campo dell’interazione.