Illumination and Shading Emmanuel Agu
Transcript of Illumination and Shading Emmanuel Agu
![Page 1: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/1.jpg)
CS 543: Computer GraphicsLecture 5 (part II): Illumination and Shading
Emmanuel Agu
![Page 2: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/2.jpg)
Illumination and Shading
n Problem: Model light/surface points interaction to determine final color and brightness
n Apply the lighting model at a set of points across the entire surface
Shading
lighting
![Page 3: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/3.jpg)
Illumination Model
n The governing principles for computing the illumination n A illumination model usually considers:
n Light attributes (intensity, color, position, direction, shape) n Object surface attributes (color, reflectivity, transparency,
etc)n Interaction among lights and objects
![Page 4: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/4.jpg)
Basic Light Sources
Point light Directional light
Area lightSpot light
Light intensity can be independent ordependent of the distance between objectand the light source
![Page 5: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/5.jpg)
Local Illumination
n Local illumination: only consider the light, the observer position, and the object material properties
n OpenGL does this
θ
![Page 6: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/6.jpg)
Global Illumination
n Global illumination: take into account the interaction of light from all the surfaces in the scene
n Example: Ray tracing
object 1
object 2object 3
object 4
![Page 7: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/7.jpg)
Simple Local Illumination
n The model used by OpenGLn Consider three types of light contribution to compute the
final illumination of an objectn Ambient n Diffusen Specular
n Final illumination of a point (vertex) = ambient + diffuse + specular
n Materials reflect each component differentlyn Use different material reflection coefficients, Ka, Kd, Ks
![Page 8: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/8.jpg)
Ambient Light Contribution
n Ambient light = background lightn Light that is scattered by the environment n Frequently assumed to be constantn Very simple approximation of global illumination n No direction: independent of light position, object
orientation, observer’s position or orientation
object 1
object 2object 3
object 4
Ambient = I x Ka
constant
![Page 9: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/9.jpg)
Ambient Light Example
![Page 10: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/10.jpg)
Diffuse Light Contribution
n Diffuse light: The illumination that a surface receives from a light source and reflects equally in all direction
It does not matter wherethe eye is
![Page 11: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/11.jpg)
Diffuse Lighting Example
![Page 12: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/12.jpg)
Diffuse Light Calculation
n Need to decide how much light the object point receive from the light source – based on Lambert’s Law
Receive more light Receive less light
![Page 13: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/13.jpg)
Diffuse Light Calculation
n Lambert’s law: the radiant energy D that a small surface patch receives from a light source is:
D = I x cos (θ)I: light intensity θ: angle between the light vector and the surface normal
N : surface normal
light vector (vector from object to light)
θ
![Page 14: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/14.jpg)
Specular light contribution
n The bright spot on the objectn The result of total reflection of
the incident light in a concentrateregion
See no specular
See lots specular
![Page 15: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/15.jpg)
Specular light example
![Page 16: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/16.jpg)
Specular light calculation
n How much reflection you can see depends on where you are
Only position the eye can see specular from P if object has an ideal reflection surface
But for non-perfect surface you will still see specular highlight when you movea little bit away from the ideal reflectiondirectionΦ is deviation of view angle from mirror
directionWhen φ is small, you see more specular highlight
θ
p
φ
specular = Ks x I x cos(φ)n
![Page 17: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/17.jpg)
Specular light calculation
n Phong lighting model
n The effect of ‘n’ in the phong model
n = 10
n = 30
n = 90
n = 270
specular = Ks x I x cos(φ)n
![Page 18: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/18.jpg)
Put it all together
n Illumination from a light: Illum = ambient + diffuse + specular
= Ka x I + Kd x I x (cos θ) + Ks x I x cos(φ)
n If there are N lightsTotal illumination for a point P = Σ (Illum)
n Some more terms to be added (in OpenGL): n Self emission n Global ambient n Light distance attenuation and spot light effect
n
![Page 19: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/19.jpg)
Adding Color
n Sometimes light or surfaces are coloredn Treat R,G and B components separatelyn i.e. can specify different RGB values for either light or materialn Illumination equation goes from:
Illum = ambient + diffuse + specular
= Ka x I + Kd x I x (cos θ) + Ks x I x cos(φ)To:
Illum_r = Kar x Ir + Kdr x Ir x (cos θ) + Ksr x Ir x cos(φ)
Illum_g = Kag x Ig + Kdg x Ig x (cos θ) + Ksg x Ig x cos(φ)
Illum_b = Kab x Ib + Kdb x Ib x (cos θ) + Ksb x Ib x cos(φ)
n
n
n
n
![Page 20: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/20.jpg)
Adding Color
89.60.7739110.7739110.773911
0.27750.27750.2775
0.231250.231250.23125
PolishedSilver
27.89740.9921570.9411760.807843
0.7803920.5686270.113725
0.3294120.2235290.027451
Brass
320.50.50.5
0.010.010.01
0.00.00.0
Black plastic
Exponent, nSpecularKsr, Ksg,ksb
DiffuseKdr, Kdg,kdb
AmbientKar, Kag,kab
Material
Figure 8.17, Hill, courtesy of McReynolds and Blythe
![Page 21: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/21.jpg)
Lighting in OpenGL
n Adopt Phong lighting modeln specular + diffuse + ambient lightsn Lighting is computed at vertices
• Interpolate across surface (Gouraud/smooth shading)
n Setting up OpenGL Lighting:n Light Properties n Enable/Disable lightingn Surface material properties n Provide correct surface normalsn Light model properties
![Page 22: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/22.jpg)
Light Properties
n Properties: n Colors / Position and type / attenuation
glLightfv(light, property, value)
(1) constant: specify which light you want to set the propertyE.g: GL_LIGHT0, GL_LIGHT1, GL_LIGHT2 … you can create multiple lights (OpenGL allows at least 8 lights)
(2) constant: specify which light property you want to set the valueE.g: GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION
(check the red book for more)(3) The value you want to set to the property
1 2 3
![Page 23: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/23.jpg)
Property Example
n Define colors and position a light
GLfloat light_ambient[] = {0.0, 0.0, 0.0, 1.0}; GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0}; GLfloat light_position[] = {0.0, 0.0, 1.0, 1.0};
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position);
colors
Position
What if I setPosition to (0,0,1,0)?
![Page 24: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/24.jpg)
Types of lights
n OpenGL supports two types of lightsn Local light (point light)n Infinite light (directional light)
n Determined by the light positions you providen w = 0: infinite light source n w != 0: point light – position = (x/w, y/w, z/w)
GLfloat light_position[] = {x,y,z,w};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
![Page 25: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/25.jpg)
Turning on the lights
n Turn on the power (for all the lights)n glEnable(GL_LIGHTING); n glDisable(GL_LIGHTING);
n Flip each light’s switch n glEnable(GL_LIGHTn) (n = 0,1,2,…)
![Page 26: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/26.jpg)
Controlling light position
n Modelview matrix affects a light’s positionn Two options:n Option a:
n Treat light like vertex n Do pushMatrix, translate, rotate, .. glLightfv position,
popmatrixn Then call gluLookatn Light moves independently of camera
n Option b:n Load identity matrix in modelview matrixn Call glLightfv then call gluLookatn Light appears at the eye (like a miner’s lamp)
![Page 27: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/27.jpg)
Material Properties
n The color and surface properties of a material (dull, shiny, etc)
n How much the surface reflects the incident lights (ambient/diffuse/specular reflection coefficients)
glMaterialfv(face, property, value)
Face: material property for which face (e.g. GL_FRONT, GL_BACK, GL_FRONT_AND_BACK)Property: what material property you want to set (e.g. GL_AMBIENT, GL_DIFFUSE,GL_SPECULAR, GL_SHININESS, GL_EMISSION, etc)Value: the value you can to assign to the property
![Page 28: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/28.jpg)
Material Example
n Define ambient/diffuse/specular reflection and shininess
GLfloat mat_amb_diff[] = {1.0, 0.5, 0.8, 1.0}; GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0}; GLfloat shininess[] = {5.0}; (range: dull 0 – very shiny 128)
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_amb_diff);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
refl. coeff.
![Page 29: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/29.jpg)
Surface Normals
n Correct normals are essential for correct lightingn Associate a normal to each vertex
glBegin(…)glNormal3f(x,y,z)glVertex3f(x,y,z)…glEnd()
n The normals you provide need to have a unit lengthn You can use glEnable(GL_NORMALIZE) to have
OpenGL normalize all the normals
![Page 30: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/30.jpg)
What about SDL?
n Assignment: read how to do following in SDLn control light sourcesn Specify material propertiesn Ambient, diffuse specular, etc
n Ref: section 5.6.4, appendix 5
![Page 31: Illumination and Shading Emmanuel Agu](https://reader031.fdocuments.in/reader031/viewer/2022020203/5865df141a28abd75a8c5c6b/html5/thumbnails/31.jpg)
References
n Hill, chapter 8