Transcript Chapter 6

Chapter 6
Shading
1
Objectives



Learn to shade objects so their images
appear three-dimensional
Introduce the types of light-material
interactions
Build a simple reflection model---the
Phong model--- that can be used with real
time graphics hardware
2
Why we need shading

Suppose we build a model of a sphere
using many polygons and color it with
glColor. We get something like

But we want
3
Shading

Why does the image of a real sphere look like

Light-material interactions cause each point to
have a different color or shade
Need to consider





Light sources
Material properties
Location of viewer
Surface orientation
4
Scattering

Light strikes A



Some scattered
Some absorbed
Some of scattered light strikes B


Some scattered
Some absorbed
Some of this scatterd
light strikes A
and so on

5
Rendering Equation

The infinite scattering and absorption of
light can be described by the rendering
equation



Cannot be solved in general
Ray tracing is a special case for perfectly
reflecting surfaces
Rendering equation is global and includes


Shadows
Multiple scattering from object to object
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
specular
diffuse
translucent
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 threecomponent 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
from each light source
Each light source has separate diffuse,
specular, and ambient terms to allow for
maximum flexibility even though this form
does not 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
properties


Nine absorbtion coefficients
 kdr, kdg, kdb, ksr, ksg, ksb, kar, kag, kab
Shininess coefficient a
19
Ambient Reflection



Ambient light is the result of multiple
interactions between (large) light sources
and the 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
reflection coef
intensity of ambient light
20
Diffuse Reflection – 1/2


Perfectly diffuse reflector
(Lambertian Surface)
Light scattered equally in all directions
Rough Surface
21
Diffuse Reflection – 2/2

Amount of light reflected is proportional to the
vertical 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
perfectly specular (ideal refectors)
Smooth surfaces show specular highlights due to
incoming light being reflected in directions
concentrated close to the direction of a perfect
reflection
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 cosa

shininess coef
reflected
incoming intensity
intensity
absorption coef
24
The Shininess Coefficients


Values of a between 100 and 200 correspond to
metals
Values between 5 and 10 give surface that look
like plastic
cosa 
-90

90
25
Distance Terms
The light from a point source that reaches a
surface is inversely proportional to the square of
the distance between them
 We can add a factor of the
form 1/(ad + bd +cd2) to
the diffuse and specular
terms
 The constant and linear terms soften the effect of
the point source

26
Examples
Only differences in
these teapots are
the parameters
in the Phong model
27
Computation of Vectors


Normal vectors
Reflection vector
28
Normal for Triangle
n
plane
p2
n ·(p - p0 ) = 0
p
normalize n  n/ |n|
p0
p
1
Note that right-hand rule determines outward face
29
Normal for Sphere
Tangent plane to a 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
h
|l v|

   x  
    x  2  
32
Transmitted Light
Snell’s Law:
sin  l nt

sin  t nl
l
l 2
2
2
cos t  1 - ( ) (1 - cos  t )
t

1 
nl
t  - l -  cos t - cos l n
n 
nt

t
33
Critical Angle
34
Polygonal Shading

Shading calculations are done for each
vertex


Vertex colors become vertex shades
By default, vertex colors are interpolated
across the polygon
glShadeModel(GL_SMOOTH);
 If we use glShadeModel(GL_FLAT); the

color at the first vertex will determine the
color of the whole polygon
35
Flat Shading
Polygons have a single normal
 Shades at the vertices as computed by the
Phong model can be almost same
 Identical for a distant viewer (default) or if
there 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
because we knew the normal at each vertex
analytically
For polygonal models, Gouraud proposed
we use the average of normals around a
mesh 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
polygon
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
Gouraud 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
x
4
3
3
x
2
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);
glVertex3fv(c);
glEnd();
}
Void tetrahedron()
{
1
triangle(v[0], v[1], v[2]);
triangle(v[3], v[2], v[1]);
triangle(v[0], v[3], v[1]);
triangle(v[0], v[2], v[3]);
}
0
3
2
44
Recursive Subdivision – 2/3
Bisecting angles
Computing the centrum
Bisecting sides
void normal(point3 p)
{
Normalization
double d=0.0;
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)
{
point3 v1, v2, v3;
int j;
if(n>0) {
for(j=0; j<3; j++) v1[j]=a[j]+b[j];
normal(v1);
b
for(j=0; j<3; j++) v2[j]=a[j]+c[j];
normal(v2);
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);
}
a
v1
v2
v3
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
set by using GL_FRONT, GL_BACK, or
GL_FRONT_AND_BACK in glMaterialf
back faces not visible
back faces visible
47
Moving Light Sources


Light sources are geometric objects whose
positions or directions are affected by the modelview matrix
Depending on where we place the position
(direction) setting function, we can




Move the light source(s) with the object(s)
Fix the object(s) and move the light source(s)
Fix the light source(s) and move the object(s)
Move the light source(s) and object(s) independently
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
Phong model can be almost the same
 Identical for a distant viewer (default) or if
there 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


Ray Tracing and Radiosity
Use the original pipeline
to simulate some global
effect
51
Summary and Notes




Why do we need shading?
What does shading do?
Ambient, diffuse, specular terms
Local shading versus global shading
52