Professional Documents
Culture Documents
Chapter 6
Chapter 6
Chapter 6
Shading
1
Objectives
Learn to shade objects so their images appe
ar three-dimensional
Introduce the types of light-material interac
tions
Build a simple reflection model---the Phon
g model--- that can be used with real time g
raphics hardware
2
Why we need shading
Suppose we build a model of a sphere usin
g many polygons and color it with glColo
r. We get something like
But we want
3
Shading
Why does the image of a real sphere look like
6
Global Effects
shadow
multiple reflection
translucent surface
7
Local versus Global Rendering
Correct shading requires a global calculation
involving all objects and light sources
Incompatible with pipeline model which shades
each polygon independently (local rendering)
However, in computer graphics, especially
real time graphics, we are happy if things
“look right”
Exist many techniques for approximating global
effects
8
Computer Viewing
9
Light-Material Interaction
Light that strikes an object is partially absorbed
and partially scattered (reflected)
The amount reflected determines the color and
brightness of the object
A surface appears red under white light because the
red component of the light is reflected and the rest is
absorbed
The reflected light is scattered in a manner that
depends on the smoothness and orientation of the
surface
10
Surface Types
The smoother a surface, the more reflected
light is concentrated in the direction a
perfect mirror would reflected the light
A very rough surface scatters light in all
directions
11
Light Sources
Each point on the light source:
I(x, y, z, , , )
General light sources are difficult to work
with because we must integrate light
coming from all points on the source
12
Color Sources
Consider a light source through a three-
component intensity or luminance function
Ir
I Ig
I b
13
Simple Light Sources – 1/3
Ambient light
Same amount of light everywhere in scene
Can model contribution of many sources and
reflecting surfaces
I ar
I a I ag
I ab
14
Simple Light Sources – 2/3
Point source
Model with position and color
Distant source = infinite distance away (parallel)
Replacing a point by a direction vector
umbra
penumbra
15
Simple Light Sources – 3/3
Spotlight
Restrict light from ideal point source
I cose
16
Phong Model
A simple model that can be computed rapidly
Has three components
Diffuse
Specular
Ambient
Uses four vectors
To source
To viewer
Normal
Perfect reflector
17
Light Sources
In the Phong Model, we add the results fro
m each light source
Each light source has separate diffuse, spec
ular, and ambient terms to allow for maxim
um flexibility even though this form does n
ot have a physical justification
Separate red, green and blue components
Hence, 9 coefficients for each point source
Idr, Idg, Idb, Isr, Isg, Isb, Iar, Iag, Iab
18
Material Properties
Material properties match light source prop
erties
Nine absorbtion coefficients
kdr, kdg, kdb, ksr, ksg, ksb, kar, kag, kab
Shininess coefficient
19
Ambient Reflection
Ambient light is the result of multiple inter
actions between (large) light sources and th
e objects in the environment
Amount and color depend on both the color
of the light(s) and the material properties of
the object
Add ka Ia to diffuse and specular terms
Rough Surface
21
Diffuse Reflection – 2/2
Amount of light reflected is proportional to the v
ertical component of incoming light
reflected light ~cos i
cos i = l · n if vectors normalized
There are also three coefficients, kr, kb, kg that show
how much of each color component is reflected
22
Specular Surfaces
Most surfaces are neither ideal diffusers nor perfe
ctly specular (ideal refectors)
Smooth surfaces show specular highlights due to
incoming light being reflected in directions conce
ntrated close to the direction of a perfect reflectio
n
specular
highlight
23
Modeling Specular Reflections
Phong proposed using a term that dropped
off as the angle between the viewer and the
ideal reflection increased
Ir ~ ks I cos
reflected shininess coef
intensity incoming intensity
absorption coef
24
The Shininess Coefficients
Values of between 100 and 200 correspond to
metals
Values between 5 and 10 give surface that look
like plastic
cos
-90 90
25
Distance Terms
The light from a point source that reaches a surfac
e is inversely proportional to the square of the dis
tance between them
We can add a factor of the
27
Computation of Vectors
Normal vectors
Reflection vector
28
Normal for Triangle
n
plane n ·(p - p0 ) = 0 p2
p
p1
normalize n n/ |n| p0
29
Normal for Sphere
30
Ideal Reflector
Normal is determined by local orientation
Angle of incidence = angle of relection
The three vectors must be coplanar
r = 2 (l · n ) n - l
31
Halfway Vector
x
l v x
h
|l v|
x 2
32
Transmitted Light
Snell’s Law:
sin l nt l
sin t nl
l 2
cos t 1 ( ) (1 cos t )
2 2
t
1 nl t
t l cos t cos l n
n nt
33
Critical Angle
34
Polygonal Shading
Shading calculations are done for each vert
ex
Vertex colors become vertex shades
By default, vertex colors are interpolated a
cross the polygon
glShadeModel(GL_SMOOTH);
If we use glShadeModel(GL_FLAT); the
color at the first vertex will determine the c
olor of the whole polygon
35
Flat Shading
Polygons have a single normal
Shades at the vertices as computed by the Phon
g model can be almost same
Identical for a distant viewer (default) or if ther
e is no specular component
Consider model of sphere
Want different normals at
each vertex even though
this concept is not quite
correct mathematically
36
Smooth Shading
We can set a new
normal at each vertex
Easy for sphere model
If centered at origin n = p
Now smooth shading
works
Note silhouette edge
37
Mesh Shading – 1/2
The previous example is not general becau
se we knew the normal at each vertex analy
tically
For polygonal models, Gouraud proposed
we use the average of normals around a me
sh vertex
n1 n 2 n 3 n 4
n
| n1 n 2 n 3 n 4 |
38
Mesh Shading – 2/2
39
Gouraud and Phong Shading
Gouraud Shading
Find average normal at each vertex (vertex normals)
Apply Phong model at each vertex
Interpolate vertex shades across each polygon
Phong shading
Find vertex normals
Interpolate vertex normals across edges
Find normals along edges
Interpolate edge normals across polygons
Find shade from its normal for each point in the poly
gon
40
Phong Shading
41
Comparison
If the polygon mesh approximates surfaces with a
high curvatures, Phong shading may look smooth
while Gouraud shading may show edges
Phong shading requires much more work than Go
uraud shading
Usually not available in real time systems
Both need data structures to represent meshes so
we can obtain vertex normals
42
Approximation of a Sphere by
Recursive Subdivision
Start with a tetrahedron whose four vertices
are on a unit sphere:
(0, 0, 1), (0, 2 2 / 3, - 1/3), (- 6 /3, - 2 /3, - 1/3), ( 6 /3, - 2 /3, - 1/3)
y
z
3
x
x 4 2
3 x
3
x
6 43
Recursive Subdivision – 1/3
void triangle(point3 a, point3 b, point3 c)
{
glBegin(GL_LINE_LOOP);
glVertex3fv(a);
glVertex3fv(b); 0
glVertex3fv(c);
glEnd();
} 3
Void tetrahedron()
{
triangle(v[0], v[1], v[2]);
triangle(v[3], v[2], v[1]);
1 2
triangle(v[0], v[3], v[1]);
triangle(v[0], v[2], v[3]);
}
44
Recursive Subdivision – 2/3
Bisecting angles Computing the centrum Bisecting sides
void normal(point3 p)
{
double d=0.0; Normalization
int i;
for(i=0; i<3; i++) d+=p[i]*p[i];
d=sqrt(d);
if(d>0.0) for (i=0; i<3; i++) p[i]/=d;
} 45
Recursive Subdivision – 3/3
void divide_triangle(point3 a, point3 b, point3 c, int n)
{ a
point3 v1, v2, v3;
int j;
if(n>0) { v1 v2
for(j=0; j<3; j++) v1[j]=a[j]+b[j];
normal(v1);
for(j=0; j<3; j++) v2[j]=a[j]+c[j];
normal(v2); b v3 c
for(j=0; j<3; j++) v3[j]=c[j]+b[j];
normal(v3);
divide_triangle(a, v1, v2, n-1);
divide_triangle(c, v2, v3, n-1);
divide_triangle(b, v3, v1, n-1);
divide_triangle(v1, v3, v2, n-1);
}
else
triangle(a, b, c);
}
46
Front and Back Faces
The default is shade only front faces which works
correct for convex objects
If we set two sided lighting, OpenGL will shaded
both sides of a surface
Each side can have its own properties which are s
et by using GL_FRONT, GL_BACK, or GL_FRONT_
AND_BACK in glMaterialf
48
Transparency
Material properties are specified as RGBA
values
The A value can be used to make the
surface translucent
The default is that all surfaces are opaque
regardless of A
Later we will enable blending and use this
feature
49
Polygon Normals
Polygons have a single normal
Shades at the vertices as computed by the Phon
g model can be almost the same
Identical for a distant viewer (default) or if ther
e is no specular component
Consider model of sphere
Want different normals at
each vertex even though
this concept is not quite
correct mathematically
50
Global Rendering
51
Summary and Notes
Why do we need shading?
What does shading do?
Ambient, diffuse, specular terms
Local shading versus global shading
52