studente: banovaz diego trieste, 15/12/2008aa: 2008/2009

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

Upload: maddalena-fantoni

Post on 02-May-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

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

Studente: Banovaz Diego

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

Page 2: Studente: Banovaz Diego Trieste, 15/12/2008AA: 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.

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

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.

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

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:

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

WARSOW

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

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

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

XII

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

Immagine Prima di ogni passaggio di tipo grafico

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

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.

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

Immagine senza le ombre e con massima illuminazione.

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

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:

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

Applicando le ombre ottenute dalla texture

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

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.

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

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 */

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

Effetto Finale

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

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.

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

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.

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

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.

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

The Legend of Zelda:The Wind Waker

(Senza outline Render per scelta dei sviluppatori)

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

Team Fortress 2

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

XII

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

Dragonball Z