MatrixLens

class MatrixLens

Bases: Lens

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.

Inheritance diagram

Inheritance diagram of MatrixLens

MatrixLens(void)
void clear_left_eye_mat(void)

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

void clear_right_eye_mat(void)

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

static TypeHandle get_class_type(void)
LMatrix4 const &get_left_eye_mat(void) const

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.

LMatrix4 const &get_right_eye_mat(void) const

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.

LMatrix4 const &get_user_mat(void) const

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 has_left_eye_mat(void) const

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 has_right_eye_mat(void) const

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.

void set_left_eye_mat(LMatrix4 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.

void set_right_eye_mat(LMatrix4 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.

void set_user_mat(LMatrix4 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 near plane and 1 is the far 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.