Projection
A 4×4 matrix for 3D projective transformations.
描述
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.
通过 C# 使用该 API 时会有显著不同,详见 :ref:doc_c_sharp_differences
\ 。
属性
构造函数
Projection | Projection ( ) |
Projection | Projection ( from: Projection ) |
Projection | Projection ( from: Transform3D ) |
Projection | Projection ( x_axis: Vector4 , y_axis: Vector4 , z_axis: Vector4 , w_axis: Vector4 ) |
方法
运算符
bool | operator != ( right: Projection ) |
Projection | operator * ( right: Projection ) |
Vector4 | operator * ( right: Vector4 ) |
bool | operator == ( right: Projection ) |
Vector4 | operator [] ( index: int ) |
常量
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.
IDENTITY = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
A Projection with no transformation defined. When applied to other data structures, no transformation is performed.
ZERO = Projection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
A Projection with all values initialized to 0. When applied to other data structures, they will be zeroed.
属性说明
Vector4
w = Vector4(0, 0, 0, 1)
The projection matrix's W vector (column 3). Equivalent to array index 3
.
Vector4
x = Vector4(1, 0, 0, 0)
The projection matrix's X vector (column 0). Equivalent to array index 0
.
Vector4
y = Vector4(0, 1, 0, 0)
The projection matrix's Y vector (column 1). Equivalent to array index 1
.
Vector4
z = Vector4(0, 0, 1, 0)
The projection matrix's Z vector (column 2). Equivalent to array index 2
.
构造函数说明
Projection
Projection ( )
Constructs a default-initialized Projection set to IDENTITY
.
Projection
Projection ( from: Projection
)
Constructs a Projection as a copy of the given Projection.
Projection
Projection ( from: Transform3D
)
Constructs a Projection as a copy of the given Transform3D
.
Projection
Projection ( x_axis: Vector4
, y_axis: Vector4
, z_axis: Vector4
, w_axis: Vector4
)
Constructs a Projection from four Vector4
values (matrix columns).
方法说明
Projection
create_depth_correction ( flip_y: bool
) static1
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
.
Projection
create_fit_aabb ( aabb: AABB
) static1
Creates a new Projection that scales a given projection to fit around a given AABB
in projection space.
Projection
create_for_hmd ( eye: int
, aspect: float
, intraocular_dist: float
, display_width: float
, display_to_lens: float
, oversample: float
, z_near: float
, z_far: float
) static1
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.
Projection
create_frustum ( left: float
, right: float
, bottom: float
, top: float
, z_near: float
, z_far: float
) static1
Creates a new Projection that projects positions in a frustum with the given clipping planes.
Projection
create_frustum_aspect ( size: float
, aspect: float
, offset: Vector2
, z_near: float
, z_far: float
, flip_fov: bool
= false ) static1
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.
Projection
create_light_atlas_rect ( rect: Rect2
) static1
Creates a new Projection that projects positions into the given Rect2
.
Projection
create_orthogonal ( left: float
, right: float
, bottom: float
, top: float
, z_near: float
, z_far: float
) static1
Creates a new Projection that projects positions using an orthogonal projection with the given clipping planes.
Projection
create_orthogonal_aspect ( size: float
, aspect: float
, z_near: float
, z_far: float
, flip_fov: bool
= false ) static1
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.
Projection
create_perspective ( fovy: float
, aspect: float
, z_near: float
, z_far: float
, flip_fov: bool
= false ) static1
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.
Projection
create_perspective_hmd ( fovy: float
, aspect: float
, z_near: float
, z_far: float
, flip_fov: bool
, eye: int
, intraocular_dist: float
, convergence_dist: float
) static1
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.
Projection
flipped_y ( ) const2
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.
Vector2
get_far_plane_half_extents ( ) const2
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).
float
get_fovy ( fovx: float
, aspect: float
) static1
Returns the vertical field of view of the projection (in degrees) associated with the given horizontal field of view (in degrees) and aspect ratio.
float
get_lod_multiplier ( ) const2
Returns the factor by which the visible level of detail is scaled by this Projection.
int
get_pixels_per_meter ( for_pixel_width: int
) const2
Returns the number of pixels with the given pixel width displayed per meter, after this Projection is applied.
Plane
get_projection_plane ( plane: int
) const2
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
.
Vector2
get_viewport_half_extents ( ) const2
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.
Projection
inverse ( ) const2
Returns a Projection that performs the inverse of this Projection's projective transformation.
Returns true
if this Projection performs an orthogonal projection.
Projection
jitter_offseted ( offset: Vector2
) const2
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.
Projection
perspective_znear_adjusted ( new_znear: float
) const2
Returns a Projection with the near clipping distance adjusted to be new_znear
.
Note: The original Projection must be a perspective projection.
运算符说明
bool
operator != ( right: Projection
)
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.
Projection
**operator *** ( right: Projection
)
Returns a Projection that applies the combined transformations of this Projection and right
.
Vector4
**operator *** ( right: Vector4
)
Projects (multiplies) the given Vector4
by this Projection matrix.
bool
operator == ( right: Projection
)
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.
Vector4
operator [] ( index: int
)
Returns the column of the Projection with the given index.
Indices are in the following order: x, y, z, w.
本方法通常需要用户覆盖才能生效。
本方法无副作用,不会修改该实例的任何成员变量。
本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。
本方法用于构造某个类型。
调用本方法无需实例,可直接使用类名进行调用。
本方法描述的是使用本类型作为左操作数的有效运算符。
这个值是由下列位标志构成位掩码的整数。
无返回值。