# panda3d.core.MatrixLens¶

from panda3d.core import 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

__init__() → None
setUserMat(user_mat: LMatrix4) → None

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.

getUserMat() → LMatrix4

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).

Return type

LMatrix4

setLeftEyeMat(user_mat: LMatrix4) → None

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 setUserMat()) or culling errors may become obvious.

clearLeftEyeMat() → None

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

hasLeftEyeMat() → bool

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.

getLeftEyeMat() → LMatrix4

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.

Return type

LMatrix4

setRightEyeMat(user_mat: LMatrix4) → None

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 setUserMat()) or culling errors may become obvious.

clearRightEyeMat() → None

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

hasRightEyeMat() → bool

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.

getRightEyeMat() → LMatrix4

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.

Return type

LMatrix4

static getClassType() → TypeHandle
Return type

TypeHandle

property user_mat
Getter

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).

Setter

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.

Return type

LMatrix4