A 4×4 matrix used for 3D projective transformations. It can represent transformations such as translation, rotation, scaling, shearing, and perspective division. It consists of four Vector4 columns.
For purely linear transformations (translation, rotation, and scale), it is recommended to use Transform3D, as it is more performant and requires less memory.
Used internally as Camera3D's projection matrix.
Constructs a default-initialized Projection identical to IDENTITY.
Note: In C#, this constructs a Projection identical to ZERO.
Constructs a Projection as a copy of the given Projection.
Constructs a Projection as a copy of the given Transform3D.
Constructs a Projection from four Vector4 values (matrix columns).
Returns true
if the projections are not equal.
Note: Due to floating-point precision errors, this may return true
, even if the projections are virtually equal. An is_equal_approx
method may be added in a future version of Godot.
Returns a Projection that applies the combined transformations of this Projection and right
.
Projects (multiplies) the given Vector4 by this Projection matrix.
Returns true
if the projections are equal.
Note: Due to floating-point precision errors, this may return false
, even if the projections are virtually equal. An is_equal_approx
method may be added in a future version of Godot.
Returns the column of the Projection with the given index.
Indices are in the following order: x, y, z, w.
PLANE_NEAR = 0
The index value of the projection's near clipping plane.
PLANE_FAR = 1
The index value of the projection's far clipping plane.
PLANE_LEFT = 2
The index value of the projection's left clipping plane.
PLANE_TOP = 3
The index value of the projection's top clipping plane.
PLANE_RIGHT = 4
The index value of the projection's right clipping plane.
PLANE_BOTTOM = 5
The index value of the projection bottom clipping plane.
The projection matrix's W vector (column 3). Equivalent to array index 3
.
The projection matrix's X vector (column 0). Equivalent to array index 0
.
The projection matrix's Y vector (column 1). Equivalent to array index 1
.
The projection matrix's Z vector (column 2). Equivalent to array index 2
.
Creates a new Projection that projects positions from a depth range of -1
to 1
to one that ranges from 0
to 1
, and flips the projected positions vertically, according to flip_y
.
Creates a new Projection that scales a given projection to fit around a given AABB in projection space.
Creates a new Projection for projecting positions onto a head-mounted display with the given X:Y aspect ratio, distance between eyes, display width, distance to lens, oversampling factor, and depth clipping planes.
eye
creates the projection for the left eye when set to 1, or the right eye when set to 2.
Creates a new Projection that projects positions in a frustum with the given clipping planes.
Creates a new Projection that projects positions in a frustum with the given size, X:Y aspect ratio, offset, and clipping planes.
flip_fov
determines whether the projection's field of view is flipped over its diagonal.
Creates a new Projection that projects positions into the given Rect2.
Creates a new Projection that projects positions using an orthogonal projection with the given clipping planes.
Creates a new Projection that projects positions using an orthogonal projection with the given size, X:Y aspect ratio, and clipping planes.
flip_fov
determines whether the projection's field of view is flipped over its diagonal.
Creates a new Projection that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping planes.
flip_fov
determines whether the projection's field of view is flipped over its diagonal.
Creates a new Projection that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping distances. The projection is adjusted for a head-mounted display with the given distance between eyes and distance to a point that can be focused on.
eye
creates the projection for the left eye when set to 1, or the right eye when set to 2.
flip_fov
determines whether the projection's field of view is flipped over its diagonal.
Returns a scalar value that is the signed factor by which areas are scaled by this matrix. If the sign is negative, the matrix flips the orientation of the area.
The determinant can be used to calculate the invertibility of a matrix or solve linear systems of equations involving the matrix, among other applications.
Returns a copy of this Projection with the signs of the values of the Y column flipped.
Returns the X:Y aspect ratio of this Projection's viewport.
Returns the dimensions of the far clipping plane of the projection, divided by two.
Returns the horizontal field of view of the projection (in degrees).
Returns the vertical field of view of the projection (in degrees) associated with the given horizontal field of view (in degrees) and aspect ratio.
Note: Unlike most methods of Projection, aspect
is expected to be 1 divided by the X:Y aspect ratio.
Returns the factor by which the visible level of detail is scaled by this Projection.
Returns the number of pixels with the given pixel width displayed per meter, after this Projection is applied.
Returns the clipping plane of this Projection whose index is given by plane
.
plane
should be equal to one of PLANE_NEAR, PLANE_FAR, PLANE_LEFT, PLANE_TOP, PLANE_RIGHT, or PLANE_BOTTOM.
Returns the dimensions of the viewport plane that this Projection projects positions onto, divided by two.
Returns the distance for this Projection beyond which positions are clipped.
Returns the distance for this Projection before which positions are clipped.
Returns a Projection that performs the inverse of this Projection's projective transformation.
Returns true
if this Projection performs an orthogonal projection.
Returns a Projection with the X and Y values from the given Vector2 added to the first and second values of the final column respectively.
Returns a Projection with the near clipping distance adjusted to be new_znear
.
Note: The original Projection must be a perspective projection.