the camera n.
Skip this Video
Loading SlideShow in 5 Seconds..
The Camera PowerPoint Presentation
Download Presentation
The Camera

Loading in 2 Seconds...

play fullscreen
1 / 35

The Camera - PowerPoint PPT Presentation

  • Uploaded on

The Camera. Navigating and viewing the virtual world. Road Map. Camera properties and definition Perspective transformation Quaternion transforms for changing camera. The Camera. pinhole camera model tiny aperture finite size screen. Light strikes screen. Light from world. aperture.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'The Camera' - kemp

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
the camera

The Camera

Navigating and viewing

the virtual world

road map
Road Map
  • Camera properties and definition
  • Perspective transformation
  • Quaternion transforms for changing camera
the camera1
The Camera
  • pinhole camera model
    • tiny aperture
    • finite size screen

Light strikes screen

Light from world


viewing and projection
Viewing and Projection
  • Recall that we used 3 matrices for transformation in the BasicEffect:
    • world (for where the object is in the virtual world)
    • viewing (describes transformation of world to canonical space in front of camera)
    • projection (transform from 3D world to 2D screen)
  • Separation allows us to deal with each independently
  • operation to transform 3D world coordinates to 2D screen coordinates
  • orthogonal projection: parallel rays
  • perspective projection: rays pass through aperture (pinhole, human eye)
orthogonal projection
Orthogonal Projection
  • Simple projection:
    • (x,y,z,1)  (x,y)
  • z value used in depth buffer
canonical view volume
Canonical View Volume
  • only map objects within "canonical" viewing volume
  • If the world is bigger (and not properly oriented) need coordinate transform to map into canonical volume
arbitrary view direction
Arbitrary view direction
  • Previously, assumed the camera was axis-aligned
  • Not typically the case!
  • Specify camera position, orientation
  • Common mechanism:
    • camera position
    • viewing direction
    • up direction
arbitrary view direction1
Arbitrary view direction
  • Given gaze direction g, up direction h
  • "Camera axes": say u, v, w
    • w = -g/|g| (gaze direction is –z)
    • u = h x w / | h x w |
    • v = w x u




In classical perspective, have vanishing points

Parallel lines appear to converge

  • Orthographic projection works when we have a large aperture
  • Our experience of the world is in perspective: distant objects look smaller




small object

Objects have same

apparent size

viewing frustum
Viewing Frustum

"frustum": a truncated cone

or pyramid

near plane

z = n

far plane

z = f


ys = yg (n/zg)

ys = yr (n/zr)








the perspective divide
The perspective divide
  • Need to divide by z
  • No division with matrices
  • Again use homogeneous coordinates: "homogenize" operation

ys = yr (n/zr)



for any nonzero h

perspective matrix4
Perspective Matrix



ys = yg (n/zg)


what happens to z
What happens to Z
  • We need to preserve Z ordering so that depth tests still work
  • The perspective matrix preserves Z
  • At z=f, preserves z=f
  • At z=n, preserves z=n
  • At intermediate values, preserves order
perils of perspective
Perils of Perspective
  • Wide-angle perspective looks weird
  • Human focal region has small solid angle – we do not experience severe perspective distortion
  • Technically correct results may not be perceptually correct
camera orientation
Camera Orientation
  • Recall that to specify camera position and orientation, need 6 quantities:
    • 3 for 3D position
    • “ forward direction” (unit axis, 2 scalars to specify)
    • “up direction” (orthogonal to forward, can be specified just with an angle, one scalar)
  • This info goes into the viewing transform
xna viewing
XNA Viewing
  • Matrix.CreateLookAt(

cameraPosition, // where the camera is

targetPosition, // where camera looks at

upVector // “up” direction (towards top)


changing camera
Changing Camera
  • Can apply transformations to viewing matrix
    • translations, rotations…
  • Can also recreate matrix at each frame
    • inexpensive compared to everything else!
  • Need to track camera orientation and position
    • vector for position
    • quaternion for orientation
example camera
Example Camera
  • contains:
    • position (vector)
    • forward direction (vector)
    • up direction (vector)
  • Want to be able to swing the camera sideways, up and down, spin (roll), plus move
moving the camera
Moving the camera
  • Change position according to current velocity
    • x(t+dt) = x(t) + v(t)dt
  • Might have v(t) from player control, or velocity of body being followed
  • Might have specific camera dynamics
player control
Player control
  • Often interpret player controls in terms of current heading
    • move forward
    • move backward
    • strafe right, left
    • change orientation (right, left, up, down, roll, all in current frame of reference)
player control1
Player control
  • With forward and up known as part of camera, can change position easily
    • move forward: x(t+dt) = x(t) + f(t)*s*dt
      • s = speed, f(t) = forward direction at time t
    • can get sideways vector as u x f (cross product)
    • moving sideways uses same principle as moving forward, just direction differs
describing orientation
Describing orientation
  • Store orientation as quaternion q
  • Update forward, up directions using current q
    • rotation of initial forward f0, initial up u0
  • say p = (0,f0), q’ = conjugate of q
    • for q = (s,v), q' = (s,-v)
  • f = vector(qpq’)
  • In XNA, f = Vector.Transform(f0, q)
changing orientation
Changing orientation
  • Now, changing camera orientation is easy:
  • Rotations about current forward, up, side axes
    • available, or obtained from cross product
  • Quaternion.CreateFromAxisAngle(axis, angle);
    • describes rotation
  • Compose with current quaternion:
    • q = Quaternion.Multiply(q,qrot);
  • Normalize q, and voila!