2. 2
Graphics: Conceptual Model
Real Object
Real
Object
Human Eye
Human Eye
Display
Device
Graphics System
Synthetic
Model
Synthetic
Camera
Real Light
Synthetic
Light Source
5. 5
Modes of Interaction of Light with Materials
Specular
Surface
Diffuse
Surface Translucent
Surface
Note: Any given surface can have some of all three properties.
7. 7
Simplified Model
Exact model can easily get complicated!
Three simplifications help.
1. We can consider four classes of light sources
• ambient
• point
• spotlight
• distant
2. Human color perception allows us to consider illumination
function in terms of the three primary colors.
3. We can neglect (OpenGL caveats):
• multiple reflections
• obstruction of light path by objects
8. 8
Light Sources
Ambient light
- no identifiable source or direction
- hack for replacing true global illumination
= (light bouncing off from other objects)
9. 9
Ambient Light
Simulates situations where light sources are designed to produce
uniform lighting throughout a scene.
Characterized by a scalar intensity, Ia , that is identical at every point
in the scene.
Ia =
Iar
Iag
Iab
Although every surface receives the same illumination, each
surface can reflect the light differently.
10. 10
Point Sources
An ideal point source radiates equally in all directions. It can
be characterized by:
I(p0
) =
Ir (p0 )
Ig
(p0
)
Ib (p0 )
Intensity of illumination from a point source is proportional
to the inverse square of the distance between the point and the
illuminated surface.
I(p,p0 ) =
1
p−p0
2 I(p0 )
11. 11
Light Sources
Types of light sources
- glLightfv(GL_LIGHT0,GL_POSITION,light[])
- directional/parallel lights
= real-life example: sun
= infinitely far source: homogeneous co-ord. w=0
- point lights
= same intensity in all directions
- spot lights
= limited set of directions:
point+direction+cutoff angle
0
z
y
x
1
z
y
x
12. 12
Spotlights
Spotlights are point sources for which the angle through which
light has been emitted has been limited.
θ
l
s
I = k cose
(θ) = k(l⋅s)e
13. 13
Distant Sources
Most shading calculations require the direction from the point on
a surface to the light source. As light sources are moved to
larger distances, this direction approaches a constant.
Therefore the point source location will be replaced by a vector
indicating the direction of the source.
p0
=
x
y
z
1
will be replaced by: p0
=
x
y
z
0
14. 14
Reflection
Rough Surface:
Light is reflected equally in
all directions.
Diffuse
Smooth Surface:
Light is reflected at an angle
near to the incident angle.Specular
15. 15
Vectors Used by
Phong Lighting Model
p is an arbitrary point on a surface.
n is the unit normal to the surface at p.
l is a unit vector in the direction of the light source.
r is a unit vector in the direction of a perfectly (specular)
reflection
v is a unit vector in the direction of the viewer.
n
l
r
v
p
Viewer
16. 16
Elements of the Phong Lighting Model
Ri =
Rira Riga Riba
Rird Rigd Ribd
Rirs
Rigs
Ribs
At each point p there
is a reflection matrix for
the ith light source:
I = Ia
+ Id
+ Is
= La
Ra
+ Ld
Rd
+ Ls
Rs
Assuming the calculations will be done separately for
each primary, we can sum over light sources to get:
Li
=
Lira Liga Liba
Lird
Ligd
Libd
Lirs
Ligs
Libs
At each point p there
is an illumination matrix
from the ith light source:
red green blue
ambient
diffuse
specular
17. 17
Elements of the Phong Lighting Model
Ambient Reflection
Ia
= ka
La
0 ≤ ka ≤1
The intensity of ambient light is the same at every point
on the surface. The percentage of light reflected is given
by: Ra
= ka
Note that the ambient reflection terms can be different
for red, green and blue.
18. 18
Elements of the Phong Lighting Model
Diffuse Reflection
Intensity of illumination is dependent upon the incidence angle
of light from the source:
Adding a term for attenuation
with distance from source:
Id =
k d
a + bd + cd 2
( l ⋅ n ) L d
θ
l
n
Rd
∝ cosθ = l⋅n
Id
= kd
(l⋅n)Ld
19. 19
Elements of the Phong Lighting Model
Specular Reflection
For a shiny surface, most light is reflected around vector r,
corresponding to a reflected angle equal to the angle of incidence.
If θ is the angle between v and r,
Is
= ks
Ls
cosα
θ
Adding a distance term, and expressing the cosine in terms of
a dot product:
Is =
1
a + bd + cd 2
k s L s (r ⋅ v )α
n
l
r
v
p
Viewer
20. 20
The Complete Lighting Model
globalambglobalambm
aassdd
n
i
LkE
LkLkLk
cdbda
I
++
+⋅+⋅
++
= ∑
−
=
)])()((
1
[ 2
1
0
α
vrnl
Distance
(Attenuation)
Ambient
Diffuse Specular
Emission
Global
Ambient
n
l
r
v
p
Viewer
()
()
()
glMaterial
glLight
elglLightMod
k
L
E
21. 21
Calculation of Normals
Normal exists at every point for mathematically defined smooth
surfaces.
Exists for each polygon in surface defined by flat polygons.
What about the shared lines/points?
Polygonal Case:
p0
p1
p2
n
n = (p1
− p0
) × (p2
− p0
)
22. 22
Calculation of Normals
Mathematically Defined Surface: Sphere
Sphere is defined implicitly by equation:
f ( x, y, z) = x2
+ y2
+ z2
− 1 = 0
n =
∂f
∂x
∂f
∂y
∂f
∂z
=
2x
2y
2z
= 2p
23. 23
Specification of the Normal in OpenGL
Specification of the current normal is modal and associated with
vertices.
glNormal3f(nx,ny,nz);
glNormal3fv(pointer_to_normal_vector);
You have to calculate the normals yourself.
24. 24
Shading in OpenGL:
Flat Shading
OpenGL uses the normal of the first vertex of a single
polygon to determine the color.
Requested by: glShadeModel(GL_FLAT);
Flat shading exaggerates the visual effect of the
boundaries between polygons due to the Mach band
effect.
28. 28
Shading in OpenGL:
Smooth Shading
Requested by: glShadeModel(GL_SMOOTH);
Lighting calculations will be done at each vertex using the
material properties, and the vectors v and l calculated for that
vertex.
Bilinear interpolation is used to determine color values in the
interior of the polygon.
Gouraud Shading:
Normal at a vertex is the normalized average of the normals of
the polygons that share that vertex.
33. 33
Specifying Light Sources in OpenGL
General form: glLightf(source, parameter, value);
glLightfv(source, parameter, *array);
source is one of at least eight lights: GL_LIGHTi
Parameters:
GL_AMBIENT contains four values that specify the ambient RGBA
intensity of the light. Default is (0.0, 0.0, 0.0, 1.0).
GL_DIFFUSE contains four values that specify the diffuse RGBA
intensity of the light. Default is (1.0, 1.0, 1.0, 1.0).
GL_SPECULAR contains four values that specify the secular RGBA
intensity of the light. Default is (1.0, 1.0, 1.0, 1.0).
34. 34
Specifying Light Sources in OpenGL
General form: glLightf(source, parameter, value);
glLightfv(source, parameter, *array);
GL_POSITION specifies the position of the light in homogeneous
object coordinates. If the w component is zero, the light
is treated as a directional source.
GL_SPOT_DIRECTION specifies the direction of the light in
homogeneous object coordinates. Default is (0.0, 0.0, -1.0)
GL_SPOT_EXPONENT spotlight exponent, default 0.0
GL_SPOT_CUTOFF spot cutoff angle in [0,90] or (default) 180.
θ
l
s
I = kcose
(θ) = k(l⋅s)e
35. 35
Specifying Light Sources in OpenGL
General form: glLightf(source, parameter, value);
glLightfv(source, parameter, *array);
GL_CONSTANT_ATTENUATION constant atten. factor, default 1.0
GL_LINEAR_ATTENUATION linear atten. factor, default 0.0
GL_QUADRATIC_ATTENUATION quadratic atten. factor, default 0.0
Id =
k d
a + b d + c d 2
( l ⋅ n ) L d
n
l r
v
p
Viewer
36. 36
Enabling the Lights and Lighting
Enabling a specific light source: glEnable(GL_LIGHTi );
Enabling the lighting model: glEnable (GL_LIGHTING);
37. 37
Specifying Materials in OpenGL
General form: glMaterialf(face, parameter,value);
glMaterialfv(face, parameter,*array);
face is GL_FRONT, GL_BACK, GL_FRONT_AND_BACK
parameter is:
GL_AMBIENT four values that specify the ambient RGBA
reflectance of the material. (0.2,0.2,0.2,1.0)
GL_DIFFUSE four values that specify the diffuse RGBA
reflectance of the material. (0.8,0.8,0.8,1.0)
GL_SPECULAR four values that specify the ambient RGBA
reflectance of the material. (0.0,0.0,0.0,1.0)
GL_SHININESS specifies the specular reflectance
exponent of the material. 0.0
38. 38
1. Ambient light in a
scene with 3 spheres.
2. Diffuse light
hitting the surface of
3 spheres. Notice,
the spheres look
matte and almost
plastic like.
3. The three
spheres illuminated
by specular light.
Imagine an
extremely shiny
billiard ball and the
sheen it creates
Types Of Light And Its Effects