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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend