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

The Transform3D built-in Variant type is a 3×4 matrix representing a transformation in 3D space. It contains a Basis, which on its own can represent rotation, scale, and shear. Additionally, combined with its own origin, the transform can also represent a translation.

For a general introduction, see the Matrices and transforms tutorial.

Note: Godot uses a right-handed coordinate system, which is a common standard. For directions, the convention for built-in types like Camera3D is for -Z to point forward (+X is right, +Y is up, and +Z is back). Other objects may use different direction conventions. For more information, see the Importing 3D Scenes tutorial.

Note

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)

A transform with no translation, no rotation, and its scale being 1. Its basis is equal to Basis.IDENTITY.

When multiplied by another Variant such as AABB or another Transform3D, no transformation occurs.

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

Transform3D with mirroring applied perpendicular to the YZ plane. Its basis is equal to Basis.FLIP_X.

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

Transform3D with mirroring applied perpendicular to the XZ plane. Its basis is equal to Basis.FLIP_Y.

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

Transform3D with mirroring applied perpendicular to the XY plane. Its basis is equal to Basis.FLIP_Z.


Property Descriptions

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

The Basis of this transform. It is composed by 3 axes (Basis.x, Basis.y, and Basis.z). Together, these represent the transform's rotation, scale, and shear.


Vector3 origin = Vector3(0, 0, 0)

The translation offset of this transform. In 3D space, this can be seen as the position.


Constructor Descriptions

Transform3D Transform3D ( )

Constructs a Transform3D identical to the 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. Because Transform3D is a 3×4 matrix and Projection is a 4×4 matrix, this operation trims the last row of the projection matrix (from.x.w, from.y.w, from.z.w, and from.w.w are not included in the new transform).


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

Constructs a Transform3D from four Vector3 values (also called matrix columns).

The first three arguments are the basis's axes (Basis.x, Basis.y, and Basis.z).


Method Descriptions

Transform3D affine_inverse ( ) const

Returns the inverted version of this transform. Unlike inverse, this method works with almost any basis, including non-uniform ones, but is slower. See also Basis.inverse.

Note: For this method to return correctly, the transform's basis needs to have a determinant that is not exactly 0 (see Basis.determinant).


Transform3D interpolate_with ( Transform3D xform, float weight ) const

Returns the result of the linear interpolation between this transform and xform by the given weight.

The weight should be between 0.0 and 1.0 (inclusive). Values outside this range are allowed and can be used to perform extrapolation instead.


Transform3D inverse ( ) const

Returns the inverted version of this transform. See also Basis.inverse.

Note: For this method to return correctly, the transform's basis needs to be orthonormal (see Basis.orthonormalized). That means, the basis should only represent a rotation. If it does not, use affine_inverse instead.