Studente: Banovaz Diego Trieste, 15/12/2008AA: 2008/2009.

Post on 02-May-2015

212 views 0 download

transcript

Studente: Banovaz Diego

Trieste, 15/12/2008 AA: 2008/2009

Oggetto della PresentazioneSpiegare 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 luceElemento 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 ombreCi 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 RenderingQuesto 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: Sobelfloat 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 RenderingPer 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 MethodsIl 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 sviluppatori)

Team Fortress 2

XII

Dragonball Z