Panda3D
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties
Public Member Functions | Static Public Member Functions
MatrixLens Class Reference

A completely generic linear lens. More...

Inheritance diagram for MatrixLens:
Lens TypedWritableReferenceCount TypedWritable ReferenceCount TypedObject

List of all members.

Public Member Functions

 MatrixLens ()
 clearLeftEyeMat ()
 Removes the custom projection matrix set for the left eye, and uses the center matrix (set by set_user_mat) instead.
 clearRightEyeMat ()
 Removes the custom projection matrix set for the right eye, and uses the center matrix (set by set_user_mat) instead.
Mat4 const getLeftEyeMat ()
 Returns the custom projection matrix for the left eye, if any, or the center matrix if there is no custom matrix set for the left eye.
Mat4 const getRightEyeMat ()
 Returns the custom projection matrix for the right eye, if any, or the center matrix if there is no custom matrix set for the right eye.
Mat4 const getUserMat ()
 Returns the explicit projection matrix as set by the user.
bool hasLeftEyeMat ()
 Returns true if the camera has a custom projection matrix set for the left eye, or false if the center matrix (set by set_user_mat) will be used for the left eye.
bool hasRightEyeMat ()
 Returns true if the camera has a custom projection matrix set for the right eye, or false if the center matrix (set by set_user_mat) will be used for the right eye.
 setLeftEyeMat (Mat4 const user_mat)
 Sets a custom projection matrix for the left eye.
 setRightEyeMat (Mat4 const user_mat)
 Sets a custom projection matrix for the right eye.
 setUserMat (Mat4 const user_mat)
 Explicitly specifies the projection matrix.

Static Public Member Functions

static TypeHandle getClassType ()

Detailed Description

A completely generic linear lens.

This is provided for the benefit of low-level code that wants to specify a perspective or orthographic frustum via an explicit projection matrix, but not mess around with fov's or focal lengths or any of that nonsense.


Constructor & Destructor Documentation


Member Function Documentation

Removes the custom projection matrix set for the left eye, and uses the center matrix (set by set_user_mat) instead.

Removes the custom projection matrix set for the right eye, and uses the center matrix (set by set_user_mat) instead.

static TypeHandle getClassType ( ) [static]

Reimplemented from Lens.

Mat4 const getLeftEyeMat ( )

Returns the custom projection matrix for the left eye, if any, or the center matrix if there is no custom matrix set for the left eye.

Mat4 const getRightEyeMat ( )

Returns the custom projection matrix for the right eye, if any, or the center matrix if there is no custom matrix set for the right eye.

Mat4 const getUserMat ( )

Returns the explicit projection matrix as set by the user.

This does not include transforms on the lens or film (e.g. a film offset or view hpr).

bool hasLeftEyeMat ( )

Returns true if the camera has a custom projection matrix set for the left eye, or false if the center matrix (set by set_user_mat) will be used for the left eye.

bool hasRightEyeMat ( )

Returns true if the camera has a custom projection matrix set for the right eye, or false if the center matrix (set by set_user_mat) will be used for the right eye.

setLeftEyeMat ( Mat4 const  user_mat)

Sets a custom projection matrix for the left eye.

This is only used if the lens is attached to a stereo camera, in which case the left eye matrix will be used to draw the scene in the left eye (but the center matrix--the user_mat--will still be used to cull the scene).

This matrix should not be too different from the center matrix (set by set_user_mat()) or culling errors may become obvious.

setRightEyeMat ( Mat4 const  user_mat)

Sets a custom projection matrix for the right eye.

This is only used if the lens is attached to a stereo camera, in which case the right eye matrix will be used to draw the scene in the right eye (but the center matrix--the user_mat--will still be used to cull the scene).

This matrix should not be too different from the center matrix (set by set_user_mat()) or culling errors may become obvious.

setUserMat ( Mat4 const  user_mat)

Explicitly specifies the projection matrix.

This matrix should convert X and Y to the range [-film_size/2, film_size/2], where (-fs/2,-fs/2) is the lower left corner of the screen and (fs/2, fs/2) is the upper right. Z should go to the range [-1, 1], where -1 is the far plane and 1 is the near plane. Note that this is a left-handed Y-up coordinate system.

The default film_size for a MatrixLens is 2, so the default range is [-1, 1] for both X and Y. This is consistent with the GL conventions for projection matrices.

 All Classes Namespaces Functions Variables Enumerations Enumerator Properties