Survol de techniques de rendu expressif (ou rendu non-photoréaliste NonPhotorealisticRendering) •Introduction •La représentation réaliste et non-réaliste dans l’art et dans l’infographie •Survol des techniques de rendu expressif existantes INTRODUCTION • transformation de la réalité pour des raisons d’ordre : • esthétique : certains styles artistiques (ou techniques) paraissent visuellement plus plaisants que d’autres; • technique : limitations de certaines techniques de reproduction comme par exemple la gravure, le dessin au crayon ou la peinture à l’huile; • fonctionnel : pour focaliser l’attention du spectateur sur la partie qui mérite plus d’attention que les autres, pour atteindre une meilleure clarté, ou pour mieux illustrer un trait particulier de l’objet représenté; • historique : c’est souvent la tradition qui dicte le style approprié; • philosophique : l’artiste représente souvent le monde de son imagination, plutôt que le monde tel qu’il est perçu par l’artiste. INTRODUCTION • Rendu stylisé dans des buts de communication ou de personnalisation. Par exemple, • le rendu schématique dans des domaines techniques, • le rendu dans le style bande dessinée utilisé, par exemple, dans les jeux, • l'ajout d'effets visuels sur un rendu photoréaliste (effets de coloration, de contourage, • de relief...). • Il s'agit d'un sujet vaste dont nous ne traiterons qu'une partie. • Nous nous focaliserons essentiellement sur les effets qui peuvent se traiter simplement • par programmation. EXEMPLE Exemple de rendu non photo-réaliste: par par à-plats (Tone Shading) avec texture et contour par halo et par angle de vue avec la surface. Méthode • Projections – Perspectives, supports de projection, projection topologique • Abstraction – Silhouettes, contours suggestifs, crêtes et vallées • Marques – Traits, couleurs • Attributs – Cartoon, Gooch, ….. • Cohérence temporelle • Spatial – 3D vers 2D • Primitives – Points – Lignes – Regions • Marques – Trace de l’outil • Attributs – Lien entre tout D’après Joelle Thollot Projections (J Levene) • Forme de la surface de projection (objectif + film) • Pptés de convergence des lignes de vue • Courbure de lignes de vue • Multiples vues Ex : Projection perspective Surface de projection plane Projecteurs rectilignes Convergence au centre de projection Forme de la surface de projection C : centre de mise à l’échelle (2D) V=(Px-Cx,Py-Cy) : donne P par rapport à C f : 3 : fonction de taille (dépend de la distance) E : Œil S : projection de P sur surface dp= P-E : distance radiale de P / E ds= S-E : distanec radiale de S/E n scalaire = degré de divergence Forme de la surface de projection • • • • Carreau de Bezier bicubique z = f(a,b) mise à l’échelle de z=1 a=tan-1(x) et b=tan-1(y) Z= profondeur du point dans l’espace de l’œil. Le point sur la surface est calculé en trouvant où le vecteur (a,b) intersecte le plan z=f(a,b) b a Z=1 (x,y,z=(tan(a),tan(b),1) Exemples (J Levene) Projections topologiques • Géométrie : de chaque partie de l’objet dans sa position finale • Orientation : caméra et orientations d’assemblage • Groupements : labellisation de parties à regrouper selon contraintes fonctionnelles, sémantiques ou géométriques • Ordre : contraintes sur l’ordre d’assemblage (de la forme attacher partie Pi avant partie Pj Designing Effective Step-By-Step Assembly Instructions Maneesh Agrawala et al Designing Effective Step-By-Step Assembly Instructions Maneesh Agrawala et al Silhouette Différents types de contours traités par Saito et Takahashi (1990). SILHOUETTE • But du rendu de silhouette • Il s'agit soit d'imiter un style bande dessinée en contourant les objets soit d'améliorer la lisibilité d'une figure: – en traçant le contour des objets, – en traçant les frontières entre des zones différentes d'un objet, – en soulignant le relief en traçant les crêtes et les vallées. SILHOUETTE Rendu de silhouette par angle de vue d'une surface On colorie les zones pour lesquelles la vue est rasante et donc susceptibles de correspondre à une frontière entre une zone visible et une zone cachée. Cad |N.V| ≤ ℇ SILHOUETTE Calcul du rendu de silhouette par angle de vue d'une surface On calcule le produit scalaire du vecteur de vue et de la normale à la surface. On accède à une texture de seuillage en fonction de la valeur de ce produit scalaire: float3 silhouette = tex2D(bord, float2( saturate(NdotV) * .8 + 0.1 , 0.0)).rgb; On combine la couleur de bord avec la couleur de l'objet: C *= silhouette; Ou bien on attribue aux points des objets donnant un produit scalaire < eps une couleur de bord Si (N.V) < eps coul bord Sinon coul Modele(V,L,N) Fin {modèle diffus ou spéculaire} SILHOUETTE Rendu de silhouette par halo SILHOUETTE Construction du halo autour d'un maillage Le maillage expansé est construit en tout sommet M de normale n en prenant MM' = k n SILHOUETTE Contrôle de la taille du halo •On recherche la hauteur h entre deux points M et M' du plan z = z0 qui correspond à un pixel sur le plan de projection. Soit H, le nombre de pixels en hauteur: (top + bottom) / (H . near) = h / z0 donc h = (z0 / near) . ((top + bottom) / H) ESPACE IMAGE • Principe • • • • • • • Le traitement dans l'espace image consiste à enrichir le rendu à partir d'une sortie bitmap intermédiaire (et non directement sur le maillage). Exemples Recherche de contours à partir de différences de couleur entre des rendus d'objets. Recherche de contours à partir de cartes de normales (normal map): une sortie image encodant la direction de la normale en chaque pixel. Recherche de contours à partir de cartes de profondeurs (depth map): une sortie image encodant la distance à la caméra. Modification du rendu à partir de fonction de transfert sur une sortie image (flou, rendu sépia, seuillage...). ESPACE IMAGE La carte de profondeur (a) et les contours obtenus à partir de la carte de profondeur (b); la carte de normales (c) et les contours obtenus à partir de la carte de normales (d); les contours obtenus à partir de la carte de profondeur et la carte de normales (e) (Source : [Her98]). Contours suggestifs • Points – de la silhouette d’une vue voisine de la vue courante – pas en correspondance avec la silhouette de la vue courante • Points – où la courbure radiale (courbure normale dans la direction du vecteur de vue) s’annule – et où la dérivée de cette courbure dans la direction du vecteur de vue est positive Contours suggestifs • • • • • • Surface S Centre de perspective (camera) en c. Génératrice du contour = { pS / n(p). v(p) =0 } Contour = partie visible de la génératrice n(p) normal unitaire à la surface v vector de vue : v(p) = c-p. Contours suggestifs v est projeté sur le plan tangent w Plan radial : formé par p,n et w Son intersection avec S -> courbe radiale dont la courbure est k(p) Rappels Courbure d’une courbe : k(p) = inverse du rayon du cercle osculateur en p Courbure d’une surface S en p mesurée le long d’une courbe C appartenant à S et passant par p : En général C = S P où P est défini par p, n et d (arbitraire) dans le plan tangent de S en p courbure normale comprise entre les 2 courbures principales k1(p) et k2(p) calculées dans les directions de courbure principale. courbure radiale kr(p) = courbure normale dans la direction de w Contours suggestifs génératrice du contour suggestif = {p / kr = 0 et Dw kr >0} kr = 0 : ---- et ____ • • Pb : S doit être une surface différentiable (lisse). Pour un maillage on approxime la courbure en chaque sommet Crêtes et vallées • Rappel : – courbures principales : maximum (k1) et minimum (k2) de la courbure normale k. – Courbures Gaussienne K et moyenne H • K= k1k2 • H= ½ (k1+k2) • Crêtes = {p tq k1/ t1 =0 et 2k1/ t12<0 et k1>|k2} • Vallées = {p tq k1 / t2 =0 et 2k2/ t22>0 et k2<-|k1|} Crêtes et Vallées Estimation sur maillages : -approximation aux moindres carrés du maillage par un polynôme cubique estimé en chaque sommet + k-voisinage -calcul des dérivées sur le polynôme Fast and Robust Detection of Crest Lines on Meshes de Yoshizawa , Belyaev, Seidel Marques • Illustration – Traits – Hachures – Pointillés • Peinture - Couleur – Marques , à plats – Aquarelle Traits • • Noir et Blanc (encre de Chine, crayon, fusain, gravure) Une ligne = 1 ou plusieurs traits • => paramétrage de la ligne • triangle strip + texture Graftals Markosian et al Techniques de rendu inspirées par le dessin, la gravure, l’aquarelle et d’autres techniques artistiques Une série de textures cohérentes entre elles et représentant différents niveaux d’intensités est produite séparément. Pendant le rendu, la variante appropriée, indexée par le niveau d’intensité désiré, est choisie. Système de dessin à la plume (Pen-and-Ink) de Georges Winkenbach et David Salesin (1994) : avec (à gauche) et sans (à droite) indications sur le placement de texture. Techniques de rendu inspirées par le dessin, la gravure, l’aquarelle et d’autres techniques artistiques Système de dessin à la plume (Pen-and-Ink) de Georges Winkenbach et David Salesin (1996) appliqué aux surfaces paramétriques. HACHURES Hachures Rendre des hachures comme sur un tracé à la plume. Difficulté Éviter du flou et du mélange de hachures à des niveaux de résolution et à des niveaux de gris intermédiaires. Les mipmaps ne conviennent donc pas. Méthode On utilise des Tonal Art Maps qui sont des textures telles que les traits à un niveau d'opacité apparaissent dans les niveaux d'opacité supérieurs. HACHURES Exemple de rendu de hachures Emil Praun, Hugues Hoppe, Matthew Webb, Adam Finkelstein Real-Time Hatching. SIGGRAPH 2001, Computer Graphics Proceedings Peinture Couleur • Marques et à plats function paint(sourceImage,R1 ... Rn) { canvas := a new constant color image // paint the canvas for each brush radius Ri, from largest to smallest do { // apply Gaussian blur referenceImage = sourceImage * G(fs Ri) // paint a layer paintLayer(canvas, referenceImage, Ri) } return canvas } procedure paintLayer(canvas,referenceImage, R) { S := a new set of strokes, initially empty // create a pointwise difference image D := difference(canvas,referenceImage) grid := fg R for x=0 to imageWidth stepsize grid do for y=0 to imageHeight stepsize grid do { // sum the error near (x,y) M := the region (x-grid/2..x+grid/2, y-grid/2..y+grid/2) areaError := Si j M Dij / grid2 if (areaError > T) then { // find the largest error point (x1,y1) := arg max i j M , Di,j s :=makeStroke(R,x1,y1,referenceImage) add s to S } } paint all strokes in S on the canvas, in random order } function makeSplineStroke(x0,y0,R,refImage) { strokeColor = refImage.color(x0,y0) K = a new stroke with radius R and color strokeColor add point (x0,y0) to K (x,y) := (x0,y0) (lastDx,lastDy) := (0,0) for i=1 to maxStrokeLength do { if (i > minStrokeLength and |refImage.color(x,y)-canvas.color(x,y)|< |refImage.color(x,y)-strokeColor|) then return K // detect vanishing gradient if (refImage.gradientMag(x,y) == 0) then return K // get unit vector of gradient (gx,gy) := refImage.gradientDirection(x,y) // compute a normal direction (dx,dy) := (-gy, gx) // if necessary, reverse direction if (lastDx * dx + lastDy * dy < 0) then (dx,dy) := (-dx, -dy) // filter the stroke direction (dx,dy) :=fc*(dx,dy)+(1-fc)*(lastDx,lastDy) (dx,dy) := (dx,dy)/(dx2 + dy2)1/2 (x,y) := (x+R*dx, y+R*dy) (lastDx,lastDy) := (dx,dy) add the point (x,y) to K } return K } Peinture Couleur • Aquarelle Attributs • Rendu « cartoon » – Tone shading – Goosh TONE SHADING Rendu diffus par à-plats (Tone Shading) TONE SHADING ILLUSTRATION TECHNIQUE les couleurs chaudes – telles que le rouge, l’orange, le jaune – sont perçues très différemment des couleurs froides – le bleu, le violet ou le vert. Technique d’illumination non-photoréaliste avec modèle d’illumination nonstandard décrite par Amy Gooch, Bruce Gooch, Peter Shirley et Elaine Cohen (1998). GOOCH Éclairage de Gooch Amy Gooch - Bruce Gooch - Peter Shirley - Elaine Cohen A Non-Photorealistic Lighting Model For Automatic Technical Illustration. SIGGRAPH 1998, Computer Graphics Proceedings GOOCH Méthode On remplace la lumière diffuse rendue par des variations dans la luminosité (ou valeur) par des variations sur le ton (hue) On combine la couleur de l'objet avec des couleurs prises dans une palettes de couleurs chaudes à froides en fonction de l'intensité de la lumière diffuse. GOOCH GOOCH Exemple ESPACE IMAGE Traitement d'image pour l'augmentation de la morphologie