Introduction to Computer Graphics CS 445 / 645 Lecture 6 M.C. Escher – Smaller and Smaller (1956) Geometric primitives and the rendering pipepline Rendering geometric primitives Describe objects with points, lines, and surfaces • Compact mathematical notation • Operators to apply to those representations Render the objects • The rendering pipeline Appendix A1-A5 H&B Figure 109 Rendering Generate an image from geometric primitives Rendering Geometric Primitives Raster Image 3D Rendering Example What issues must be addressed by a 3D rendering system? Overview 3D scene representation 3D viewer representation Visible surface determination Lighting simulation Overview 3D scene representation 3D viewer representation Visible surface determination Lighting simulation How is the 3D scene described in a computer? 3D Scene Representation Scene is usually approximated by 3D primitives • Point • Line segment • Polygon • Polyhedron • Curved surface • Solid object • etc. 3D Point Specifies a location 3D Point Specifies a location • Represented by three coordinates • Infinitely small (x,y,z) 3D Vector Specifies a direction and a magnitude 3D Vector Specifies a direction and a magnitude • Represented by three coordinates • Magnitude ||V|| = sqrt(dx dx + dy dy + dz dz) • Has no location (dx,dy,dz) Vector Addition/Subtraction • operation u + v, with: – Identity 0 : v + 0 = v – Inverse - : v + (-v) = 0 • Addition uses the “parallelogram rule”: v u+v u v u -v u-v -v Vector Space Vectors define a vector space • They support vector addition – Commutative and associative – Possess identity and inverse • They support scalar multiplication – Associative, distributive – Possess identity Affine Spaces • Vector spaces lack position and distance – They have magnitude and direction but no location • Combine the point and vector primitives – Permits describing vectors relative to a common location • A point and three vectors define a 3-D coordinate system • Point-point subtraction yields a vector Coordinate Systems lGrasp z-axis with hand lThumb points in direction of z-axis lRoll fingers from positive x-axis towards positive y-axis Y Y Right-hand coordinate system Z Left-handed coordinate system X X Z Points + Vectors Points support these operations • Point-point subtraction: Q Q-P=v – Result is a vector pointing from P to Q • Vector-point addition: – Result is a new point v P+v=Q P • Note that the addition of two points is not defined 3D Line Segment Linear path between two points 3D Line Segment Use a linear combination of two points • Parametric representation: – P = P1 + t (P2 - P1), (0 t 1) P2 P1 3D Ray Line segment with one endpoint at infinity • Parametric representation: – P = P1 + t V, (0 <= t < ) V P1 3D Line Line segment with both endpoints at infinity • Parametric representation: – P = P1 + t V, (- < t < ) P1 V 3D Line – Slope Intercept Slope =m = rise / run Slope P = (x, y) y = (y - y1) / (x - x1) = (y2 - y1) / (x2 - x1) P2 = (x2, y2) P1 = (x1, y1) Solve for y: y = [(y2 - y1)/(x2 - x1)]x + [-(y2-y1)/(x2 - x1)]x1 + y1 or: y = mx + b x Euclidean Spaces Q: What is the distance function between points and vectors in affine space? A: Dot product • Euclidean affine space = affine space plus dot product • Permits the computation of distance and angles Dot Product • The dot product or, more generally, inner product of two vectors is a scalar: v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D) v u θ Dot Product Useful for many purposes • Computing the length (Euclidean Norm) of a vector: – length(v) = ||v|| = sqrt(v • v) • Normalizing a vector, making it unit-length: v = v / ||v|| • Computing the angle between two vectors: – u • v = |u| |v| cos(θ) v • Checking two vectors for orthogonality – u • v = 0.0 u θ Dot Product Projecting one vector onto another • If v is a unit vector and we have another vector, w • We can project w perpendicularly onto v w v u • And the result, u, has length w • v u w cos( ) vw w v w v w Dot Product Is commutative • u•v=v•u Is distributive with respect to addition • u • (v + w) = u • v + u • w Cross Product The cross product or vector product of two vectors is a vector: ux uy uz v1 v 2 x1 x2 y1 y2 z1 z2 determinant y1 z 2 y 2 z1 ( x1 z 2 x 2 z1) x1 y 2 x 2 y1 The cross product of two vectors is orthogonal to both Right-hand rule dictates direction of cross product Cross Product Right Hand Rule See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product Cross Product Right Hand Rule See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product Cross Product Right Hand Rule l l l l See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product Cross Product Right Hand Rule l l l l See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product Cross Product Right Hand Rule l l l l See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product Other helpful formulas Length = sqrt (x2 - x1)2 + (y2 - y1)2 Midpoint, p2, between p1 and p3 • p2 = ((x1 + x3) / 2, (y1 + y3) / 2)) Two lines are perpendicular if: • M1 = -1/M2 • cosine of the angle between them is 0 • Dot product = 0 3D Plane A linear combination of three points P2 P1 P3 3D Plane A linear combination of three points N = (a,b,c) • Implicit representation: – ax + by + cz + d = 0, or – P·N + d = 0 • N is the plane “normal” – Unit-length vector P2 P1 P3 d – Perpendicular to plane Origin 3D Sphere All points at distance “r” from point “(cx, cy, cz)” • Implicit representation: – (x - cx)2 + (y - cy)2 + (z - cz)2 = r 2 • Parametric representation: – x = r cos() cos() + cx – y = r cos() sin() + cy – z = r sin() + cz r 3D Geometric Primitives More detail on 3D modeling later in course • Point • Line segment • Polygon • Polyhedron • Curved surface • Solid object • etc. H&B Figure 10.46 Take a breath We’re done with the primitives Now we’re moving on to study how graphics uses these primitives to make pretty pictures Rendering 3D Scenes Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display Camera Models The most common model is pin-hole camera • All captured light rays arrive along paths toward focal point without lens distortion (everything is in focus) • Sensor response proportional to radiance Other models consider ... Depth of field Motion blur Lens distortion View plane Eye position (focal point) Camera Parameters What are the parameters of a camera? Camera Parameters Position • Eye position (px, py, pz) Orientation Up • View direction (dx, dy, dz) direction • Up direction (ux, uy, uz) Aperture “Look at” Point back • Field of view (xfov, yfov) Film plane • “Look at” point • View plane normal right View Plane Eye Position Moving the camera Up Back Towards Right View Frustum The Rendering Pipeline Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display Rendering: Transformations We’ve learned about transformations But they are used in three ways: • Modeling transforms • Viewing transforms (Move the camera) • Projection transforms (Change the type of camera) The Rendering Pipeline: 3-D Scene graph Object geometry Result: Modeling Transforms • All vertices of scene in shared 3-D “world” coordinate system Lighting Calculations • Vertices shaded according to lighting model Viewing Transform • Scene vertices in 3-D “view” or “camera” coordinate system Clipping • Exactly those vertices & portions of polygons in view frustum Projection Transform • 2-D screen coordinates of clipped vertices The Rendering Pipeline: 3-D Scene graph Object geometry Modeling Transforms Lighting Calculations Viewing Transform Clipping Projection Transform Result: • All vertices of scene in shared 3-D “world” coordinate system Rendering: Transformations Modeling transforms • Size, place, scale, and rotate objects and parts of the model w.r.t. each other • Object coordinates -> world coordinates Y Y Z X X Z The Rendering Pipeline: 3-D Scene graph Object geometry Modeling Transforms Lighting Calculations Viewing Transform Clipping Projection Transform Result: •All geometric primitives are illuminated Lighting Simulation Lighting parameters Light Source • Light source emission • Surface reflectance • Atmospheric attenuation Surface • Camera response N Camera N Lighting Simulation Direct illumination Light Source • Ray casting • Polygon shading N Global illumination • Ray tracing Surface N • Monte Carlo methods • Radiosity methods More on these methods later! Camera N The Rendering Pipeline: 3-D Scene graph Object geometry Modeling Transforms Lighting Calculations Viewing Transform Clipping Projection Transform Result: • Scene vertices in 3-D “view” or “camera” coordinate system Rendering: Transformations Viewing transform • Rotate & translate the world to lie directly in front of the camera – Typically place camera at origin – Typically looking down -Z axis • World coordinates a view coordinates The Rendering Pipeline: 3-D Scene graph Object geometry Modeling Transforms Lighting Calculations Viewing Transform Clipping Projection Transform Result: • Remove geometry that is out of view Assignment 2 Due two and a half weeks from today • Project description available online • We’ll discuss details in class on Monday The Rendering Pipeline: 3-D Scene graph Object geometry Modeling Transforms Lighting Calculations Viewing Transform Clipping Projection Transform Result: • 2-D screen coordinates of clipped vertices Rendering: Transformations Projection transform • Apply perspective foreshortening – Distant = small: the pinhole camera model • View coordinates a screen coordinates Rendering: Transformations Perspective Camera Orthographic Camera Rendering 3D Scenes Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display Rasterize Convert screen coordinates to pixel colors Summary Geometric primitives • Points, vectors Operators on these primitives • Dot product, cross product, norm The rendering pipeline • Move models, illuminate, move camera, clip, project to display, rasterize