Prima di addentrarci ulteriormente nel mondo di Unity, trovo sia davvero utile fornirti delle idee di base che ti aiuteranno non solo durante lo sviluppo di un videogioco, ma in genere in qualsiasi approccio alla computer grafica. D’altronde senza delle robuste fondamenta non si può costruire un alto grattacielo che possa durare nel tempo, no? Quindi, prima di vedere cosa sono le trasformazioni e come si gestiscono in Unity, esamineremo alcuni concetti fondamentali nel mondo della computer grafica!

Attenzione! Probabilmente conoscerai già molti dei concetti che ti sto per presentare. Probabilmente avrai già studiato queste cose a scuola (sempre che tu non fossi troppo occupato a dormire durante le ore di matematica, furbacchione!) ma questo è un corso base, e in quanto tale deve essere accessibile a tutti, senza alcuna barriera all’ingresso. Quindi, se le cose che seguiranno le conosci già, bene così, ma credo che un ripassino generale non faccia male a nessuno! Se invece per te sono concetti totalmente nuovi o dimenticati (magari sì, li hai studiati a scuola nel lontano ’52…), allora troverai ciò di cui avrai bisogno!

Il poligono: il Carbonio della computer grafica!

Un poligono altro non è che una superficie piana delimitata da una linea spezzata chiusa. Esso è formato da angoli, lati ed una faccia, e così come il Carbonio è l’elemento base della vita sulla Terra, il poligono è la base della vita nel mondo virtuale! Infatti qualsiasi oggetto 3D (che da ora in poi chameremo mesh) sarà formato da poligoni.

504

501
Sono tutti poligoni… tranne l’ultimo, che è una linea spezzata aperta!

Esistono infiniti poligoni, ma non tutti sono poligoni buoni per la computer grafica! Poligoni complessi possono generare fastidiosi artefatti grafici e creare problemi relativi alla topologia della mesh. Utilizzare poligoni semplici è l’approccio migliore alla modellazione, e per questo motivo i modellatori si affidano quasi esclusivamente al quadrilatero e al triangolo!

Unity tuttavia (così come qualsiasi game engine) è schizzinoso: egli accetta solo ed esclusivamente triangoli, e quando una mesh viene importata al suo interno, tutti i suoi poligoni vengono suddivisi in triangoli!

Gli stessi poligoni di prima... scomposti in triangoli!
Gli stessi poligoni di prima… scomposti in triangoli!

La ragione sta nel fatto che una scheda video riesce a lavorare solo con i triangoli, che oltre ad essere i poligoni “base” in cui qualsiasi poligono può essere suddiviso, sono anche quelli più facilmente gestibili dal punto di vista computazionale.
In parole povere, il triangolo è il re incontrastato del videogioco!

502
Un piano, una sfera ed un cubo: tutti abilmente scomposti in piccoli triangoli da Unity!

Normale ad un poligono

Mi sembra nomale che ogni poligono abbia una normale, no?…
Tralasciando tristi giochi di parole che in altri tempi mi avrebbero garantito la morte per impiccagione, devi sapere che la normale di un poligono è un vettore perpendicolare al poligono stesso. Detta in un linguaggio più comprensibile, una normale altro non è che una freccia uscente dalla faccia del nostro poligono!

505
In azzurro: le normali ai poligoni di una sfera!

La normale è fondamentale perchè fornisce al computer informazioni riguardanti l’orientamento del poligono nello spazio, permettendogli così di eseguire i calcoli relativi alla luce che lo colpisce, o di definire quale faccia del poligono è visibile!

Torneremo presto a parlare di normali, quindi non dimenticartene!

Le coordinate cartesiane nel piano e nello spazio

Tutti, nella nostra vita, abbiamo giocato almeno una volta a battaglia navale. Dopo una noiosissima cena natalizia coi parenti o a scuola, durante l’ora di religione, tutti abbiamo provato l’ebbrezza di pronunciare la frase “Colpito e affondato!”.

Non ci metteremo a sviluppare una variante di battaglia navale con Unity, tuttavia ci sarà molto utile ripescare i concetti alla base del gioco. Per verificare se il nemico ha posizionato una nave (o un incrociatore spaziale nella mia variante preferita del gioco!) in una data casella, occorre fornire delle coordinate che si riferiscono ad essa. Ecco ciò che ci serve sapere! Nella battaglia navale si utilizza un sistema di coordinate formato da una lettera ed un numero intero (B9, colpito!), e non è poi tanto diverso dal sistema cartesiano che ci interessa conoscere.

Un piano cartesiano è composto da due rette ortogonali (cioè due rette che formano angoli di 90° fra loro) che opportunamente numerate, ci permettono di localizzare qualisasi punto sul piano stesso. Solitamente le due rette vengono identificate con le lettere X e Y e la loro numerazione avviene partendo dal punto in cui esse si incrociano, che viene chiamato origine ed ha, nemmeno a dirlo, coordinate X=0 e Y=0. Per esprimere delle coordinate cartesiane solitamente si usa mettere fra parentesi il valore relativo alla retta X seguito da quello della retta Y, separati fra loro da una virgola. Ad esempio: il punto (4, 2) Indica un punto di coordinate X=4 e Y=2.

506
In rosso: l’origine (0,0). In blu: Il punto di coordinate (5, 2). In verde: Il punto di coordinate (-4, 3).

Intuitivamente un piano cartesiano lavora in due sole dimensioni: altezza e larghezza. Il mondo che ci circonda è tuttavia (così come la scena di Unity e buona parte dei videogiochi odierni!) un mondo tridimensionale, dunque è necessario trasformare il nostro piano cartesiano in uno spazio cartesiano!

Uno spazio cartesiano si comporta esattamente come un piano cartesiano, se non per una piccola differenza: agli assi X e Y si aggiunge un terzo asse Z perpendicolare agli altri due e relativo alla profondità. Ne segue dunque che la coppia di valori (X, Y) che descriveva la posizione di un punto in un piano si trasforma in una terna di valori (X, Y, Z)!

507

Le trasformazioni nello spazio

Bene, è arrivato il momento di riprendere in mano Unity!

Come avrai sicuramente notato all’interno dell’interfaccia di Unity, sopra l’Hierarchy Panel si trova un riquadro con dei pulsanti che non abbiamo ancora esaminato. Si tratta dei pulsanti responsabili delle trasformazioni nello spazio! Andiamo quindi a vederli brevemente:

I pulsanti per le trasformazioni in tutto il loro fascino esotico!
I pulsanti per le trasformazioni in tutto il loro fascino esotico!

Il primo pulsante (quello a forma di mano) non farà altro che abilitare il “camera panning” o movimento della telecamera. Come abbiamo visto nella scorsa lezione, la stessa funzione può essere attivata tramite il pulsante centrale del mouse.

Traslazione

509La prima delle nostre trasformazioni, la traslazione, ha un nome che potrebbe incutere timore. In realtà altro non è che uno spostamento dell’oggetto nell spazio! Per effettuare una traslazione basta selezionare la relativa icona (che puoi vedere qui di fianco) e trascinare le frecce che vedrai uscire dall’oggetto selezionato. (Sì, lo abbiamo già fatto nella lezione precedente!).

Rotazione

510Il nome è tutto programma: Premi il pulsante e vedrai che l’oggetto selezionato verrà circondato da una sorta di gabbia circolare. Interagendo con essa potrai applicare una rotazione all’oggetto. Serve aggiungere altro?

Scala

511Questi due pulsanti ti permetteranno di cambiare le dimensioni dell’oggetto selezionato! Sono molto simili fra loro, e se il primo pulsante ti sarà più utile quando lavorerai con oggetti tridimensionali, il secondo sarà essenziale quando ti occuperai degli oggetti bidimensionali e dei componenti dell’interfaccia grafica!

Gif15
Una cara, vecchia, simpatica GIF ci mostra il funzionamento delle varie trasformazioni!

Attenzione! Possibilmente l’avrai già notato, ma è possibile eseguire tutte le trasformazioni che abbiamo visto modificando i parametri del pannello “Transform” dall’inspector panel dei vari oggetti. Ciò ti assicurerà una maggiore precisione e sarà utilissimo in molte situazioni in cui la precisione è essenziale!

Il pannello transform. Lo trovi nella stragrande maggioranza degli oggetti, e sarà un tuo preziosissimo alleato!
Il pannello transform. Lo trovi nella stragrande maggioranza degli oggetti, e sarà un tuo preziosissimo alleato!

Gli ultimi due pulsanti ci permettono rispettivamente di cambiare il punto di riferimento della rotazione degli oggetti e il tipo di coordinate da utilizzare.

5gif1
Il pivot è un punto che può essere stabilito durante la modellazione di un oggetto. Non è possibile manipolarlo direttamente in Unity,  anche se possiamo utilizzarlo come centro di rotazione!

 

Gif16
Un oggetto possiede delle coordinate intrinseche, dette anche “coordinate locali”. Quando ruotiamo un oggetto esse ruotano con lui,  mentre le coordinate globali rimangono sempre fisse! Utilizza le coordinate locali o globali a tuo piacimento, possono aiutarti a   risparmiare una marea di tempo!

Riguardo le trasformaizoni non c’è altro da dire, quindi la nostra lezione termina qui. Con essa termina anche il primo modulo del corso! Se sei registrato al sito troverai poco più in basso degli esercizi di riepilogo, utili per verificare le conoscenze che hai ottenuto in queste prime lezioni (Se non sei registrato e vuoi accedere agli esercizi clicca qui!) Nella prossima lezione faremo luce sui punti più oscuri di Unity. Letteralmente, perchè parleremo di luci! Impareremo a conoscerne le varie tipologie e a tirar fuori il meglio da ognuna di esse!

Back to: Unity Bootstrap: Corso gratuito sviluppo giochi con Unity 3D. Le basi di Unity dalla A alla Z > Unity Bootstrap Lezioni