400 likes | 694 Views
3D Computer Graphics. An oh so brief introduction. What you need to know…. There’s really only a couple of things Coordinate systems Matrices 3D → 2D transformation. Homogeneous Coordinates. A computational convenience. Coordinate systems.
E N D
3D Computer Graphics An oh so brief introduction
What you need to know… • There’s really only a couple of things • Coordinate systems • Matrices • 3D → 2D transformation
Homogeneous Coordinates A computational convenience
Coordinate systems • To represent a location (point) in 3D space one needs 3 numbers (X, Y, Z) • Each value specifies a distance along the respective coordinate axis • The resultant location (point) is the sum of the axis unit vectors multiplied by the values
Manipulating points • As we will see soon, manipulations of points in 3 space are generally performed using matrix notation • But, as it turns out, this is not readily done using points represented by 3 values • Something better is needed…
Homogeneous coordinates • Homogeneous coordinates were introduced as a means of facilitating matrix-based transformations applied to points • It is a 4D representation of a 3D point (X, Y, Z) → (X, Y, Z, 1.0) (X/W, Y/W, Z/W) → (X, Y, Z, W) • That’s really all you need to know about homogeneous coordinates
Matrix Operations Uses of Matrix Multiplication
Translation • To move a point (X, Y, Z) by amounts (x, y, z):
Scale • To “scale” a point (X, Y, Z) by sizes (x, y, z):
Rotate X • To “rotate” a point (X, Y, Z) about the X axis by an angle Θ:
Rotate Y • To “rotate” a point (X, Y, Z) about the Y axis by an angle Θ:
Rotate Z • To “rotate” a point (X, Y, Z) about the Z axis by an angle Θ:
Shear X • To “shear” a point (X, Y, Z) int the X direction by an angle Θ:
Shear Y • To “shear” a point (X, Y, Z) in the Y direction by an angle Θ:
Shear Z • To “shear” a point (X, Y, Z) in the Z direction by an angle Θ:
Rotate -Θabout X Translate to point Rotate -Θ about Y Rotate Θabout Z Rotate Θabout Y Translate to origin Rotate Θ about X Combining matrices
Problems • Rotation based on matrix operations [potentially] suffers some afflictions • Difficult to interpolate between rotations when you want to create a smooth sequence • Gimbal lock – when one of the three axes rotates to align with another essentially rendering it redundant (reduces the number of degrees of freedom) • Non-linear speed of rotation – objects don’t rotate smoothly with constant velocity • These afflictions are due to the use of Euler angles and trigonometric functions that don’t always behave well (sign changes at quadrant changes, asymptotic behavior)
Quaterions • Another method for performing rotations • Based on complex arithmetic (complex numbers – not complicated numbers) • Straight forward conversion from Euler (matrix based) operations to Quaternions • The underlying concepts are nasty • The implementation is easy • Just a bunch of multiplications and additions • Handles the constant velocity rotation issue • SLERP (Spherical LinEaR interPolation) • Ken Shoemake is credited for coming up with the approach
Projections – Orthographic • Projectors are perpendicular to the projection plane • Project plane is parallel to one of the principal faces
Projections – Axonometric • Projectors are perpendicular to the projection plane • Project plane has any desired orientation with respect to the object faces
Projections – Oblique • Projectors are arbitrary with respect to the projection plane
Projections – Perspective • Projectors converge at the center of projection
Projections • Each has advantages and disadvantages dealing with • Retention of angles between lines • Retention of distances between points • Visibility of surfaces • Realization via camera models • Realistic synthesis of scenes
Triangulation Because you asked
Triangulation • Problem: given a set of points, find a set of triangles that connects those points in a mesh • Solution: computational geometry provides us with the Voronoi Diagram and (it’s dual) the Delaunay Triangulation
Delaunay Triangulation • For a given set of points • Find a set of edges satisfying an "empty circle" property: • for each edge we can find a circle containing the edge's endpoints but not containing any other points • Deals with
Voronoi Diagram • For a given set of points • Every point in the region around a point is closer to that point than to any of the other point
Inscribe Given a triangle find a circle that fits inside it Circumscribe Given a triangle find a circle that passes through all three vertices circumscribe triangle inscribe Inscribe and Circumscribe
Summary • This is all stuff that is fundamental to computer graphics (with the possible exception of triangulation – that’s computational geometry) • Typical 1 semester undergraduate course spends most of it’s time on these topics • Lots of good books on this material
Bibliography • Interactive Computer Graphics 4th edition • Angel • Addison-Wesley • Computer Graphics Principles and Practice 2nd edition • Foley, van Dam, Feiner, Hughes • Addison-Wesley • Java 2D Graphics • Knudsen • O’Reilly • Computer Graphics for Java Programmers • Ammeraal • Wiley
Bibliography • Essential Mathematics for Games & Interactive Applications • van Verth, Bishop • Morgan Kaufmann • Visualizing Quaternions • Hanson • Morgan Kaufmann • 3D Game Engine Design • Eberly • Morgan Kaufmann
Bibliography • Game Physics • Eberly • Morgan Kaufmann • Killer Game Programming in Java • Davison • O’Reilly • Developing Games in Java • Brackeen, Barker, Vanhelsuwe • New Riders • Software Engineering and Computer Games • Rucker • Addison-Wesley