1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional...
-
Upload
virgil-wheeler -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional...
1
Chapter 6
Shading
2
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 graphics hardware
3
Why we need shading Suppose we build a model of a sphere usin
g many polygons and color it with glColor. We get something like
But we want
4
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
5
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
6
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
7
Global Effects
translucent surface
shadow
multiple reflection
8
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
9
Computer Viewing
10
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
11
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
12
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
13
Color Sources Consider a light source through a three-
component intensity or luminance function
b
g
r
I
I
I
I
14
Simple Light Sources – 1/3 Ambient light
Same amount of light everywhere in scene Can model contribution of many sources and
reflecting surfaces
ab
ag
ar
a
I
I
I
I
15
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
16
Simple Light Sources – 3/3
Spotlight
Restrict light from ideal point source
eI cos
17
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
18
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 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
19
Material Properties Material properties match light source prop
erties Nine absorbtion coefficients
kdr, kdg, kdb, ksr, ksg, ksb, kar, kag, kab
Shininess coefficient
20
Ambient Reflection Ambient light is the result of multiple inter
actions 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
21
Diffuse Reflection – 1/2 Perfectly diffuse reflector
(Lambertian Surface) Light scattered equally in all directions
Rough Surface
22
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
23
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 concentrated close to the direction of a perfect reflection
specularhighlight
24
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
shininess coef
absorption coef
incoming intensityreflectedintensity
25
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
26
Distance Terms The light from a point source that reaches a surfac
e 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
27
Examples
Only differences in these teapots are the parametersin the Phong model
28
Computation of Vectors Normal vectors Reflection vector
29
Normal for Triangle
p0
p1
p2
n
plane n ·(p - p0 ) = 0
normalize n n/ |n|
p
Note that right-hand rule determines outward face
30
Normal for Sphere
Tangent plane to a sphere
31
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
32
Halfway Vector
|| vl
vlh
2x
x
x
33
Transmitted Light
Snell’s Law:
nn
nl
nt
n
n
lt
lt
tt
lt
l
t
t
l
coscos1
)cos1()(1cos
sin
sin
222
l
t
34
Critical Angle
35
Polygonal Shading Shading calculations are done for each vert
ex 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
36
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 ateach vertex even thoughthis concept is not quitecorrect mathematically
37
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
38
Mesh Shading – 1/2 The previous example is not general becau
se we knew the normal at each vertex analytically
For polygonal models, Gouraud proposed we use the average of normals around a mesh vertex
|nnnn|
nnnnn
4321
4321
39
Mesh Shading – 2/2
40
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
41
Phong Shading
42
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
43
Approximation of a Sphere by Recursive Subdivision
Start with a tetrahedron whose four vertices are on a unit sphere:
1/3)- /3,2- /3,6( 1/3),- ,/32- /3,6(- 1/3),- ,3/22 ,0( ),1 ,0 ,0(
3
4x
2
3
x6
3
x
z
x
y
44
Recursive Subdivision – 1/3void triangle(point3 a, point3 b, point3 c){
glBegin(GL_LINE_LOOP);glVertex3fv(a);glVertex3fv(b);glVertex3fv(c);
glEnd();}Void tetrahedron(){
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
1 2
3
45
Recursive Subdivision – 2/3Bisecting angles Computing the centrum Bisecting sides
void normal(point3 p){
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;
}
Normalization
46
Recursive Subdivision – 3/3void 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);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);}elsetriangle(a, b, c);
}
a
b c
v1 v2
v3
47
Enabling Shading Shading calculations are enabled by
glEnable(GL_LIGHTING)
Once lighting is enabled, glColor() ignored Must enable each light source individually
glEnable(GL_LIGHTi) i=0,1….. Can choose light model parameters
glLightModeli(parameter, GL_TRUE) GL_LIGHT_MODEL_LOCAL_VIEWER do not use simplif
ying distant viewer assumption in calculation GL_LIGHT_MODEL_TWO_SIDED shades both sides of po
lygons independently
48
Defining a Point Light Source For each light source, we can set an RGB for the
diffuse, specular, and ambient parts, and the position
GL float diffuse0[]={1.0, 0.0, 0.0, 1.0}; /* red diffuse */GL float ambient0[]={1.0, 0.0, 0.0, 1.0}; /* red ambient */GL float specular0[]={1.0, 1.0, 1.0, 1.0}; /* white specular */Glfloat light0_pos[]={1.0, 2.0, 3,0, 1.0};
glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);
49
Global Ambient Light Ambient light depends on color of light sou
rces A red light in a white room will cause a red a
mbient term that disappears when the light is turned off
OpenGL allows a global ambient term that is often helpful glLightModelfv(GL_LIGHT_MODEL_AMBIE
NT, global_ambient)
50
Distance and Direction The source colors are specified in RGBA The position is given in homogeneous
coordinates If w =1.0, we are specifying a finite location If w =0.0, we are specifying a parallel source
with the given direction vector The coefficients in the distance terms are by
default a=1.0 (constant terms), b=c=0.0 (linear and quadratic terms). Change by
a= 0.80;glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a);
51
Spotlights Use glLightv to set
Direction GL_SPOT_DIRECTION Cutoff GL_SPOT_CUTOFF (angle) Attenuation GL_SPOT_EXPONENT
Proportional to cos
52
Calculation of Reflection OpenGL assumes the distance between the viewe
r and the object is infinite, therefore the calculation is easier
UseglLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); to turn it on
53
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
back faces not visible back faces visible
54
Material Properties
Material properties are also part of the OpenGL state and match the terms in the Phong model
Set by glMaterialv() GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0};
GLfloat diffuse[] = {1.0, 0.8, 0.0, 1.0};GLfloat specular[] = {1.0, 1.0, 1.0, 1.0};GLfloat shine = 100.0glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialfv(GL_FRONT, GL_SHININESS, shine);
55
Emissive Term We can simulate a light source in OpenGL
by giving a material an emissive component
This color is unaffected by any sources or transformations
GLfloat emission[] = 0.0, 0.3, 0.3, 1.0);glMaterialfv(GL_FRONT, GL_EMISSION, emission);
56
Efficiency Because material properties are part of the state, if
we change materials for many surfaces, we can affect performance
We can make the code cleaner by defining a material structure and setting all materials during initialization
We can then select a material by a pointer
typedef struct materialStruct { GLfloat ambient[4]; GLfloat diffuse[4]; GLfloat specular[4]; GLfloat shineness;} MaterialStruct;
57
Moving Light Sources Light sources are geometric objects whose
positions or directions are affected by the model-view 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
58
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
59
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 ateach vertex even thoughthis concept is not quitecorrect mathematically
60
Normals – 1/2 In OpenGL the normal vector is part of the state Set by glNormal*()
glNormal3f(x, y, z); glNormal3fv(p);
Usually we want to set the normal to have unit length so cosine calculations are correct Length can be affected by transformations Note the scale does not preserved length glEnable(GL_NORMALIZE) allows for auton
ormalization at a performance penalty
61
Normals – 2/2Void triangle(point3 a, point3 b, point3 c){
point3 n;cross(a, b, c, n); calculation of the normalglBegin(GL_POLYGON);glNormal3fv(n);glVertex3fv(a);glVertex3fv(b);glVertex3fv(c);glEnd();
}
62
Global Rendering
Ray Tracing and Radiosity Use the original pipeline
to simulate some globaleffect
63
Summary and Notes Why do we need shading? What does shading do? Light sources, material properties, normals
… Ambient, diffuse, specular terms Local shading versus global shading