Post on 28-Dec-2015
104/19/23 16:10
UML
Graphics: Conceptual Model
Real Object
Real Object
Human Eye
Human Eye
DisplayDevice
Graphics System
SyntheticModel
SyntheticCamera
Real Light
SyntheticLight Source
204/19/23 16:10
UML
Lights, Surfaces, and Imaging
Proj. Plane
COP
Objects
304/19/23 16:10
UML
Lights, Surfaces, and Imaging
Proj. Plane
COP
Light Source
Objects
404/19/23 16:10
UML
Modes of Interaction ofLight with Materials
SpecularSurfaceReflection
DiffuseSurfaceReflection
TranslucentSurface
Note: Any given surface can have some of all threeproperties.
504/19/23 16:10
UML
Reflection
Rough Surface:Light is reflected equally in all directions.
Smooth Surface:Light is reflected at an anglenear to the incident angle.
Diffuse
Specular
604/19/23 16:10
UML
Illuminating Surfaces
z
x
y
I(x, y, z,,, )We can define illumination function:To obtain total light, must integrate over total surface.
I( ,,)
dAddzyxII total ),,,,,()(
704/19/23 16:10
UML
Simpler Models
Exact model can easily get nasty to use! Three simplificationswill help.
1. We can consider four simplified classes of light sources
• ambient• point• spotlight• distant
2. Human color perception allows us to consider illuminationfunction in terms of the three primary colors.
3. We can (or must) neglect:
• multiple reflections• obstruction of light path by objects
804/19/23 16:10
UML
Ambient Light
Simulates situations where light sources are designed to produceuniform lighting throughout a scene. Ambient light can be thought ofas present everywhere, coming from all directions.
Characterized by a scalar intensity, Ia , that is identical at every pointin the scene.
Ia Iar
Iag
Iab
Although every surface receives the same illumination, eachsurface can reflect the light differently.
904/19/23 16:10
UML
Point Sources
An ideal point source radiates equally in all directions. It canbe characterized by:
I(p0 ) I r (p0 )
Ig (p0 )
Ib (p0 )
Intensity of illumination from a point source is proportionalto the inverse square of the distance between the point and theilluminated surface.
I(p,p0 ) 1
p p0
2 I(p0 )
1004/19/23 16:10
UML
Spotlights
Spotlights are point sources for which the angle through whichlight has been emitted has been limited.
l
s
I k cose ( ) k(ls)e
1104/19/23 16:10
UML
Distant Sources
Most shading calculations require the direction from the point ona 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 vectorindicating the direction of the source.
p0
x
y
z
1
will be replaced by : p0
x
y
z
0
1204/19/23 16:10
UML
Reflection
Rough Surface:Light is reflected equally in all directions.
Smooth Surface:Light is reflected at an anglenear to the incident angle.
Diffuse
Specular
1304/19/23 16:10
UML
Vectors Used byPhong Lighting Model
n
l r
v
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) reflectionv is a unit vector in thedirection of the viewer.
p
COP
1404/19/23 16:10
UML
Elements of the Phong Lighting Model
L i Lira Liga Liba
Lird Ligd Libd
Lirs Ligs Libs
R i Rira Riga Riba
Rird Rigd Ribd
Rirs Rigs Ribs
I Ia Id Is La Ra Ld Rd Ls Rs
At each point p thereis an illumination matrixfrom the ith light source:
At each point p there is a reflection matrix forthe ith light source:
Assuming the calculations will be done separately foreach primary, we can sum over light sources to get:
1504/19/23 16:10
UML
Elements of the Phong Lighting ModelAmbient Reflection
Ia ka La
0 ka 1
The intensity of ambient light is the same at every pointon the surface. The percentage of light reflected is givenby: Ra ka
Note that the ambient reflection terms can be differentfor red, green and blue.
1604/19/23 16:10
UML
Elements of the Phong Lighting ModelDiffuse Reflection
Intensity of illumination is dependent upon the incidence angleof light from the source:
l
n
Rd cos ln
Id kd (ln)Ld
Adding a term for attenuationwith distance from source:
Id kd
a bd cd 2(ln)Ld
1704/19/23 16:10
UML
Elements of the Phong Lighting ModelSpecular 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 ofa dot product:
Is 1
a bd cd 2ks Ls (r v)
1804/19/23 16:10
UML
The Complete Phong Model
I 1
a bd cd 2(kd Ld (l n) ks Ls (r v) ) ka La
Distance term Ambient term
Diffuse termSpecular term
1904/19/23 16:10
UML
Specification of the Normal in OpenGL
Specification of the current normal is modal and associated withvertices.
glNormal3f(nx,ny,nz);glNormal3fv(pointer_to_normal_vector);
You have to calculate the normals yourself.
2004/19/23 16:10
UML
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?
Polygonal Case:
p0
p1
p2
n
n (p1 p0 ) (p2 p0 )
2104/19/23 16:10
UML
Shading in OpenGL:Flat Shading
OpenGL uses the current normal and calculates thecolor at the first vertex of a polygon. This color is used for the entire polygon.
Requested by: glShadeModel(GL_FLAT);
Flat shading exaggerates the visual effect of the boundaries between polygons due to the Mach band effect.
2204/19/23 16:10
UML
Mach Band Effect(Mach, 1865)
Color Science, Concepts and MethodsWyszecki, Stiles
2304/19/23 16:10
UML
Mach Band Effect
2404/19/23 16:10
UML
Mach Band Effect
2504/19/23 16:10
UML
Shading in OpenGL:Smooth Shading
Requested by: glShadeModel(GL_SMOOTH);
Lighting calculations will be done at each vertex using thematerial properties, and the vectors v and l calculated forthat vertex.
Bilinear interpolation is used to determine color values inthe interior of the polygon.
Gouraud Shading:
Normal at a vertex is the normalized average of the normals of the polygons that share that vertex.
2604/19/23 16:10
UML
Gouraud Shading
2704/19/23 16:10
UML
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 RGBAintensity of the light. Default is (0.0, 0.0, 0.0, 1.0).
GL_DIFFUSE contains four values that specify the diffuse RGBAintensity of the light. Default is (1.0, 1.0, 1.0, 1.0).
GL_SPECULAR contains four values that specify the secular RGBAintensity of the light. Default is (1.0, 1.0, 1.0, 1.0).
2804/19/23 16:10
UML
Specifying Light Sources in OpenGl
GL_POSITION specifies the position of the light in homogeneousobject coordinates. If the w component is zero, the lightis 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.
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
2904/19/23 16:10
UML
Enabling the Lights and Lighting
Enabling a light source: glEnable(GL_LIGHTi );
Enabling lighting: glEnable (GL_LIGHTING);
3004/19/23 16:10
UML
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
3104/19/23 16:10
UML
Lighting ChecklistLighting = Lights + Materials + Model
0 Lights- Color of lights is set as desired.
=Recommended: all lights set to white for diffuse, specular, and ambient
- Lights are positioned correctly.=Remember lights are positioned with current
MODELVIEW transformation at time of calling glLightfv() + GL_POSITION.
=Remember position (point) vs. direction (vector).- Remember: Lights are objects and retain properties.- Required lights are enabled.- Lighting is enabled.
3204/19/23 16:10
UML
Lighting ChecklistLighting = Lights + Materials + Model
0 Materials- Color of materials is set as desired.
=Recommended: Set ambient color to zero initially until lighting is working perfectly. Use ambient with care!
=Remember: Material properties are modal and there is only one current material. Therefore set all properties that are required and keep track of current state.
- Be sure the proper normal is set for every polygon drawn. =Make sure the normal is of unit magnitude. You can
use glEnable(GL_NORMALIZE).=Remember: Normals are modal, like materials.
- Do not use glcolor3f() with lighting. Do not use glColorMaterial() in submissions for this class.
3304/19/23 16:10
UML
Lighting ChecklistLighting = Lights + Materials + Model
0 Model- glShadeModel() determines where lighting is calculated
=GL_SMOOTH calculates at each polygon vertex and interpolates (default)
=GL_FLAT calculates at first vertex and uses one color
- glLightModel() sets global properties of lighting=GL_LIGHT_MODEL_TWO_SIDE reverses normals for
back facing polygons. This is the only argument that we should ever require.
=Do not use this function unless you really understand what the effects are.