computer graphics cs 543 lecture 7 part 2 cs 543 lecture
play

Computer Graphics CS 543 Lecture 7 (Part 2) CS 543 Lecture 7 (Part - PowerPoint PPT Presentation

Computer Graphics CS 543 Lecture 7 (Part 2) CS 543 Lecture 7 (Part 2) Lighting, Shading and Materials (Part 2) Prof Emmanuel Agu Computer Science Dept. Worcester Polytechnic Institute (WPI) M difi d Ph Modified Phong Model M d l I = k d I d l


  1. Computer Graphics CS 543 – Lecture 7 (Part 2) CS 543 Lecture 7 (Part 2) Lighting, Shading and Materials (Part 2) Prof Emmanuel Agu Computer Science Dept. Worcester Polytechnic Institute (WPI)

  2. M difi d Ph Modified Phong Model M d l I = k d I d l · n + k s I s ( v · r )  + k a I a r )  + k I I k I l n + k I (  Specular term in Phong model requires calculation new reflection vector (r) and view vector (v) for each vertex ( ) f h  Blinn suggested approximation using halfway vector that is more efficient

  3. Th H lf The Halfway Vector V t  h is normalized vector halfway between l and v  h is normalized vector halfway between l and v h = ( l + v )/ | l + v | h = ( l + v )/ | l + v |

  4. U i Using the halfway vector th h lf t  Replace ( v · r )  by ( n · h )  )  b ( h )  ( R l   is chosen to match shininess  Note that halfway angle is half of angle between l and v if vectors are coplanar  Resulting model is known as the modified Phong or Blinn lighting model  Specified in OpenGL standard

  5. Example l Only differences in these teapots are the parameters the parameters in the modified Phong model

  6. C Computation of Vectors t ti f V t  To calculate lighting at vertex P Need l, n, r and v vector at vertex P  User specifies:  Light position  Viewer (camera) position Vi ( ) iti  Vertex (mesh position)  l: Light position – Vertex position  l: Light position – Vertex position  v: Viewer position – vertex position  Normalize all vectors!  Normalize all vectors!

  7. C l Calculating Mirror Direction Vector r l i Mi Di i V  Can compute r from l and n Can comp te r from l and n  l , n and r are co ‐ planar  Problem is determining n r = 2 ( l r = 2 ( l · n ) n - l n ) n l

  8. Fi di Finding Normal, n N l  OpenGL leaves determination of normal to application  OpenGL previously calculated normal for GLU quadrics and  OpenGL previously calculated normal for GLU quadrics and Bezier surfaces. Now deprecated  n calculation differs depending on surface representation OpenGL Application l Calculates n n GLSL Shader

  9. Pl Plane Normals N l  Equation of plane: ax+by+cz+d  Equation of plane: ax+by+cz+d = 0 0  Plane is determined by either  three points p 0 , p 2 , p 3 (on plane) h ( l )  or normal n and 1 point p 0  Normal can be obtained by l b b d b n = (p 2 -p 0 ) × (p 1 -p 0 ) (p 2 -p 0 ) × (p 1 -p 0 ) n p 1 Cross product method p 2 p 0

  10. N Normal for Triangle l f T i l n p 2 n · ( p - p 0 ) = 0 plane n = ( p 2 - p 0 ) × ( p 1 - p 0 ) p p 1 1 normalize n  n/ |n| p 0 Note that right-hand rule determines outward face

  11. N Newell Method for Normal Vectors ll M th d f N l V t  Problems with cross product method: p  calculation difficult by hand, tedious  If 2 vectors almost parallel, cross product is small  Numerical inaccuracy may result p 1 p 2 p 2 p 0  Proposed by Martin Newell at Utah (teapot guy ) g y ) p y ( p  Uses formulae, suitable for computer  Compute during mesh generation  Robust!

  12. N Newell Method for Normal Vectors ll M th d f N l V t  Formulae: Normal N = (mx my mz)  Formulae: Normal N = (mx, my, mz) N        1     m y y z z ( ) ( ) x i next i i next i  0 i N     1 1 N     m z z x x ( ) ( ) y i next i i next i  0 i     1 N     m x x y y ( ) ( ) z i next i i next i  0 i

  13. N Newell Method Example ll M th d E l  Example: Find normal of polygon with vertices  Example: Find normal of polygon with vertices P0 = (6,1,4), P1=(7,0,9) and P2 = (1,1,2)  Using simple cross product: ((7,0,9) ‐ (6,1,4)) X ((1,1,2) ‐ (6,1,4)) = (2, ‐ 23, ‐ 5) (( ) ( )) (( ) ( )) ( ) Using Newell method, plug in values result is same: Normal is (2, ‐ 23, ‐ 5)

  14. N Normal to Sphere l t S h  Implicit function f(x y z) 0  Implicit function f(x,y.z)=0  Normal given by gradient  Sphere f( p )= p·p -1 n = [ ∂ f/ ∂ x, ∂ f / ∂ y, ∂ f/ ∂ z] T = p 

  15. P Parametric Form t i F  For sphere  For sphere x=x(u,v)=cos u sin v y=y(u,v)=cos u cos v y y( , ) z= z(u,v)=sin u  Tangent plane determined by vectors ∂ p / ∂ u = [ ∂ x/ ∂ u, ∂ y/ ∂ u, ∂ z/ ∂ u]T ∂ p / ∂ v = [ ∂ x/ ∂ v, ∂ y/ ∂ v, ∂ z/ ∂ v]T  Normal given by cross product n = ∂ p / ∂ u × ∂ p / ∂ v n = ∂ p / ∂ u × ∂ p / ∂ v

  16. O OpenGL shading GL h di Need Need   Normals  material properties material properties   Lights  State ‐ based shading functions (glNormal, State based shading functions (glNormal,  glMaterial, glLight) have been deprecated 2 options: p  Compute lighting in application  or send attributes to shaders 

  17. Specifying a Point Light Source Specifying a Point Light Source  For each light source, we set RGBA for diffuse, For each light source, we set RGBA for diffuse, specular, and ambient components, and its position  Alpha = transparency Blue Red Green Alpha vec4 diffuse0 =vec4(1.0, 0.0, 0.0, 1.0); vec4 ambient0 = vec4(1.0, 0.0, 0.0, 1.0); vec4 specular0 = vec4(1.0, 0.0, 0.0, 1.0); p ( , , , ); vec4 light0_pos =vec4(1.0, 2.0, 3,0, 1.0); x y y z w

  18. Di t Distance and Direction d Di ti vec4 light0_pos =vec4(1.0, 2.0, 3,0, 1.0); 4 li ht0 4(1 0 2 0 3 0 1 0) x y z w  Position is in homogeneous coordinates  If w =1 0 we are specifying a finite (x y z) location  If w =1.0, we are specifying a finite (x,y,z) location  If w =0.0, light at infinity (x/w = infinity if w = 0) (x/w = infinity if w = 0)  Distance term coefficients usually quadratic (1/(a+b*d+c*d*d)) where d is distance from vertex to (1/(a+b d+c d d)) where d is distance from vertex to the light source

  19. C Computation of Vectors t ti f V t  To calculate lighting at vertex P Need l, n, r and v vector at vertex P  l: Light position – Vertex position  v: Viewer position – vertex position

  20. CTM M CTM Matrix passed into Shader i d i Sh d  Recall: CTM matrix concatenated in application mat4 ctm = RotateX(30)*Translate(4,6,8);  Connected to matrix ModelView in shader  Recall: CTM matrix contains object transform + Camera in vec4 vPosition; Uniform mat4 ModelView ; main( ) { // Transform vertex position into eye coordinates vec3 pos = (ModelView * vPosition).xyz; ……….. }

  21. C Computation of Vectors t ti f V t  CTM transforms vertex position into eye coordinates  Eye coordinates? Object, light distances measured from eye  Normalize all vectors! (magnitude = 1) N li ll ! ( i d 1)  GLSL has a normalize function  Note: vector lengths affected by scaling // Transform vertex position into eye coordinates vec3 pos = (ModelView * vPosition).xyz; vec3 L = normalize( LightPosition.xyz - pos ); // light vector vec3 E = normalize( -pos ); // view vector 3 E li ( ) // i t vec3 H = normalize( L + E ); // Halfway vector

  22. S Spotlights tli ht  Derive from point source  Derive from point source  Direction I (of lobe center)  Cutoff: No light outside  g  Attenuation: Proportional to cos       

  23. Gl b l A Global Ambient Light bi t Li ht  Ambient light depends on light color  Ambient light depends on light color  Red light in white room will cause a red ambient term  Previous ambient component added at vertices P i bi t t dd d t ti  Global ambient term may be added separately globally l b ll  Often helpful for testing

  24. M Moving Light Sources i Li ht S  Light sources are geometric objects whose  Light sources are geometric objects whose positions or directions are affected by the model ‐ view matrix  Depending on where we place the position (direction) transformation command, we can (direction) transformation command, we can  Move light source(s) with object(s)  Fix object(s) and move light source(s) j ( ) g ( )  Fix light source(s) and move object(s)  Move light source(s) and object(s) independently g ( ) j ( ) p y

  25. M t Material Properties i l P ti  Material properties also has ambient, diffuse, specular  Material properties specified as RGBA  Reflectivities  w component gives opacity  Default? all surfaces are opaque p q Blue Opacity Red Green vec4 ambient = vec4(0.2, 0.2, 0.2, 1.0); ( , , , ) vec4 diffuse = vec4(1.0, 0.8, 0.0, 1.0); vec4 specular = vec4(1.0, 1.0, 1.0, 1.0); GLfloat shine = 100.0 Material Shininess

  26. F Front and Back Faces t d B k F  Every face has a front and back  Every face has a front and back  For many objects, we never see the back face so we don’t care how or if it’s rendered don t care how or if it s rendered  If it matters, we can handle in shader back faces not visible back faces visible

  27. E Emissive Term i i T  Some materials glow  Some materials glow  Simulate in OpenGL using emissive component  This component is unaffected by any sources or transformations

Recommend


More recommend