3d computer graphics an oh so brief introduction

Post on 12-Jan-2016

223 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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):

0.1'''

0.10.10.00.00.0

0.10.00.0

0.00.10.0

0.00.00.1

ZYXZ

Y

X

z

y

x

Scale

• To “scale” a point (X, Y, Z) by sizes (x, y, z):

0.1'''

0.10.10.00.00.0

0.00.00.0

0.00.00.0

0.00.00.0

ZYXZ

Y

X

z

y

x

Rotate X

• To “rotate” a point (X, Y, Z) about the X axis by an angle Θ:

0.1'''

0.10.10.00.00.0

0.0)cos()sin(0.0

0.0)sin()cos(0.0

0.00.00.00.1

ZYXZ

Y

X

Rotate Y

• To “rotate” a point (X, Y, Z) about the Y axis by an angle Θ:

0.1'''

0.10.10.00.00.0

0.0)cos(0.0)sin(

0.00.00.10.0

0.0)sin(0.0)cos(

ZYXZ

Y

X

Rotate Z

• To “rotate” a point (X, Y, Z) about the Z axis by an angle Θ:

0.1'''

0.10.10.00.00.0

0.00.10.00.0

0.00.0)cos()sin(

0.00.0)sin()cos(

ZYXZ

Y

X

Shear X

• To “shear” a point (X, Y, Z) int the X direction by an angle Θ:

0.1'''

0.10.10.00.00.0

0.00.10.00.0

0.00.00.10.0

0.00.0)tan(

0.10.1

ZYXZ

Y

X

Shear Y

• To “shear” a point (X, Y, Z) in the Y direction by an angle Θ:

0.1'''

0.10.10.00.00.0

0.00.10.00.0

0.0)tan(

0.10.10.0

0.00.00.00.1

ZYXZ

Y

X

Shear Z

• To “shear” a point (X, Y, Z) in the Z direction by an angle Θ:

0.1'''

0.10.10.00.00.0

0.00.10.0)tan(

0.10.00.00.10.0

0.00.00.00.1

ZYXZ

Y

X

Combining matrices• Rotation about an arbitrary axis is performed by

combining matrices– Thus the need for homogeneous coordinates

– Axis is a unit vector from <0, 0, 0> to <Px, Py, Pz>

1000

100

010

001

PPP

z

y

x

Translate to origin

0.10.00.00.0

0.0)cos()sin(0.0

0.0)sin()cos(0.0

0.00.00.00.1

Rotate Θ about X

0.10.00.00.0

0.0)cos(0.0)sin(

0.00.00.10.0

0.0)sin(0.0)cos(

Rotate Θ about Y

0.10.00.00.0

0.00.10.00.0

0.00.0)cos()sin(

0.00.0)sin()cos(

Rotate Θ about Z

0.10.00.00.0

0.0)cos(0.0)sin(

0.00.00.10.0

0.0)sin(0.0)cos(

Rotate -Θ about Y

0.10.00.00.0

0.0)cos()sin(0.0

0.0)sin()cos(0.0

0.00.00.00.1

Rotate -Θ about X

1000

100

010

001

PPP

z

y

x

Translate to point

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

3D → 2D Transformation

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 and Circumscribe

• Inscribe– Given a triangle find

a circle that fits inside it

• Circumscribe– Given a triangle find

a circle that passes through all three vertices

triangle

inscribe

circumscribe

Delaunay, circles, Voronoi

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

top related