Introduction to Computer Graphics CS 445 / 645 Lecture 6

advertisement
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( )
 vw
 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
Download