170 likes | 301 Views
The Camera. Course Information CVG: Programming 4 My Name: Mark Walsh Website: www.activehelix.co.uk/courses Recommended Reading Introduction to 3D Game Programming with DirectX 9.0 (Frank D. Luna). Re-Cap. Local Space World Space View Space. Local Space. World Space. View Space.
E N D
The Camera Course Information • CVG: Programming 4 • My Name: Mark Walsh • Website: www.activehelix.co.uk/courses Recommended Reading • Introduction to 3D Game Programming with DirectX 9.0 (Frank D. Luna)
Re-Cap • Local Space • World Space • View Space
Flexible Camera Class • Objective is to build a flexible FP based games camera: Flight Simulators and Shooters • The first stage is camera design
Camera Design • The camera position is defined relative to the world coordinate system using 4 vectors • Right, Up, Look, Position • They define a local coordinate system relative to the world coordinate system
Vectors: Right, Up and Look define the cameras orientation in the world • They are therefore the orientation vectors • The orientation vectors must be orthonormal • Mutually perpendicular to each other • Of Unit Length • A row matrix where the rows are made up of orthonormal vectors is orthagonal
Camera Operations • Using the 4 vectors we wish to be able to: • Rotate around the right vector or X axis (Pitch) • Rotate around the up vector or Y axis (Yaw) • Rotate around the look vector Z axis (Roll) • Strafe along the right vector • Fly along the up vector • Move along the look vector
Implementation • We calculate the view matrix using the camera vectors • Remember that view space transforms the geometry in the world… • …so that the camera is centred at the origin and the axes are aligned with the major coordinate axes
Rotation About Arbitrary Axis • Pitch • Yaw • Roll
Rotation • D3DXMatrixRotationAxis • Angle in Radians to Rotate • Rotate around arbitrarily defined vector
Walking, Strafing, Flying • Walking = Moving along the Look vector • Strafing = Moving along the Right vector • Flying = Moving along the Up Vector
To move we add a vector to our position vector • The should have the same direction • Need to set restrictions • Walking, flying distinctions