250 likes | 367 Views
CS 551 / 645: Introductory Computer Graphics. David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551. Administrivia. Assignment 6: line.c, gfx.c, lookat() description. Recap: Lambert’s Cosine Law. Ideal diffuse surfaces reflect according to Lambert’s cosine law :
E N D
CS 551 / 645: Introductory Computer Graphics David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551 David Luebke 11/4/2014
Administrivia • Assignment 6: line.c, gfx.c, lookat()description David Luebke 11/4/2014
Recap: Lambert’s Cosine Law • Ideal diffuse surfaces reflect according to Lambert’s cosine law: The energy reflected by a small portion of a surface from a light source in a given direction is proportional to the cosine of the angle between that direction and the surface normal • These are often called Lambertian surfaces • Note that the reflected intensity is: • Independent of the viewing direction • Dependent on the surface orientation with regard to the light source David Luebke 11/4/2014
Recap: Lambert’s Law David Luebke 11/4/2014
Recap: Computing Diffuse Reflection • The angle between the surface normal and the incoming light is the angle of incidence: Idiffuse = kd Ilightcos • In practice we use vector arithmetic: Idiffuse = kd Ilight(n • l) l n David Luebke 11/4/2014
Recap: Specular Reflection • Shiny surfaces exhibit specular reflection • Polished metal • Glossy car finish • A light shining on a specular surface causes a bright spot known as a specular highlight • Where these highlights appear is a function of the viewer’s position, so specular reflectance is view-dependent David Luebke 11/4/2014
Recap: The Optics of Reflection • Reflection follows Snell’s Laws: • The incoming ray and reflected ray lie in a plane with the surface normal • The angle that the reflected ray forms with the surface normal equals the angle formed by the incoming ray and the surface normal: l = r David Luebke 11/4/2014
Recap: Non-Ideal Specular Reflectance • An illustration of this angular falloff: • How might we model this falloff? David Luebke 11/4/2014
Recap: Phong Lighting • The most common lighting model in computer graphics was suggested by Phong: • The nshinyterm is a purelyempirical constant that varies the rate of falloff • Though this model has no physical basis, it works (sort of) in practice David Luebke 11/4/2014
Calculating Phong Lighting • The cos term of Phong lighting can be computed using vector arithmetic: • V is the unit vector towards the viewer • Common simplification: V is constant (implying what?) • Ris the ideal reflectance direction • An aside: we can efficiently calculate R David Luebke 11/4/2014
Calculating The R Vector • This is illustrated below: David Luebke 11/4/2014
Blinn & Torrance Variation • Blinn introduced a variation of the Phong model: • Here H is a vector bisecting the incoming light direction and viewing direction: David Luebke 11/4/2014
Blinn & Torrance Variation • What does H represent? (Hint: think of H as the normal of a plane) • A: the orientation of a plane which will maximally reflect light from L towards V • Why bother with this variation? David Luebke 11/4/2014
Phong Examples • These spheres illustrate the Phong model as L and nshiny are varied: David Luebke 11/4/2014
The Phong Lighting Model • Our final empirically-motivated model for the illumination at a surface includes ambient, difuse, and specular components: • Commonly called Phong lighting • Note: once per light • Note: once per color component • Do ka, kd, and ks vary with color component? David Luebke 11/4/2014
Phong Lighting: Intensity Plots David Luebke 11/4/2014
Applying Illumination • We now have an illumination model for a point on a surface • Assuming that our surface is defined as a mesh of polygonal facets, which points should we use? • Keep in mind: • It’s a fairly expensive calculation • Several possible answers, each with different implications for the visual quality of the result David Luebke 11/4/2014
Applying Illumination • With polygonal/triangular models: • Each facet has a constant surface normal • If the light is directional, the diffuse reflectance is constant across the facet • If the eyepoint is infinitely far away (constant V), the specular reflectance of a directional light is constant across the facet David Luebke 11/4/2014
Flat Shading • The simplest approach, flat shading, calculates illumination at a single point for each polygon: • If an object really is faceted, is this accurate? • No: • For point sources, the direction to light varies across the facet • For specular reflectance, direction to eye varies across the facet David Luebke 11/4/2014
Flat Shading • We can refine it a bit by evaluating the Phong lighting model at each pixel of each polygon, but the result is still clearly faceted: • To get smoother-looking surfaceswe introduce vertex normals at eachvertex • Usually different from facet normal • Used onlyfor shading (as opposed to what?) • Think of as a better approximation of the real surface that the polygons approximate (draw it) David Luebke 11/4/2014
Vertex Normals • Vertex normals may be • Provided with the model • Computed from first principles • Approximated by averaging the normals of the facets that share the vertex David Luebke 11/4/2014
Gouraud Shading • This is the most common approach • Perform Phong lighting at the vertices • Linearly interpolate the resulting colors over faces • This is what OpenGL does • Demo at http://www.cs.virginia.edu/~cs551/vrml/tpot.wrl • Does this eliminate the facets? David Luebke 11/4/2014
Phong Shading • Phong shading is not the same as Phong lighting, though they are sometimes mixed up • Phong lighting: the empirical model we’ve been discussing to calculate illumination at a point on a surface • Phong shading: linearly interpolating the surface normal across the facet, applying the Phong lighting model at every pixel • Same input as Gouraud shading • Usually very smooth-looking results: • But, considerably more expensive David Luebke 11/4/2014
An Aside: Transforming Normals • Irritatingly, the matrix for transforming a normal vector is not the same as the matrix for the corresponding transformation on points • In other words, don’t just treat normals as points: David Luebke 11/4/2014
Transforming Normals • Some not-too-complicated affine analysis shows : • If A is a matrix for transforming points,then (AT)-1 is the matrix for transforming normals • When is this the same matrix? • What is homogeneous representation of a vector (as opposed to a point?) • Can use this to simplify the problem: only upper 3x3 matrix matters, so use only it • More detail in F&vD Appendix A.5 David Luebke 11/4/2014