MAE152 Computer Graphics for Scientists and Engineers - PowerPoint PPT Presentation

About This Presentation
Title:

MAE152 Computer Graphics for Scientists and Engineers

Description:

Computer Graphics for Scientists and Engineers Lighting in OpenGL Graphics: Conceptual Model Lights, Surfaces, and Imaging Lights, Surfaces, and Imaging Modes of ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 42
Provided by: casimpkins
Category:

less

Transcript and Presenter's Notes

Title: MAE152 Computer Graphics for Scientists and Engineers


1
MAE152Computer Graphics for Scientists and
Engineers
  • Lighting in OpenGL

2
Graphics Conceptual Model
Real Light
Human Eye
Real Object
Synthetic Light Source
Synthetic Camera
Human Eye
Synthetic Model
Real Object
Display Device
Graphics System
3
Lights, Surfaces, and Imaging
Objects
Proj. Plane
Viewer
4
Lights, Surfaces, and Imaging
5
Modes of Interaction of Light with Materials
Note Any given surface can have some of all
three properties.
6
Illuminating Surfaces
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
Light Sources
  • Ambient light
  • no identifiable source or direction
  • hack for replacing true global illumination
  • (light bouncing off from other objects)

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.
Although every surface receives the same
illumination, each surface can reflect the light
differently.
10
Point Sources
An ideal point source radiates equally in all
directions. It can be characterized by
Intensity of illumination from a point source is
proportional to the inverse square of the
distance between the point and the illuminated
surface.
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. w0
  • point lights
  • same intensity in all directions
  • spot lights
  • limited set of directions
  • pointdirectioncutoff angle

12
Spotlights
Spotlights are point sources for which the angle
through which light has been emitted has been
limited.
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.
14
Lighted Sphere Demo and Source Code
15
Reflection
16
Vectors Used byPhong 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.
17
Elements of the Phong Lighting Model
18
Elements of the Phong Lighting ModelAmbient
Reflection
The intensity of ambient light is the same at
every point on the surface. The percentage of
light reflected is given by
Note that the ambient reflection terms can be
different for red, green and blue.
19
Elements of the Phong Lighting ModelDiffuse
Reflection
Intensity of illumination is dependent upon the
incidence angle of light from the source
Adding a term for attenuation with distance from
source
20
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,
Adding a distance term, and expressing the cosine
in terms of a dot product
21
The Complete Lighting Model
22
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
p2
p1
n
p0
23
Calculation of NormalsMathematically Defined
Surface Sphere
Sphere is defined implicitly by equation
24
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)
25
Shading in OpenGLFlat 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.
26
Mach Band Effect(Mach, 1865)
Color Science, Concepts and Methods Wyszecki,
Stiles
27
Mach Band Effect
28
Mach Band Effect
29
Shading in OpenGLSmooth 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.

30
Gouraud Shading
31
Lighting Implementation in OpenGL
32
Lighted Sphere Demo and Source Code
33
Enable Depth BufferFor Hidden Surface Removal
//before enabling while (1) get_viewing_point_f
rom_mouse_position() glClear(GL_COLOR_BUFFER_BIT)
draw_3d_object_A() draw_3d_object_B()
//after enabling glutInitDisplayMode (GLUT_DEPTH
.... ) glEnable(GL_DEPTH_TEST) ... while (1)
glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) get_viewing_point_from_mouse
_position() draw_3d_object_A() draw_3d_object_B(
)
34
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).

35
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.

36
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

37
Enabling the Lights and Lighting
Enabling a specific light source
glEnable(GL_LIGHTi ) Enabling the lighting
model glEnable (GL_LIGHTING)
38
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

39
Types of Light and effects
40
  • Demo
  • Rotating light

41
Creating Light Sources in OpenGL
  • void glLightif(GLenum light, GLenum pname, TYPE
    param)
  • void glLightifv(GLenum light, GLenum pname,
    TYPE param)

42
Light Sources in OpenGL (cont.)
  • Color for ambient, diffuse, and specular 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
  • glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient)
  • glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse)
  • glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular)

43
Light Sources in OpenGL (cont.)
  • Directional light
  • GLfloat light_position 1.0, 1.0, 1.0, 0.0
  • glLightfv(GL_LIGHT0, GL_POSITION,
    light_position)
  • Positional light
  • when w is nonzero, (x, y, z) specify the location

44
Light Sources in OpenGL (cont.)
  • Attenuation factor
  • d distance between the lights position and the
    vertex
  • kc GL_CONSTANT_ATTENUATION
  • kl GL_LINEAR_ATTENUATION
  • kq GL_QUADRATIC_ATTENUATION

45
Light Sources in OpenGL (cont.)
  • Spotlights
  • GL_SPOT_CUTOFF
  • the angle between the axis of the cone and a ray
    along the edge of the cone
  • GL_SPOT_DIRECTION
  • the axis of the cone of light
  • GL_SPOT_EXPONENT
  • to control how concentrated the light is.

46
Selecting a Lighting Model in OpenGL
  • void glLightModelif(GLenum pname, TYPE param)
  • void glLightModelifv(GLenum pname, TYPE param)

47
Lighting Model in OpenGL (cont.)
  • Global ambient light
  • Ambient light thats not from any particular
    light source
  • GLfloat lmodel_ambient 0.2, 0.2, 0.2, 1.0
  • glLightModelfv(GL_LIGHT_MODEL_AMBIENT,
    lmodel_ambient)
  • Local or infinite viewpoint
  • With infinite viewpoint, the direction between it
    and any vertex remains constant
  • A local viewpoint yields more realistic results,
    but decreased performance
  • glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER,
    GL_TRUE)

48
Lighting Model in OpenGL (cont.)
  • Two-sided lighting
  • glLightModel(LIGHT_MODEL_TWO_SIDE, GL_TRUE)
  • Enabling lighting
  • glEnable(GL_LIGHTING)
  • glEnable(GL_LIGHT0)
  • glDisable(GL_LIGHTING)

49
Multiple Lights in OpenGL
  • At least, 8 lights
  • GL_LIGHT0, GL_LIGHT1,..., GL_LIGHT7
  • Increasing the number of lights adversely affects
    performance

50
Defining Material Properties in OpenGL
  • void glMaterialif(GLenum face, GLenum pname,
    TYPE param)
  • void glMaterialifv(GLenum face, GLenum pname,
    TYPE param)

51
Material Properties in OpenGL (Cont.)
  • Diffuse and ambient reflection
  • Affect the color of the diffuse and ambient light
    reflected by an object
  • Ambient term ambientlightambientmaterial
  • Diffuse term
  • For real-world objects, diffuse and ambient
    reflectance are normally the same color
  • GLfloat mat_amb_diff 0.1, 0.5, 0.8, 1.0
  • glMaterialfv(GL_FRONT_AND_BACK,
    GL_AMBIENT_AND_DIFFUSE, mat_amb_diff)

52
Example
  • GLfloat a 0.1, 0.5, 0.8, 1.0
  • GLfloat b 0.1, 0.5, 0.8, 1.0
  • GLfloat c 0.1, 0.5, 0.8, 1.0
  • GLfloat d 0.0, 0.0, 0.0, 1.0
  • glMaterialfv(GL_FRONT, GL_AMBIENT, a)
  • glMaterialfv(GL_FRONT, GL_DIFFUSE, b)
  • glMaterialfv(GL_FRONT, GL_SPECULAR, c)
  • glMaterialfv(GL_FRONT, GL_SHININESS, 50)
  • glMaterialfv(GL_FRONT, GL_EMISSION, d)
  • glutSolidSphere(1.0, 16, 16)

53
Material Properties in OpenGL (Cont.)
  • Specular reflection
  • GL_SPECULAR specifies the color
  • GL_SHININESS controls the size and brightness of
    the highlight
  • Specular term
  • Emission
  • An object appears to give off light
  • GL_EMISSION specifies the color

54
Material Properties in OpenGL (Cont.)
  • Changing material properties
  • When only a single property is changed, use
    glColorMaterial(), instead of glMaterial() for
    performance
  • glEnable(GL_COLOR_MATERIAL)
  • glColorMaterial(GL_FRONT, GL_DIFFUSE)
  • glColor3f(0.2, 0.5, 0.8)
  • // draw some object here
  • glColorMaterial(GL_FRONT, GL_SPECULAR)
  • glColor3f(0.9, 0.0, 0.2)
  • // draw other objects here
  • glDisable(GL_COLOR_MATERIAL)

55
End of Lighting
Write a Comment
User Comments (0)
About PowerShow.com