Lezione 1 - INTRODUZIONE AL 3DS MAX

Questa guida è da considerarsi come "accessorio" a completamento della guida C# XNA da Zero ed è orientata alla modellazione, la texturizzazione e l'animazione di oggetti destinati ai videogiochi 3D.
Pur essendo chiari gli obbiettivi di questa guida, la teoria e gli esempi sulla modellazione saranno comunque validi indipendentemente dall'uso finale dei modelli creati.
Come la guida sulla programmazione XNA, anche questo tutorial è mirato a chi parte da zero, ovvero a chi non ha nessuna conoscenza della modellazione grafica, con nessun tipo di programma. Ho infatti creato anche un pagina che riassume i termini più usati in questo campo. Una specie di "leggenda" di termini o se vogliamo, un dizionario 3DMax/Italiano :).
Pur partendo da zero non potremmo esaminare tutte le potenzialità di questo programma ma ci concentreremo solo sugli strumenti necessari alla modellazione di personaggi e oggetti adatti ad un videogioco.
Andremo dunque ad esaminare il significato di parole come renderizzare, texturizzare ecc.. termini che, chiunque abbia un minimo di esperienza nel campo della grafica 3D, già conoscerà perfettamente. Dunque questa guida non esporrà nulla di nuovo per chi già è un abile modellatore.

NEW 15/03/2017:

Ora puoi seguire lo sviluppo di un gioco e fare domande specifiche sullo sviluppo dei videogiochi direttamente a WILEz e ai programatori/modellatori/grafici di Star Shift!

Siamo su Twitch all'indirizzo: https://www.twitch.tv/artistic_minds

Se hai domande o problemi sulla programmazione del tuo gioco, puoi chiedere aiuto ai membri del team degli Artistic Minds che saranno sempre disponibili ad insegnare i trucchi del mestiere ed aiutare chiunque abbia voglia di imparare.
Potrai fare domande sulle questioni che non ti sono chiare e su tutto ciò che riguarda lo sviluppo dei videogiochi, direttamente nella chat del canale in tempo reale e allo stesso tempo potrai assistere allo sviluppo del gioco dal vivo, sotto ogni punto di vista, dalla programmazione alla modellazione 3D di oggetti/personaggi per il gioco.
Segui il canale!

 

 

StarShift

StarShift


STAR SHIFT
nasce come erede delle grandi simulazioni spazili del passato, con una grafica di ultima generazioni, battaglie incessanti, commercio di risorse ed infinite opportunità.
Un univeso vivo e pulsante, migliaia di missioni da compiere, misteri da scoprire, l'ignoto da esplorare e perchè no, soldi da guadagnare. Ma il vero cuore punsante di questa esperienza saranno le battaglie di cui il giocatore sarà protagonista.
Vivi una storia unica, segui le missioni a te assegnate o cerca lavori alternativi, commercia e migliora le tua navi per scalare le classifiche on-line e diventare il miglior pilota dell'unverso.

STAR SHIF è tutt'ora in sviluppo e potrai trovare maggiorni informazioni sul sito ufficiale degli Artistic-Minds.

Inoltre puoi seguire lo sviluppo del gioco su Twitch: https://www.twitch.tv/artistic_minds

Se in passato avete usufruito delle mie guide o se volete semplicemente aiutare un team italiano che sta cercando di emergere, vi invito a visitare la nostra pagina facebook e cliccare su "mi piace".
Ringrazio sin da ora chiunque ci aiuti a divulgare il nostro progetto, crei links alla pagina ufficiale del gioco o semplicemente ne parli agli amici. Abbiamo bisogno del supporto di chiunque possa darci una mano.
Perchè è inutile avere un buon prodotto se nessuno lo conosce.

GRAZIE!


Per imparare ad usare il 3DS Max procedendo per gradi, verremo a conoscenza di termini quali RealTime, Low-Poly, Hi-Poly, Terxtures, Rendering, Prerendering, Edge ed altri. Molti di voi conosceranno già a dovere tali termini ma come detto, questa guida è dedicata a chi parte completamente da zero.
Negli esempi di questo tutorial utilizzerò la versione 2010 del Max in lingua inglese. Tutte le nozioni spiegate saranno comunque testabili con qualsiasi versione del Max poiché dalla versione 6 in poi le differenze si annoverano solo su strumenti che non utilizzeremo.

IL 3DS MAX
Nel campo della modellazione 3D esistono molti programmi di ottima qualità e le questioni teoriche di cui parleremo saranno assimilabili a prescindere dal programma utilizzato.
Tra i più potenti programmi per la modellazione possiamo trovare il 3DS Max, Maya, Lightwave e altri di pari qualità.
Il 3D Studio Max (chiamato anche 3DS Max o solo Max), giunto alla versione 2010 è sicuramente il programma più diffuso e del quale in rete si trovano più risorse, guide, plug-in e materiale in generale.
Il Max è stato usato anche nella creazione di moltissimi films, tra i quali Jurassik Park, X-man, Minority Reporter, Il Signore degli Anelli, Gli Incredibili, Star Wars Ep3, 2012 e moltissimi altri.
Anche la lista dei videogiochi è particolarmente lunga e annovera titoli come Fallout 3, Half Life, tutti i GTA, Oblivion, Halo, Warcraft 3 e centinaia d'altri.
Tale programma è da definirsi "professionale" e di conseguenza si tratta di un'applicazione molto costosa. E' possibile scaricare la versione di prova per 30 giorni dal sito della Autodesk.
In alternativa esistono alcuni programmi gratuiti per la modellazione ma nessuno è lontanamente paragonabile alla qualità del Max.
Il 3D Studio Max è stato sviluppato come successore del 3D Studio per DOS, giunto fino alla versione R4 per poi passare a Windows con il suffisso "Max" cambiando radicalmente metodologia di modellazione grazie al "potenziale" di windows.




Inziamo
Come prima cosa.. apriamo il programma!
Diamo uno sguardo a cosa ci viene proposto...


Max aperto

Un bel po' di cose, non c'è che dire. Un sacco di menu e pulsantini che invocano il nostro click.
Spaventati? Non dovreste, siete di fronte ad uno dei più potenti e intuitivi programmi che esistano. Avete fra le mani un potenziale grafico illimitato, noi però ci limiteremo un bel po' perché per parlare di tutto ciò che offre questo programma sarebbero necessarie centinaia di lezioni.
Come detto andremo ad esplorare solo qualcuno degli argomenti che interessano la grafica per i videogiochi e poco altro. Questo però, in modo molto dettagliato.

Come noteremo subito la finestra principale è divisa in quattro aree. Queste sono le viewport o viste della nostra scena. Sono in pratica diverse visuali (dall'alto, di fronte, da sinistra e in prospettiva) da cui viene inquadrato il mondo 3D in cui andremo a lavorare, all'inizio è vuoto (ci sarà solo una griglia di riferimento) ma in seguito sarà in queste aree che vedremo i modelli su cui stiamo lavorando. Le viewport sono le nostre aree di lavoro in cui faremo tutte le creazioni e modifiche di un modello tridimensionale. In seguito vedremo che queste visuali saranno completamente customizzabili a nostro piacimento.
Le sei icone in basso a sinistra saranno quelle con cui gestiremo le visuali. Le vedremo in dettaglio tra poco.

Vediamo prima di tutto di capire uno dei termini più importanti del 3D: Rendering ovvero, Renderizzare.

Renderizzare
Per capire al volo cosa si intende con questo termine, potremmo paragonare la renderizzazione allo sviluppo di una fotografia.
Quando si scatta una foto, scegliamo l'angolazione, il soggetto, la luce giusta e quant'altro... Potremmo paragonare questa prima procedura al nostro lavoro di modellazione. Il vero momento di creazione dove decidiamo come fare le cose, in attesa dell'effetto finale, di schiacciare il click.
Quando schiacceremo il click della nostra macchina fotografica avremo impresso la scena sul rullino e vedremo l'effetto finale, si andrà a sviluppare la foto per vedere il risultato del lavoro fatto. Questo lo potremmo paragonare alla renderizzazione della nostra scena. La visualizzazione del nostro lavoro di modellazione.
Infatti, finchè ci troveremo nella schermata posta poco sopra, staremo ancora creando la scena, per vedere l'effetto delle nostre operazioni, dovremo fare il rendering.

Renderizzare significa in definitiva, calcolare l'effetto visivo del nostro lavoro di modellazione, è l'operazione di calcolo (che compie il processore) dei riflessi, delle luci sui diversi materiali ecc.. che ci mostrerà il risultato.
Per effettuare il rendering e vedere l'opera delle nostro lavoro, dovremo cliccare sull'icona della teiera in alto oppure andare sul menu Rendering e scegliere Render.

rendering rendering



Effettuando questa operazione il 3D studio ci mostrerà l'effetto finale, renderizzata con il motore di base del 3DS Max.
A dire il vero, nella creazione di modelli per l'uso di videogame, l'effetto finale che vedremo con il rendering del Max non sarà quello che avremo nel gioco. Questo perché il nostro gioco userà il suo sistema di renderizzazione, il suo motore di rendering, con parametri, shader ed effetti differenti da quelli del Max. Non sarà dunque il 3DS Max a renderizzare i nostri modelli ma l'engine del nostro gioco. Dunque in realtà il rendering con il Max non ci servirà a nulla e sarà un'operazione praticamente inutile, almeno per i modelli low-poly.
La renderizzazione del Max si usa per le scene in hi-poly come per esempio può essere un filmato d'introduzione o un immagine di sfondo.


Realtime e grafica Low-poly
Come forse già saprete, i modelli dedicati ai videogiochi devono avere delle limitazioni di poligoni.
Se avete visto films in computer grafica, tipo Shrek, Madagascar e compagnia, avrete notato una strabiliante qualità grafica, ben lontana dalla grafica dei videogiochi.
Se vi siete chiesti perché non fanno i giochi con quella grafica, allora non conoscete la differenza tra la grafica RealTime e la grafica Prerenderizzata ovvero grafica low-poly e grafica hi-poly.
Per low-poly si intende grafica con basso numero di triangoli. Low=basso, poly=poligoni ovvero, grafica da renderizzare in tempo-reale, RealTime.
Impareremo che finché avremo nella scena pochi oggetti e pochi dettagli, la renderizzazione sarà velocissima, quasi istantanea, non ci sarà nessuna attesa tra il nostro click e la visualizzazione del nostro lavoro.
Quando però la nostra scena conterrà molti oggetti, noteremo uno sforzo maggiore e una lunga attesa prima che ci venga visualizzata l'immagine finale nel rendering del Max. Durante quella attesa, il programma sta renderizzando.

Maggiore è il numero di oggetti e maggiore sarà l'attesa.
La parola oggetti però, in questo caso, non è corretta, dovremmo parlare di triangoli, ovvero: maggiore è il numero di triangoli di una scena e più lunghi sanno i tempi di rendering. Di conseguenza, maggiori dettagli avremo in una scena e più sarà difficile poterla muovere velocemente in tempo reale in un videogioco, in Realtime.

Quando ci muoviamo all'interno di un mondo 3D in un videogioco, l'engine del gioco sta renderizzando la scena ad ogni fotogramma. Si chiama appunto Realtime, tempo reale, perché durante il gioco avvengono all'incirca 30 renderizzazioni al secondo! Possiamo subito capire che evitare scene con troppi triangoli è alla base della modellazione destinata al Realtime.
E' da considerare che un engine di un gioco è di norma molto più veloce del rendering del Max perché quest'ultimo tande ovviamente a spingere sull'effetto grafico e non sulla velocità di renderizzazione.
Questa è sostanzialmente la differenza tra la grafica low-poly per il realtime e la grafica hi-poly (alto numero di triangoli) che si utilizza nei filmati prerenderizzati.

  La grafica prerenderizzata non soffre di limitazioni perché essa viene "impressa" su un filmato, viene dunque "stampata" e salvata su un video e mai più renderizzata a differenza dei giochi, che renderizzano la scena decine di volte al secondo. robo


Nel momento della visualizzazione del filmato prerenderizzato non verranno fatti calcoli perchè appunto è stato pre-renderizzato cioè renderizzato in precedenza.
Si tratterà solo di far scorrere dei fotogrammi che saranno fluidi a prescindere dal numero di poligoni e dettagli della scena perché si tratta di una sequenza di immagini esattamente come un qualunque film.
Per questo motivo i films della Pixar/Dreamworks e qualunque filmato prerenderizzato, possono essere estremamente dettagliati, si tratta di video e non viene fatto nessun calcolo durante la loro visualizzazione.

Riassumendo, quando andremo a creare modelli da far girare in un videogioco, dovremmo sempre tenere conto del numero di triangoli cencando di limitarli al minimo indispensabile.
Di conseguenza si capisce che, a dispetto dell'aspetto finale, creare grafica low-poly è ben più complicato che creare grafica in hi-poly dove non si hanno limiti.

robo Un modellatore di geometrie per videogiochi dovrà sempre trovare un giusto compromesso tra "dettaglio del modello" e "leggerezza del modello".  




Numero di poligoni
Se vi state chiedendo quanti poligoni (sarebbe più corretto parlare di triangoli) dovrebbe avere un singolo modello, sappiate che la risposta esatta, che valga in ogni caso, non esiste.
Dipende molto dall'engine del gioco e dal tipo di gioco stesso. Se per esempio di tratta di gioco dove ci saranno centinaia di modelli per lo schermo, allora ognuno di quei modelli dovrà avere un basso numero di poligoni. Viceversa, se si tratta di un gioco con pochi modelli contemporaneamente su schermo, tali modelli potranno essere più dettagliati. Ciò che importa è quanti triangoli saranno presenti contemporaneamente sullo schermo durante la renderizzazione di una scena. A questo proposito dovremo tenere conto anche dalla distanza da cui saranno visualizzati i modelli perché sprecare tanti dettagli su un modello che sarà sempre posizionato lontano dalla telecamera è ovviamente sconsigliato, meglio dettagliare i modelli solo se certi dettagli saranno ben visibili. Per esempio, su un gioco tipo RTS (strategico in tempo reale) dove non c'è la possibilità di zommare su personaggi, essi potranno essere anche poco dettagliati perché visti sempre ad una distanza dalla quale molti dettagli non sarebbero visibili ma peseranno comunque sul gioco.
Ciò che influisce di più sul numero di triangoli da utilizzare sui nostri modelli è sicuramente l'engine del gioco. Anche gli shader possono appensantire molto la scena e se l'engine ne fa un uso pesante, bisognerà sacrificare il numero di poligoni per ogni modello.
Indicativamente, un modello, per esempio su un gioco in prima persona che dovrà girare su un PC di media potenza dei giorni nostri, potrà aggirarsi sui 3000/5000 poligoni. Questo però è un dato decisamente relativo. Per alcuni engine (programmati non benissimo) anche 2000 poligoni sono troppi. Ma se non si fa un uso esasperato di effetti grafici pesanti, il numero di poligoni potrebbe anche raddoppiare o addirittura triplicare. Con 5000 poligoni si possono avere degli ottimi risultati, sono più che sufficienti per rendere un ottimo dettaglio su un modello che può essere un tipico personaggio di un FPS.
Riassumendo, il numero di triangoli per un modello va scelto in base alle richieste del programmatore e di norma non potrà mai salire al di sopra i 10.000 poligoni, numero da cui si può iniziare a parlare di"hi-poly".
Per vedere quanti triangoli abbiamo in una scena del Max ci basterà premere il tasto 7 della tastiera così da visualizzare alcune statistiche della scena tra cui il numero di triangoli ( vengono elencati con il nome di "Poly" ma ciò che vedrete contati sono i triangoli).

Hi e Low Poly

Nellimmagine quì sopra abbiamo lo stesso "personaggio" in due versioni, in hi-poly e in low poly.
Si nota subito l'enorme quantità di poligoni usata per il modello high poly, quasi un milione, tanto che la rete di poligoni risulta così fitta che quasi essi non si distinguono l'uno dall'altro.
Nel modello low-poly invece i poligoni si distinguono benissimo, un modello con 2.800 triangoli può essere usato tranquillamnente in un gioco.