Struct Transform3D
#[repr(C)]pub struct Transform3D {
pub basis: Basis,
pub origin: Vector3,
}
Expand description
Affine 3D transform (3x4 matrix).
Used for 3D linear transformations. Uses a basis + origin representation.
Expressed as a 3x4 matrix, this transform consists of 3 basis (column)
vectors a
, b
, c
as well as an origin o
:
[ a.x b.x c.x o.x ]
[ a.y b.y c.y o.y ]
[ a.z b.z c.z o.z ]
§All matrix types
Dimension | Orthogonal basis | Affine transform | Projective transform |
---|---|---|---|
2D | Transform2D (2x3) | ||
3D | Basis (3x3) | Transform3D (3x4) | Projection (4x4) |
§Godot docs
Fields§
§basis: Basis
The basis is a matrix containing 3 vectors as its columns. They can be interpreted as the basis vectors of the transformed coordinate system.
origin: Vector3
The new origin of the transformed coordinate system.
Implementations§
§impl Transform3D
impl Transform3D
pub const IDENTITY: Transform3D = _
pub const IDENTITY: Transform3D = _
The identity transform, with no translation, rotation or scaling
applied. When applied to other data structures, IDENTITY
performs no
transformation.
Godot equivalent: Transform3D.IDENTITY
pub const FLIP_X: Transform3D = _
pub const FLIP_X: Transform3D = _
Transform3D
with mirroring applied perpendicular to the YZ plane.
Godot equivalent: Transform3D.FLIP_X
pub const FLIP_Y: Transform3D = _
pub const FLIP_Y: Transform3D = _
Transform3D
with mirroring applied perpendicular to the XZ plane.
Godot equivalent: Transform3D.FLIP_Y
pub const FLIP_Z: Transform3D = _
pub const FLIP_Z: Transform3D = _
Transform3D
with mirroring applied perpendicular to the XY plane.
Godot equivalent: Transform3D.FLIP_Z
pub const fn new(basis: Basis, origin: Vector3) -> Transform3D
pub const fn new(basis: Basis, origin: Vector3) -> Transform3D
pub const fn from_cols(
a: Vector3,
b: Vector3,
c: Vector3,
origin: Vector3,
) -> Transform3D
pub const fn from_cols( a: Vector3, b: Vector3, c: Vector3, origin: Vector3, ) -> Transform3D
Create a new transform from 4 matrix-columns.
Godot equivalent: Transform3D(Vector3 x_axis, Vector3 y_axis, Vector3 z_axis, Vector3 origin)
, see Basis
for why it’s changed
pub fn from_projection(proj: &Projection) -> Transform3D
pub fn from_projection(proj: &Projection) -> Transform3D
Constructs a Transform3D
from a Projection
by trimming the last row of the projection matrix.
Godot equivalent: Transform3D(Projection from)
pub fn affine_inverse(&self) -> Transform3D
pub fn affine_inverse(&self) -> Transform3D
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.
pub fn interpolate_with(&self, other: &Transform3D, weight: f32) -> Transform3D
pub fn interpolate_with(&self, other: &Transform3D, weight: f32) -> Transform3D
Returns a transform interpolated between this transform and another by a given weight (on the range of 0.0 to 1.0).
pub fn is_finite(&self) -> bool
pub fn is_finite(&self) -> bool
Returns true if this transform is finite by calling is_finite
on the
basis and origin.
pub fn looking_at( &self, target: Vector3, up: Vector3, use_model_front: bool, ) -> Transform3D
pub fn orthonormalized(&self) -> Transform3D
pub fn orthonormalized(&self) -> Transform3D
Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors (scale of 1 or -1).
Godot equivalent: Transform3D.orthonormalized()
pub fn rotated(&self, axis: Vector3, angle: f32) -> Transform3D
pub fn rotated(&self, axis: Vector3, angle: f32) -> Transform3D
Returns a copy of the transform rotated by the given angle
(in radians).
This method is an optimized version of multiplying the given transform X
with a corresponding rotation transform R
from the left, i.e., R * X
.
This can be seen as transforming with respect to the global/parent frame.
Godot equivalent: Transform2D.rotated()
pub fn rotated_local(&self, axis: Vector3, angle: f32) -> Transform3D
pub fn rotated_local(&self, axis: Vector3, angle: f32) -> Transform3D
Returns a copy of the transform rotated by the given angle
(in radians).
This method is an optimized version of multiplying the given transform X
with a corresponding rotation transform R
from the right, i.e., X * R
.
This can be seen as transforming with respect to the local frame.
Godot equivalent: Transform2D.rotated_local()
pub fn scaled(&self, scale: Vector3) -> Transform3D
pub fn scaled(&self, scale: Vector3) -> Transform3D
Returns a copy of the transform scaled by the given scale factor.
This method is an optimized version of multiplying the given transform X
with a corresponding scaling transform S
from the left, i.e., S * X
.
This can be seen as transforming with respect to the global/parent frame.
Godot equivalent: Transform2D.scaled()
pub fn scaled_local(&self, scale: Vector3) -> Transform3D
pub fn scaled_local(&self, scale: Vector3) -> Transform3D
Returns a copy of the transform scaled by the given scale factor.
This method is an optimized version of multiplying the given transform X
with a corresponding scaling transform S
from the right, i.e., X * S
.
This can be seen as transforming with respect to the local frame.
Godot equivalent: Transform2D.scaled_local()
pub fn translated(&self, offset: Vector3) -> Transform3D
pub fn translated(&self, offset: Vector3) -> Transform3D
Returns a copy of the transform translated by the given offset.
This method is an optimized version of multiplying the given transform X
with a corresponding translation transform T
from the left, i.e., T * X
.
This can be seen as transforming with respect to the global/parent frame.
Godot equivalent: Transform2D.translated()
pub fn translated_local(&self, offset: Vector3) -> Transform3D
pub fn translated_local(&self, offset: Vector3) -> Transform3D
Returns a copy of the transform translated by the given offset.
This method is an optimized version of multiplying the given transform X
with a corresponding translation transform T
from the right, i.e., X * T
.
This can be seen as transforming with respect to the local frame.
Godot equivalent: Transform2D.translated()
Trait Implementations§
§impl ApproxEq for Transform3D
impl ApproxEq for Transform3D
§fn approx_eq(&self, other: &Transform3D) -> bool
fn approx_eq(&self, other: &Transform3D) -> bool
Returns if the two transforms are approximately equal, by comparing basis
and origin
separately.
§impl ArrayElement for Transform3D
impl ArrayElement for Transform3D
fn debug_validate_elements(_array: &Array<Self>) -> Result<(), ConvertError>
§impl Clone for Transform3D
impl Clone for Transform3D
§fn clone(&self) -> Transform3D
fn clone(&self) -> Transform3D
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for Transform3D
impl Debug for Transform3D
§impl Default for Transform3D
impl Default for Transform3D
§fn default() -> Transform3D
fn default() -> Transform3D
§impl Display for Transform3D
impl Display for Transform3D
§impl Export for Transform3D
impl Export for Transform3D
§fn export_hint() -> PropertyHintInfo
fn export_hint() -> PropertyHintInfo
§fn as_node_class() -> Option<ClassName>
fn as_node_class() -> Option<ClassName>
§impl From<Basis> for Transform3D
impl From<Basis> for Transform3D
§fn from(basis: Basis) -> Transform3D
fn from(basis: Basis) -> Transform3D
Create a new transform with origin (0,0,0)
from this basis.
§impl From<Transform3D> for Projection
impl From<Transform3D> for Projection
§fn from(trans: Transform3D) -> Projection
fn from(trans: Transform3D) -> Projection
§impl FromGodot for Transform3D
impl FromGodot for Transform3D
§fn try_from_godot(
via: <Transform3D as GodotConvert>::Via,
) -> Result<Transform3D, ConvertError>
fn try_from_godot( via: <Transform3D as GodotConvert>::Via, ) -> Result<Transform3D, ConvertError>
Err
on failure.§fn from_godot(via: Self::Via) -> Self
fn from_godot(via: Self::Via) -> Self
§fn try_from_variant(variant: &Variant) -> Result<Self, ConvertError>
fn try_from_variant(variant: &Variant) -> Result<Self, ConvertError>
Variant
, returning Err
on failure.§fn from_variant(variant: &Variant) -> Self
fn from_variant(variant: &Variant) -> Self
§impl GodotConvert for Transform3D
impl GodotConvert for Transform3D
§type Via = Transform3D
type Via = Transform3D
Self
is represented in Godot.§impl Mul<Aabb> for Transform3D
impl Mul<Aabb> for Transform3D
§impl Mul<Plane> for Transform3D
impl Mul<Plane> for Transform3D
§impl Mul<Vector3> for Transform3D
impl Mul<Vector3> for Transform3D
§impl Mul<f32> for Transform3D
impl Mul<f32> for Transform3D
§impl Mul for Transform3D
impl Mul for Transform3D
§type Output = Transform3D
type Output = Transform3D
*
operator.§fn mul(self, rhs: Transform3D) -> <Transform3D as Mul>::Output
fn mul(self, rhs: Transform3D) -> <Transform3D as Mul>::Output
*
operation. Read more§impl PartialEq for Transform3D
impl PartialEq for Transform3D
§impl ToGodot for Transform3D
impl ToGodot for Transform3D
§type ToVia<'v> = <Transform3D as GodotConvert>::Via
type ToVia<'v> = <Transform3D as GodotConvert>::Via
to_godot()
, which differs from Via
for pass-by-reference types.§fn to_godot(&self) -> <Transform3D as ToGodot>::ToVia<'_>
fn to_godot(&self) -> <Transform3D as ToGodot>::ToVia<'_>
§fn to_variant(&self) -> Variant
fn to_variant(&self) -> Variant
§impl Var for Transform3D
impl Var for Transform3D
fn get_property(&self) -> <Transform3D as GodotConvert>::Via
fn set_property(&mut self, value: <Transform3D as GodotConvert>::Via)
§fn var_hint() -> PropertyHintInfo
fn var_hint() -> PropertyHintInfo
GodotType::property_info
, e.g. for enums/newtypes.impl Copy for Transform3D
impl GodotType for Transform3D
impl StructuralPartialEq for Transform3D
Auto Trait Implementations§
impl Freeze for Transform3D
impl RefUnwindSafe for Transform3D
impl Send for Transform3D
impl Sync for Transform3D
impl Unpin for Transform3D
impl UnwindSafe for Transform3D
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)