SurvolNPR - Serveur pédagogique UFR Sciences et Techniques

publicité
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 = { pS / 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
Téléchargement