1 / 44

# Chapter 6 - PowerPoint PPT Presentation

CSPC 352: Computer Graphics Chapter 6: Lighting and Shading Overview Local and global illumination Phong reflectance model (local illumination) Flat, Gouraud, and Phong Shading on a polygonal mesh Surface subdivisions Shading in OpenGL Perspective

Related searches for Chapter 6

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Chapter 6' - JasminFlorian

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### CSPC 352: Computer Graphics

Chapter 6:

Lighting

and

• Local and global illumination

• Phong reflectance model (local illumination)

• Flat, Gouraud, and Phong

• Shading on a polygonal mesh

• Surface subdivisions

• Lighting and shading are accomplished by modeling the world and simulating the laws of physics

• Short story [Stanislaw Lem, The Cyberiad]: The constructor Trurl creates a tiny simulation of a kingdom in a box to make a deposed, exiled despot happy. Trurl’s friend thinks that is terrible…

• There are those who say that we exist in the mind of God. What do you think of that idea?

• Pascal, Pensées: “The arithmetical machine produces effects which come closer to thought than anything which animals can do; but it can do nothing which might lead us to say that it possesses free will, as the animals have.”

• Was it hard to make the 3D flower (first program) look 3D?

• Shading that is appropriate for the lighting is the primary cue to 3D appearance

• [What are some other cues?]

• General approach:

• model the world

• simulate physics

• Global illumination models (ray tracing, radiosity) determine shading by bouncing light around an entire environment (too slow for interactive graphics)

• Local illumination models consider only the surface, light direction, and viewing direction

• To make lighting fast enough, we will initially restrict our attention to:

• Light source, one surface, and viewer (ignore inter-object reflections, shadows)

• Ambient, diffuse, and specular reflection (ignore transparency, refraction, reflection, …)

• In general, a light source is a rather complicated thing. It can emit different amounts of light for each

• Location (x, y, z)

• Direction (, f)

• Wavelength (l)

• Illumination function:I(x, y, z, , f, l)

• Examples: ambient, point, area, spot,distant, …

• Intensity of emitted light can also be a function of wavelength

• We usually model as I = [Ir, Ig, Ib] components

• Some experiments have been done with a whole spectrum of color values, giving more realistic results in some cases

• Intensity doesn’t vary with x, y, z, , f

• I = [Iar, Iag, Iab]

• Point lights have a location (so farther objects receive less light) but are not directional

• I(p0) = [Ir(p0), Ib(p0), Ig(p0)]

• How would you compute the illumination at point p?

• Illumination proportional to inverse square of distance

• I(p, p0) = (1/d2) [Ir(p0), Ib(p0), Ig(p0)]

• Usually result in artificiallyhigh-contrast images

• Area lights generate softershadows, but are usuallyused only in raytracing or radiosity

• Light point lights, but

• Without attenuation based on the distance

• Without difference in direction (parallel rays)

• Location of light source becomes [x, y, z, 0]; noattenuation

• More efficient to computethan point sources

• Directional, i.e. light is emitted in a narrow range of angles, q

• More realistic spotlights wouldmodel a gradual fall-off of light

• E.g. cosef= (s • l)e if s is direction ofsource, l direction to source, both unit vectors

• How do these light sources affect brightness of a surface point?

• Most commonly used model for interactive graphics: Phong Illumination Model

• Involves terms:

• Ambient

• Diffuse

• Specular

• It is a (simplified) model of the physics of reflection

• The directions used by the phong model

• n: surface outward normal

• v: direction to viewer

• l: direction to light source

• r: reflection direction

• Since these are directions, theyare unit vectors.

• An object has an ambient reflectivity coefficient, ka

• A light source gives off a certain amount of ambient light, La

• Total ambient illumination: Ia = ka La

• (For colored light, we repeat this computation for R, G, and B ambient light values and reflectivity coefficients)

• A perfectly diffuse reflector is so rough that it scatters light equally in all directions

• But note that when thelight comes in at an angle,the same energy is spreadout over larger area

• Such surfaces are calledLambertian surfaces (obeying Lambert’s Law)

• At noon, illum. is 1

• As the angle q (u infigure) decreases, illumination goes to zero

• Illumination is proportional to cos(q) (Lambert’s law)

• cos(q) = l • n

• Id = kdl • n Ld

• Specular term adds highlights in the reflection direction

• Note that the smoother and shinier the object, the tigher and brighter thehighlight

• Highlight power falls as viewer v moves away from reflection dir, r. (cos f = v•r)

• Modeled as cosaf, a is shininess coefficient (1..200)

• Is = ks Ls (r•v)a

• Phong illumination model:

I = Ambient + Diffuse + Specular

= Ia + Id + Is

= ka La + kd Ldl • n + ks Ls (r•v)a

• May add light attenuation term

1/(a+bd+cd2) ( ka La + kdl • n Ld) + ks Ls (r•v)a

• Parameters needed:

• Light: La, Ld, Ls for each light

• Surface: ka, kd, ks, a

• Repeat for each color component, light source

• How hard to calculate?

• How do you use the Phong Illumination Model to render an object with shading?

• Consider a polygonal sphere approximation

• How do you find the normals to the faces?

• Shade a face with a constant color?

• How much computation would this require

• Per pixel?

• Per vertex?

• The human visual system enhances edges

• We see stripes (known as MachBands) along edges

• Much like aconvolution!

• How to avoid?

• Define vertex normals as averageof surrounding faces

• Compute lighting equation at each vertex

• Interpolate colors across polygon

• Computation required

• Per pixel?

• Per vertex?

• Very fast! Especially with reasonably large polygons and hardware color interpolation

• Polygon edges are still visible

• Brightness is modelled asa linear function, but that’snot really accurate

• Real highlights are smalland bright and drop off sharply

• If polygons are too large, highlights get distorted and dimmed (notice the funny shape)

• How to avoid these artifacts?

• To eliminate artifacts, interpolate normals

• Results: better shading, much nicer highlights

• Computation required per pixel?

• This is still too expensive to do in hardware, in general

• Don’t confuse Phong Illumination Model and Phong Shading

• Gouraud shading: compute illumination model at each vertex. Interpolate colors. (Often done in hardware)

• Phong shading: interpolate vertex normals. Compute illumination model at each vertex

• OpenGL supports those four light types

• Point, directional lights

GLfloat light0_pos[] = {1.0, 2.0, 3.0, 1.0};

GLfloat light0_pos[] = {1.0, 2.0, 3.0, 0.0};

• Diffuse, Ambient, Specular coefficients

GLfloat diffuse0[] = {1, 0, 0, 1};

GLfloat ambient0[] = {1, 0, 0, 1};

GLfloat spedular0[] = {1, 1, 1, 1};

glEnable(GL_LIGHTING)

• Can enable at least 8 lights:

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_SPECULA, specular0);

• Spotlights: set more light parameters as above

• GL_SPOT_DIRECTION

• GL_SPOT_EXPONENT

• GL_SPOT_CUTOFF

• Material properties are part of the drawing state, specified by glMaterialfv

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};

glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);

glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);

glMaterialfv(GL_FRONT, GL_SPECULAR, specular);

glMaterialf(GL_FRONT, GL_SHININESS, 100.0);

GLfloat emission[]={0.0, 0.3, 0.3, 1.0};

glMaterialfv(GL_FRONT, GL_EMISSION, emission);

• Use GL_FRONT_AND_BACK for two-sided faces

• OpenGL needs to know vertex normals as well as locations

glNormal3fv(n);

glVertex3fv(p);

• How to compute vertex normals?

• Cross product for face normals

• Average normals of surrounding faces

• How to find neighboring faces?

• Compute a normal for each face

• Compute a normal for each vertex as average of adjacent faces

• [Defect: you may not want to smooth-shade across every edge: how should it really be done?]

• What would you have to do to handle material properties, surface colors, etc?

• In real modelers…

• one can usually define smooth curved surfaces

• Eg spheres, quadrics, NURBS, smoothed polygons

• Modeler renders with smoothness setting

• Recursively split polygons into smaller pieces, with new vertices on the smooth surface

• Splitting a triangle can be done by

• Bisecting angles

• Computing the centrum

• Bisecting sides

• Of course, smoother surfaces take longer to draw

• Phong illumination model has ambient, diffuse, and specular terms

• It can be used for Flat, Gouraud, and Phong shading

• OpenGL supports eight ambient, point, distant, and spot lights

• You must specify light and material properties with many OpenGL function calls

• Curved surfaces are modeled with polygon subdivisions