Trieste, 15/12/2008 Studente: Banovaz Diego AA: 2008/2009 Oggetto della Presentazione Spiegare il perché si sente la necessità di avere uno strumento come il Cel Shading; Spiegare che cos’è il Cel Shading; Vederne le caratteristiche; Vederne le diverse implementazioni e capirne la motivazione; Vedere un piccolo programma che sfrutti le librerie OpenGL per mostrarci questa tecnica in azione. Perché nasce il Cel Shading? La grafica digitale non deve esser soggetta a vincoli e quindi tutte le “forme d’arte” devono esser rappresentate e rappresentabili. In questo caso il Cel Shading serve a poter creare sul calcolatore dei modelli (tridimensionali e non) che esteticamente appaiano come “disegnati” a mano, simili a dei fumetti. È ovvio pensare che una tecnica di questo tipo può essere sfruttata in ambito video ludico. Cos’è il Cel Shading? Il Cel Shading (spesso chiamato anche toon shading) è una tecnica che permette di creare dei modelli che assomiglino a dei disegni. In poche parole vogliamo fare il seguente passaggio: WARSOW Come ottenere il risultato? La tecnica principale di cel shading la si può dividere in due parti: 1- Il cel shading vero e proprio, ossia il rendering della scena con ombre nette 2- L'outline rendering, ossia il rendering dei contorni XII Immagine Prima di ogni passaggio di tipo grafico Il primo passo: La luce Elemento fondamentale su cui lavora il cel shading è la luce. Un’immagine disegnata si differisce da una “realistica” o renderizzata in maniera standard soprattutto per la luce. Il primo passo è quello di non considerare le ombre che si creano sul modello: in un disegno solitamente non sono delle variazioni “continue”, ma sono fatte in maniera molto netta. Immagine senza le ombre e con massima illuminazione. Primo passo: le ombre Ci sono molti modi per ottenere le ombreggiature, adesso vediamo alla lontana il Phong. Per prima cosa viene ottenuto il valore di Diffuse tramite il DotProduct tra la direzione della luce e un valore che varia tra -1 e 1. Normalizzandolo tra 0 e 1 possiamo utilizzarlo come valore di coordinata di una texture che può essere simile a questa: Applicando le ombre ottenute dalla texture Secondo Passo: Outline Rendering Questo passo è “opzionale”, il Cel Shading di per sé finisce con la prima parte. Questa procedura serve a disegnare i bordi del disegno. Per disegnarle dobbiamo sfruttare un filtro di tipo Sobel che ci permetterà di tracciare delle righe nere dove questo noterà una forte differenza di colore. Nello specifico: un punto dove tracciare una linea nera è dove un corpo ha degli spigoli ed uno spigolo è proprio un punto in cui le normali cambiano direzione rapidamente. L'altro punto è invece quello in cui c'è differenza di profondità e per quello si usa la distanza. Secondo Passo: Sobel float d=1.0f/1024.0f /* Metti in aa – hh gli 8 valori della texture a distanza d*/ delX = ((cc + (2 * ee) + hh) - (aa + (2 * dd) + ff)); delY = ((ff + (2 * gg) + hh) - (aa + (2 * bb) + cc)); float4 var = abs(delX) + abs(delY); /* Vincolo per la soglia */ float C= var.x<0.4F; /* Disegna la riga */ Effetto Finale Un’altra via per l’outline Rendering Per ottenere “le righe” dell’immagine si può procedere anche in questo modo. Per prima cosa effettuiamo i passaggi che portano l’immagine ad avere le ombre corrette. Poi, creiamo un altro oggetto uguale al primo di dimensione lievemente maggiore e con un’unica texture nera rivolta verso il centro delle figura stessa. In questo modo noi vediamo il nostro oggetto principale contornato di nero, esattamente come con il filtro Sobel. Confronto tra Outline Rendering Methods Il primo metodo ha i seguenti vantaggi: - È più leggero del secondo - È più preciso Il secondo metodo dal canto suo ha il vantaggio di essere più “intuitivo”, anche se più pesante. Realizzare con questa specifica permette una programmazione più semplice e immediata. Conclusioni: Il cel shading è una tecnica molto pesante, ma permette di ottenere un effetto molto gradevole e molto simile a quello che abbiamo guardando un cartone animato. Se fino a qualche tempo fa la tecnica doveva venir scartata a priori in quanto tanto più pesante, oggigiorno viene utilizzata molto in quanto le schede video attuali hanno delle caratteristiche davvero spaventose. Come si potrà vedere nelle immagini che seguono, è capace di regalare immagini di grande effetto. The Legend of Zelda: The Wind Waker (Senza outline Render per scelta dei sviluppat ori) Team Fortress 2 XII Dragonball Z