Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Transform3D

A 3×4 matrix representing a 3D transformation.

Description

A 3×4 matrix (3 rows, 4 columns) used for 3D linear transformations. It can represent transformations such as translation, rotation, and scaling. It consists of a basis (first 3 columns) and a Vector3 for the origin (last column).

For more information, read the "Matrices and transforms" documentation article.

Informacja

There are notable differences when using this API with C#. See C# API differences to GDScript for more information.

Tutorials

Properties

Basis

basis

Basis(1, 0, 0, 0, 1, 0, 0, 0, 1)

Vector3

origin

Vector3(0, 0, 0)

Constructors

Transform3D

Transform3D ( )

Transform3D

Transform3D ( Transform3D from )

Transform3D

Transform3D ( Basis basis, Vector3 origin )

Transform3D

Transform3D ( Projection from )

Transform3D

Transform3D ( Vector3 x_axis, Vector3 y_axis, Vector3 z_axis, Vector3 origin )

Methods

Transform3D

affine_inverse ( ) const

Transform3D

interpolate_with ( Transform3D xform, float weight ) const

Transform3D

inverse ( ) const

bool

is_equal_approx ( Transform3D xform ) const

bool

is_finite ( ) const

Transform3D

looking_at ( Vector3 target, Vector3 up=Vector3(0, 1, 0), bool use_model_front=false ) const

Transform3D

orthonormalized ( ) const

Transform3D

rotated ( Vector3 axis, float angle ) const

Transform3D

rotated_local ( Vector3 axis, float angle ) const

Transform3D

scaled ( Vector3 scale ) const

Transform3D

scaled_local ( Vector3 scale ) const

Transform3D

translated ( Vector3 offset ) const

Transform3D

translated_local ( Vector3 offset ) const

Operators

bool

operator != ( Transform3D right )

AABB

operator * ( AABB right )

PackedVector3Array

operator * ( PackedVector3Array right )

Plane

operator * ( Plane right )

Transform3D

operator * ( Transform3D right )

Vector3

operator * ( Vector3 right )

Transform3D

operator * ( float right )

Transform3D

operator * ( int right )

bool

operator == ( Transform3D right )


Constants

IDENTITY = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Transform3D with no translation, rotation or scaling applied. When applied to other data structures, IDENTITY performs no transformation.

FLIP_X = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Transform3D with mirroring applied perpendicular to the YZ plane.

FLIP_Y = Transform3D(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0)

Transform3D with mirroring applied perpendicular to the XZ plane.

FLIP_Z = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0)

Transform3D with mirroring applied perpendicular to the XY plane.


Property Descriptions

Basis basis = Basis(1, 0, 0, 0, 1, 0, 0, 0, 1)

The basis is a matrix containing 3 Vector3 as its columns: X axis, Y axis, and Z axis. These vectors can be interpreted as the basis vectors of local coordinate system traveling with the object.


Vector3 origin = Vector3(0, 0, 0)

The translation offset of the transform (column 3, the fourth column). Equivalent to array index 3.


Constructor Descriptions

Transform3D Transform3D ( )

Constructs a default-initialized Transform3D set to IDENTITY.


Transform3D Transform3D ( Transform3D from )

Constructs a Transform3D as a copy of the given Transform3D.


Transform3D Transform3D ( Basis basis, Vector3 origin )

Constructs a Transform3D from a Basis and Vector3.


Transform3D Transform3D ( Projection from )

Constructs a Transform3D from a Projection by trimming the last row of the projection matrix (from.x.w, from.y.w, from.z.w, and from.w.w are not copied over).


Transform3D Transform3D ( Vector3 x_axis, Vector3 y_axis, Vector3 z_axis, Vector3 origin )

Constructs a Transform3D from four Vector3 values (matrix columns). Each axis corresponds to local basis vectors (some of which may be scaled).


Method Descriptions

Transform3D affine_inverse ( ) const

Returns the inverse of the transform, under the assumption that the basis is invertible (must have non-zero determinant).


Transform3D interpolate_with ( Transform3D xform, float weight ) const

Returns a transform interpolated between this transform and another by a given weight (on the range of 0.0 to 1.0).


Transform3D inverse ( ) const

Returns the inverse of the transform, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). Use affine_inverse for non-orthonormal transforms (e.g. with scaling).


bool is_equal_approx ( Transform3D xform ) const

Returns true if this transform and xform are approximately equal, by running @GlobalScope.is_equal_approx on each component.


bool is_finite ( ) const

Returns true if this transform is finite, by calling @GlobalScope.is_finite on each component.


Transform3D looking_at ( Vector3 target, Vector3 up=Vector3(0, 1, 0), bool use_model_front=false ) const

Returns a copy of the transform rotated such that the forward axis (-Z) points towards the target position.

The up axis (+Y) points as close to the up vector as possible while staying perpendicular to the forward axis. The resulting transform is orthonormalized. The existing rotation, scale, and skew infor