Reminder - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

Reminder

Description:

Position and orient your camera. 28. Projection Transformation. Control the 'lens' of the camera. Project the object from 3D world to 2D screen. 29 ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 48
Provided by: charle
Learn more at: https://cse.osu.edu
Category:
Tags: reminder

less

Transcript and Presenter's Notes

Title: Reminder


1
Reminder
  • Any sequence of matrix operations can be composed
    into a single matrix
  • Well always use an extra dimension for all
    vertices (x,y,w)

2
Extending to 3D
  • Homogeneous coordinates in 3D
  • x,y,z,1T (x,y,z,w)
  • Matrices of this form
  • 4x4 Matrices instead of 3x3 for 3D

3
Translation
4
OpenGL
  • glTranslated(x, y, z)

Post-multiplies translation matrix onto currently
selected matrix
5
Example
glTranslated(tox, toy, toz) DrawBox()
6
Scaling
How do I do auniform scale?
glScaled(x, y, z)
7
What about Rotation?
  • How can we convert this to 3D?

8
Rotation about Z axis
Just keep z constant.
9
The 3 Rotation Matrices
10
OpenGL general glRotated
  • glRotated(angle, x, y, z)
  • Rotates by angle (in degrees) around the vector
    (x, y, z)

11
Skew or Shear
12
Example Rotating around a point
  • Suppose we have an object centered on (12, 17,
    32)
  • We want to spin the object around that center
    point
  • What will be the operations?

13
Homogenous Coordinates and Vectors
  • It is convention that
  • Points in space are indicated with w1
  • Vectors are indicated with w0
  • 12, 13, 5, 1T is a point
  • 45, 13, 2, 0T is a vector (point point?)
  • We often want unit-length vectors

14
OpenGL Transformation Composition
  • A global modeling transformation matrix
  • (GL_MODELVIEW, called it M here)
  • glMatrixMode(GL_MODELVIEW)
  • The user is responsible to reset it if necessary
  • glLoadIdentity()
  • -gt M 1 0 0
  • 0 1 0
  • 0 0 1

15
OpenGL Transformation Composition
  • Matrices for performing user-specified
    transformations are multiplied to the current
    matrix
  • For example,

  • 1 0 1
  • glTranslated(1,1 0) M M x 0 1
    1

  • 0 0 1
  • All the vertices defined within glBegin() /
    glEnd() will first go through the transformation
    (modeling transformation)
  • P M x P

16
Transformation Pipeline
Modeling transformation

17
Frames
  • Frame A center and three coordinate axes
  • A coordinate system

World Frame and Camera Frame
18
World to Camera
  • What does gluLookAt do mathematically?

void gluLookAt( GLdouble eyex, GLdouble eyey,
GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble
centerz, GLdouble upx,
GLdouble upy, GLdouble upz )
19
Defining a Frame(relative to another frame)
  • Need
  • Origin
  • Vectors for X, Y, and Z axis of frame

20
Adding Orthogonal Constraint
  • We can get by with
  • Origin
  • One axis direction and which way is up

Z direction is negative of look direction. X is
at right angles to Z and Up
21
Computing the Axis
  • Z (eye center) / eye center
  • X (up ? Z) / up ? Z
  • Y Z ? X

z
x
y
Right-hand rule?
22
Making a frame the reference coordinate system
  • Move the center to the origin
  • Rotate the frame axis onto (1,0,0), (0,1,0),
    (0,0,1)

23
Moving the center to the origin
glTranslated(-eyex, -eyey, -eyez)
24
Rotating arbitrary axes v1,v2,v3 onto (1,0,0),
(0,1,0), (0,0,1)
  • Notice v1,v2,v3 must be orthogonal to each
    other

25
Suppose we have three ortho-normal vectors
  • v1,v2,v3
  • Lets build a matrix like this
  • This will rotate v1 onto the x axis, v2 onto
    the y axis, v3 onto the z axis

26
Introduction to 3D viewing
  • 3D is just like taking a photograph!

27
Viewing Transformation
  • Position and orient your camera

28
Projection Transformation
  • Control the lens of the camera
  • Project the object from 3D world to 2D screen

29
Viewing Transformation (2)
  • Important camera parameters to specify
  • Camera (eye) position (Ex,Ey,Ez) in world
    coordinate system
  • Center of interest (coi) (cx, cy, cz)
  • Orientation (which way is up?) View-up vector
    (Up_x, Up_y, Up_z)

30
Viewing Transformation (3)
  • Transformation?
  • Form a camera (eye) coordinate frame
  • Transform objects from world to eye space

31
Viewing Transformation (4)
  • Eye space?
  • Transform to eye space can simplify many
    downstream operations (such as projection) in the
    pipeline

(1,0,0)
(0,1,0)
u
v
(0,0,1)
n
y
(0,0,0)
coi
x
z
32
Viewing Transformation (5)
  • In OpenGL
  • - gluLookAt (Ex, Ey, Ez, cx, cy, cz,
  • Up_x, Up_y, Up_z)
  • - The view up vector is usually (0,1,0)
  • - Remember to set the OpenGL matrix mode
    to
  • GL_MODELVIEW first

33
Viewing Transformation (6)
void display() glClear(GL_COLOR_BUFFER_
BIT) glMatrixMode(GL_MODELVIEW)
glLoadIdentity() gluLookAt(0,0,1,0,0,0,0,1
,0) display_all() // your display
routine
34
Suppose we have three orthogonal vectors
  • v1,v2,v3
  • Lets build a matrix like this
  • This will rotate v1 onto the x axis, v2 onto
    the y axis, v3 onto the z axis

35
My Version of gluLookAt()
void mygluLookAt(Point3 eye, Point3 center,
Point3 up) Point3 cameraZ Normalize( eye
center ) // v3 Point3 cameraX Normalize(
Cross(up, cameraZ) ) // v1 Point3 cameraY
Cross( cameraZ, cameraX ) // v2 GLdouble
m16 // Fill the matrix in row by row
m0 cameraX.X m4 cameraX.Y m8
cameraX.Z m12 0.0 m1 cameraY.X
m5 cameraY.Y m9 cameraY.Z m13
0.0 m2 cameraZ.X m6 cameraZ.Y
m10 cameraZ.Z m14 0.0 m3 m7
m11 0.0 m15 1.0 glMultMatrixd( m
) glTranslated( -eye.X, -eye.Y, -eye.Z )
Order of transformations!
36
Messing with the camera
  • What if I want to PAN the camera?
  • We need to define PAN
  • There are two possibilities
  • Crab
  • Pan

37
Panning
  • Suppose we pan around the camera Y axis
  • This is NOT up in world space.
  • We need to change the lookAt point.

38
Operations on Points in Space
  • LookAt is a point in space
  • Need these transformation
  • Translate by eye
  • Rotate frame onto axis (using some M)
  • Rotate around Y by pan angle
  • Inverse rotate M
  • Translate by eye
  • PPT(eye) MT RY(q) M T(-eye)

39
Easier 1
  • Just replace the matrix using gluLookAt.
  • Problems?

40
Easier 2
  • The first 2 operations are already what is done
    to set the camera up
  • M T(-eye)
  • We just need to add a rotate after this is done.
  • Implies we want to pre-multiply by a rotation
    matrix.

41
Easier 2
  • Steps
  • Read out the current matrix.
  • Set the matrix to the identity matrix.
  • Rotate about the y-axis the amount we want to
    pan.
  • Post-multiply by the matrix read out in step 1.

42
Camera Controls
  • Tilt
  • Roll
  • Dolly
  • Boom
  • Zoom (same as dolly?)
  • General camera (or entity) movement and the user
    interface / control.

43
Camera Controls
  • Stationary
  • 2 degrees of freedom zoom
  • QuicktimeVR

44
Examiner
  • Mimic holding an object in your hand.
  • OpenInventors Examiner Viewer
  • Used in IRIS Explorer
  • Used in modeling and scientific visualization.

Image courtesy of NAG
45
Flying
  • Camera specified using Euler angles and position.
  • Many possible control strategies
  • Acceleration / Deceleration

46
Camera models in games
  • Many different approaches
  • Flying model, with a camera pan, tilt according
    to the mouse position.
  • Orthographic view with simple translations
    (occasionally a examiner)
  • Cinematic camera with view-oriented dolly (look
    with mouse, move in camera look-at direction with
    keyboard).

47
Software Engineering
  • Define a well-encapsulated Camera class or base
    class.
  • Separate the control of the camera from the
    camera object.
  • Separate the mouse / keyboard handling from the
    control as much as possible.
  • I will share my Camera classes next week.
Write a Comment
User Comments (0)
About PowerShow.com