UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::Math::TTransform< T > Struct Template Reference

#include <TransformNonVectorized.h>

Public Types

using FReal = T
 
using TransformVectorRegister = TVectorRegisterType< T >
 

Public Member Functions

UE_FORCEINLINE_HINT void DiagnosticCheckNaN_Translate () const
 
UE_FORCEINLINE_HINT void DiagnosticCheckNaN_Rotate () const
 
UE_FORCEINLINE_HINT void DiagnosticCheckNaN_Scale3D () const
 
UE_FORCEINLINE_HINT void DiagnosticCheckNaN_All () const
 
UE_FORCEINLINE_HINT void DiagnosticCheck_IsValid () const
 
 TTransform ()
 
 TTransform (const TVector< T > &InTranslation)
 
 TTransform (ENoInit)
 
 TTransform (const TQuat< T > &InRotation)
 
 TTransform (const TRotator< T > &InRotation)
 
 TTransform (const TQuat< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D=TVector< T >::OneVector)
 
 TTransform (const TRotator< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D=TVector< T >::OneVector)
 
 TTransform (const TMatrix< T > &InMatrix)
 
 TTransform (const TVector< T > &InX, const TVector< T > &InY, const TVector< T > &InZ, const TVector< T > &InTranslation)
 
CORE_API void DebugPrint () const
 
bool DebugEqualMatrix (const TMatrix< T > &Matrix) const
 
CORE_API FString ToHumanReadableString () const
 
CORE_API FString ToString () const
 
CORE_API bool InitFromString (const FString &InSourceString)
 
TMatrix< T > ToMatrixWithScale () const
 
UE_FORCEINLINE_HINT TMatrix< T > ToInverseMatrixWithScale () const
 
TTransform< T > Inverse () const
 
TMatrix< T > ToMatrixNoScale () const
 
void Blend (const TTransform< T > &Atom1, const TTransform< T > &Atom2, float Alpha)
 
void BlendWith (const TTransform< T > &OtherAtom, float Alpha)
 
UE_FORCEINLINE_HINT TTransform< T > operator+ (const TTransform< T > &Atom) const
 
TTransform< T > & operator+= (const TTransform< T > &Atom)
 
UE_FORCEINLINE_HINT TTransform< T > operator* (T Mult) const
 
TTransform< T > & operator*= (T Mult)
 
TTransform< T > operator* (const TTransform< T > &Other) const
 
UE_FORCEINLINE_HINT void operator*= (const TTransform< T > &Other)
 
TTransform< T > operator* (const TQuat< T > &Other) const
 
void operator*= (const TQuat< T > &Other)
 
void ScaleTranslation (const TVector< T > &InScale3D)
 
void ScaleTranslation (const FReal &Scale)
 
void RemoveScaling (FReal Tolerance=UE_SMALL_NUMBER)
 
GetMaximumAxisScale () const
 
GetMinimumAxisScale () const
 
CORE_API TTransform< T > GetRelativeTransform (const TTransform< T > &Other) const
 
CORE_API TTransform< T > GetRelativeTransformReverse (const TTransform< T > &Other) const
 
CORE_API void SetToRelativeTransform (const TTransform< T > &ParentTransform)
 
TVector4< T > TransformFVector4 (const TVector4< T > &V) const
 
TVector4< T > TransformFVector4NoScale (const TVector4< T > &V) const
 
UE_FORCEINLINE_HINT TVector< T > TransformPosition (const TVector< T > &V) const
 
TVector< T > TransformPositionNoScale (const TVector< T > &V) const
 
TVector< T > InverseTransformPosition (const TVector< T > &V) const
 
TVector< T > InverseTransformPositionNoScale (const TVector< T > &V) const
 
UE_FORCEINLINE_HINT TVector< T > TransformVector (const TVector< T > &V) const
 
TVector< T > TransformVectorNoScale (const TVector< T > &V) const
 
TVector< T > InverseTransformVector (const TVector< T > &V) const
 
TVector< T > InverseTransformVectorNoScale (const TVector< T > &V) const
 
UE_FORCEINLINE_HINT TQuat< T > TransformRotation (const TQuat< T > &Q) const
 
UE_FORCEINLINE_HINT TQuat< T > InverseTransformRotation (const TQuat< T > &Q) const
 
TTransform< T > GetScaled (T Scale) const
 
TTransform< T > GetScaled (TVector< T > Scale) const
 
TVector< T > GetScaledAxis (EAxis::Type InAxis) const
 
TVector< T > GetUnitAxis (EAxis::Type InAxis) const
 
void Mirror (EAxis::Type MirrorAxis, EAxis::Type FlipAxis)
 
UE_FORCEINLINE_HINT TVector< T > GetLocation () const
 
UE_FORCEINLINE_HINT TRotator< T > Rotator () const
 
UE_FORCEINLINE_HINT FReal GetDeterminant () const
 
void SetLocation (const TVector< T > &Origin)
 
bool ContainsNaN () const
 
bool IsValid () const
 
bool Serialize (FArchive &Ar)
 
bool SerializeFromMismatchedTag (FName StructTag, FArchive &Ar)
 
UE_FORCEINLINE_HINT bool RotationEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const
 
UE_FORCEINLINE_HINT bool TranslationEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const
 
UE_FORCEINLINE_HINT bool Scale3DEquals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const
 
UE_FORCEINLINE_HINT bool Equals (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const
 
UE_FORCEINLINE_HINT bool Identical (const TTransform< T > *Other, uint32 PortFlags) const
 
UE_FORCEINLINE_HINT bool EqualsNoScale (const TTransform< T > &Other, FReal Tolerance=UE_KINDA_SMALL_NUMBER) const
 
void SetComponents (const TQuat< T > &InRotation, const TVector< T > &InTranslation, const TVector< T > &InScale3D)
 
void SetIdentity ()
 
void SetIdentityZeroScale ()
 
void MultiplyScale3D (const TVector< T > &Scale3DMultiplier)
 
void SetTranslation (const TVector< T > &NewTranslation)
 
UE_FORCEINLINE_HINT void CopyTranslation (const TTransform< T > &Other)
 
void ConcatenateRotation (const TQuat< T > &DeltaRotation)
 
void AddToTranslation (const TVector< T > &DeltaTranslation)
 
void SetRotation (const TQuat< T > &NewRotation)
 
UE_FORCEINLINE_HINT void CopyRotation (const TTransform< T > &Other)
 
void SetScale3D (const TVector< T > &NewScale3D)
 
UE_FORCEINLINE_HINT void CopyScale3D (const TTransform< T > &Other)
 
void SetTranslationAndScale3D (const TVector< T > &NewTranslation, const TVector< T > &NewScale3D)
 
TransformVectorRegister GetTranslationRegister () const
 
TransformVectorRegister GetRotationRegister () const
 
void SetTranslationRegister (TransformVectorRegister InTranslation)
 
void SetRotationRegister (TransformVectorRegister InRotation)
 
void Accumulate (const TTransform< T > &SourceAtom)
 
void Accumulate (const TTransform< T > &Atom, FReal BlendWeight)
 
void AccumulateWithShortestRotation (const TTransform< T > &DeltaAtom, FReal BlendWeight)
 
void AccumulateWithAdditiveScale (const TTransform< T > &Atom, T BlendWeight)
 
void LerpTranslationScale3D (const TTransform< T > &SourceAtom1, const TTransform< T > &SourceAtom2, ScalarRegister Alpha)
 
void NormalizeRotation ()
 
UE_FORCEINLINE_HINT bool IsRotationNormalized () const
 
TQuat< T > GetRotation () const
 
TVector< T > GetTranslation () const
 
TVector< T > GetScale3D () const
 
void CopyRotationPart (const TTransform< T > &SrcBA)
 
void CopyTranslationAndScale3D (const TTransform< T > &SrcBA)
 
void SetFromMatrix (const TMatrix< T > &InMatrix)
 
template<typename FArg UE_REQUIRES>
 TTransform (const TTransform< FArg > &From)
 

Static Public Member Functions

static bool AnyHasNegativeScale (const TVector< T > &InScale3D, const TVector< T > &InOtherScale3D)
 
static TVector< T > GetSafeScaleReciprocal (const TVector< T > &InScale, FReal Tolerance=UE_SMALL_NUMBER)
 
static UE_FORCEINLINE_HINT bool AreRotationsEqual (const TTransform< T > &A, const TTransform< T > &B, FReal Tolerance=UE_KINDA_SMALL_NUMBER)
 
static UE_FORCEINLINE_HINT bool AreTranslationsEqual (const TTransform< T > &A, const TTransform< T > &B, FReal Tolerance=UE_KINDA_SMALL_NUMBER)
 
static UE_FORCEINLINE_HINT bool AreScale3DsEqual (const TTransform< T > &A, const TTransform< T > &B, FReal Tolerance=UE_KINDA_SMALL_NUMBER)
 
static UE_FORCEINLINE_HINT void Multiply (TTransform< T > *OutTransform, const TTransform< T > *A, const TTransform< T > *B)
 
static UE_FORCEINLINE_HINT TVector< T > AddTranslations (const TTransform< T > &A, const TTransform< T > &B)
 
static UE_FORCEINLINE_HINT TVector< T > SubtractTranslations (const TTransform< T > &A, const TTransform< T > &B)
 
static void BlendFromIdentityAndAccumulate (TTransform< T > &FinalAtom, const TTransform< T > &SourceAtom, float BlendWeight)
 

Public Attributes

friend Z_Construct_UScriptStruct_FTransform3f_Statics
 
friend Z_Construct_UScriptStruct_FTransform3d_Statics
 
friend Z_Construct_UScriptStruct_FTransform_Statics
 

Static Public Attributes

static CORE_API const TTransform< T > Identity
 

Protected Attributes

TQuat< T > Rotation
 
TVector< T > Translation
 
TVector< T > Scale3D
 

Friends

FArchiveoperator<< (FArchive &Ar, TTransform< T > &M)
 

Member Typedef Documentation

◆ FReal

template<typename T >
using UE::Math::TTransform< T >::FReal = T

◆ TransformVectorRegister

template<typename T >
using UE::Math::TTransform< T >::TransformVectorRegister = TVectorRegisterType<T>

Constructor & Destructor Documentation

◆ TTransform() [1/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( )
inline

Default constructor.

◆ TTransform() [2/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TVector< T > &  InTranslation)
inlineexplicit

Constructor with an initial translation

Parameters
InTranslationThe value to use for the translation component

◆ TTransform() [3/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( ENoInit  )
inlineexplicit

Constructor with leaving uninitialized memory

◆ TTransform() [4/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TQuat< T > &  InRotation)
inlineexplicit

Constructor with an initial rotation

Parameters
InRotationThe value to use for rotation component

◆ TTransform() [5/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TRotator< T > &  InRotation)
inlineexplicit

Constructor with an initial rotation

Parameters
InRotationThe value to use for rotation component (after being converted to a quaternion)

◆ TTransform() [6/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TQuat< T > &  InRotation,
const TVector< T > &  InTranslation,
const TVector< T > &  InScale3D = TVector<T>::OneVector 
)
inline

Constructor with all components initialized

Parameters
InRotationThe value to use for rotation component
InTranslationThe value to use for the translation component
InScale3DThe value to use for the scale component

◆ TTransform() [7/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TRotator< T > &  InRotation,
const TVector< T > &  InTranslation,
const TVector< T > &  InScale3D = TVector<T>::OneVector 
)
inline

Constructor with all components initialized, taking a TRotator<T> as the rotation component

Parameters
InRotationThe value to use for rotation component (after being converted to a quaternion)
InTranslationThe value to use for the translation component
InScale3DThe value to use for the scale component

◆ TTransform() [8/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TMatrix< T > &  InMatrix)
inlineexplicit

Constructor for converting a Matrix (including scale) into a TTransform<T>.

◆ TTransform() [9/10]

template<typename T >
UE::Math::TTransform< T >::TTransform ( const TVector< T > &  InX,
const TVector< T > &  InY,
const TVector< T > &  InZ,
const TVector< T > &  InTranslation 
)
inline

Constructor that takes basis axes and translation

◆ TTransform() [10/10]

template<typename T >
template<typename FArg UE_REQUIRES>
UE::Math::TTransform< T >::TTransform ( const TTransform< FArg > &  From)
inlineexplicit

Member Function Documentation

◆ Accumulate() [1/2]

template<typename T >
void UE::Math::TTransform< T >::Accumulate ( const TTransform< T > &  Atom,
FReal  BlendWeight 
)
inline

Accumulates another transform with this one, with a blending weight

Let SourceAtom = Atom * BlendWeight Rotation is accumulated multiplicatively (Rotation = SourceAtom.Rotation * Rotation). Translation is accumulated additively (Translation += SourceAtom.Translation) Scale3D is accumulated multiplicatively (Scale3D *= SourceAtom.Scale3D)

Note: Rotation will not be normalized! Will have to be done manually.

Parameters
AtomThe other transform to accumulate into this one
BlendWeightThe weight to multiply Atom by before it is accumulated.

◆ Accumulate() [2/2]

template<typename T >
void UE::Math::TTransform< T >::Accumulate ( const TTransform< T > &  SourceAtom)
inline
Note
: Added template type function for Accumulate The template type isn't much useful yet, but it is with the plan to move forward to unify blending features with just type of additive or full pose Eventually it would be nice to just call blend and it all works depending on full pose or additive, but right now that is a lot more refactoring For now this types only defines the different functionality of accumulate Accumulates another transform with this one

Rotation is accumulated multiplicatively (Rotation = SourceAtom.Rotation * Rotation) Translation is accumulated additively (Translation += SourceAtom.Translation) Scale3D is accumulated multiplicatively (Scale3D *= SourceAtom.Scale3D)

Parameters
SourceAtomThe other transform to accumulate into this one

◆ AccumulateWithAdditiveScale()

template<typename T >
void UE::Math::TTransform< T >::AccumulateWithAdditiveScale ( const TTransform< T > &  Atom,
BlendWeight 
)
inline

Accumulates another transform with this one, with a blending weight

Let SourceAtom = Atom * BlendWeight Rotation is accumulated multiplicatively (Rotation = SourceAtom.Rotation * Rotation). Translation is accumulated additively (Translation += SourceAtom.Translation) Scale3D is accumulated assuming incoming scale is additive scale (Scale3D *= (1 + SourceAtom.Scale3D))

When we create additive, we create additive scale based on [TargetScale/SourceScale -1] because that way when you apply weight of 0.3, you don't shrink. We only saves the % of grow/shrink when we apply that back to it, we add back the 1, so that it goes back to it. This solves issue where you blend two additives with 0.3, you don't come back to 0.6 scale, but 1 scale at the end because [1 + [1-1]*0.3 + [1-1]*0.3] becomes 1, so you don't shrink by applying additive scale

Note: Rotation will not be normalized! Will have to be done manually.

Parameters
AtomThe other transform to accumulate into this one
BlendWeightThe weight to multiply Atom by before it is accumulated.

◆ AccumulateWithShortestRotation()

template<typename T >
void UE::Math::TTransform< T >::AccumulateWithShortestRotation ( const TTransform< T > &  DeltaAtom,
FReal  BlendWeight 
)
inline

Accumulates another transform with this one, with an optional blending weight

Rotation is accumulated additively, in the shortest direction (Rotation = Rotation +/- DeltaAtom.Rotation * Weight) Translation is accumulated additively (Translation += DeltaAtom.Translation * Weight) Scale3D is accumulated additively (Scale3D += DeltaAtom.Scale3D * Weight)

Parameters
DeltaAtomThe other transform to accumulate into this one
WeightThe weight to multiply DeltaAtom by before it is accumulated.

◆ AddToTranslation()

template<typename T >
void UE::Math::TTransform< T >::AddToTranslation ( const TVector< T > &  DeltaTranslation)
inline

Adjusts the translation component of this transformation

Parameters
DeltaTranslationThe translation to add in the following fashion: Translation += DeltaTranslation

◆ AddTranslations()

template<typename T >
static UE_FORCEINLINE_HINT TVector< T > UE::Math::TTransform< T >::AddTranslations ( const TTransform< T > &  A,
const TTransform< T > &  B 
)
inlinestatic

Add the translations from two TTransform<T>s and return the result.

Returns
A.Translation + B.Translation

◆ AnyHasNegativeScale()

template<typename T >
bool UE::Math::TTransform< T >::AnyHasNegativeScale ( const TVector< T > &  InScale3D,
const TVector< T > &  InOtherScale3D 
)
inlinestatic

◆ AreRotationsEqual()

template<typename T >
static UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::AreRotationsEqual ( const TTransform< T > &  A,
const TTransform< T > &  B,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
)
inlinestatic

◆ AreScale3DsEqual()

template<typename T >
static UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::AreScale3DsEqual ( const TTransform< T > &  A,
const TTransform< T > &  B,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
)
inlinestatic

◆ AreTranslationsEqual()

template<typename T >
static UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::AreTranslationsEqual ( const TTransform< T > &  A,
const TTransform< T > &  B,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
)
inlinestatic

◆ Blend()

template<typename T >
void UE::Math::TTransform< T >::Blend ( const TTransform< T > &  Atom1,
const TTransform< T > &  Atom2,
float  Alpha 
)
inline

Set this transform to the weighted blend of the supplied two transforms.

◆ BlendFromIdentityAndAccumulate()

template<typename T >
static void UE::Math::TTransform< T >::BlendFromIdentityAndAccumulate ( TTransform< T > &  FinalAtom,
const TTransform< T > &  SourceAtom,
float  BlendWeight 
)
inlinestatic

Blends the Identity transform with a weighted source transform and accumulates that into a destination transform

DeltaAtom = Blend(Identity, SourceAtom, BlendWeight) FinalAtom.Rotation = DeltaAtom.Rotation * FinalAtom.Rotation FinalAtom.Translation += DeltaAtom.Translation FinalAtom.Scale3D *= DeltaAtom.Scale3D

Parameters
FinalAtom[in/out] The atom to accumulate the blended source atom into
SourceAtomThe target transformation (used when BlendWeight = 1); this is modified during the process
BlendWeightThe blend weight between Identity and SourceAtom

◆ BlendWith()

template<typename T >
void UE::Math::TTransform< T >::BlendWith ( const TTransform< T > &  OtherAtom,
float  Alpha 
)
inline

Set this Transform to the weighted blend of it and the supplied Transform.

◆ ConcatenateRotation()

template<typename T >
void UE::Math::TTransform< T >::ConcatenateRotation ( const TQuat< T > &  DeltaRotation)
inline

Concatenates another rotation to this transformation

Parameters
DeltaRotationThe rotation to concatenate in the following fashion: Rotation = Rotation * DeltaRotation

◆ ContainsNaN()

template<typename T >
bool UE::Math::TTransform< T >::ContainsNaN ( ) const
inline

Checks the components for non-finite values (NaN or Inf).

Returns
Returns true if any component (rotation, translation, or scale) is not finite.

◆ CopyRotation()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::CopyRotation ( const TTransform< T > &  Other)
inline

Copy rotation from another TTransform<T>.

◆ CopyRotationPart()

template<typename T >
void UE::Math::TTransform< T >::CopyRotationPart ( const TTransform< T > &  SrcBA)
inline

Sets the Rotation and Scale3D of this transformation from another transform

Parameters
SrcBAThe transform to copy rotation and Scale3D from

◆ CopyScale3D()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::CopyScale3D ( const TTransform< T > &  Other)
inline

Copy scale from another TTransform<T>.

◆ CopyTranslation()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::CopyTranslation ( const TTransform< T > &  Other)
inline

Copy translation from another TTransform<T>.

◆ CopyTranslationAndScale3D()

template<typename T >
void UE::Math::TTransform< T >::CopyTranslationAndScale3D ( const TTransform< T > &  SrcBA)
inline

Sets the Translation and Scale3D of this transformation from another transform

Parameters
SrcBAThe transform to copy translation and Scale3D from

◆ DebugEqualMatrix()

template<typename T >
bool UE::Math::TTransform< T >::DebugEqualMatrix ( const TMatrix< T > &  Matrix) const

Debug purpose only

◆ DebugPrint()

template<typename T >
void UE::Math::TTransform< T >::DebugPrint ( ) const

Does a debugf of the contents of this Transform.

Does a debugf of the contents of this BoneAtom.

◆ DiagnosticCheck_IsValid()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::DiagnosticCheck_IsValid ( ) const
inline

◆ DiagnosticCheckNaN_All()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::DiagnosticCheckNaN_All ( ) const
inline

◆ DiagnosticCheckNaN_Rotate()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::DiagnosticCheckNaN_Rotate ( ) const
inline

◆ DiagnosticCheckNaN_Scale3D()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::DiagnosticCheckNaN_Scale3D ( ) const
inline

◆ DiagnosticCheckNaN_Translate()

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::DiagnosticCheckNaN_Translate ( ) const
inline

◆ Equals()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::Equals ( const TTransform< T > &  Other,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
) const
inline

◆ EqualsNoScale()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::EqualsNoScale ( const TTransform< T > &  Other,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
) const
inline

◆ GetDeterminant()

template<typename T >
UE_FORCEINLINE_HINT FReal UE::Math::TTransform< T >::GetDeterminant ( ) const
inline

Calculate the determinant of this transformation

◆ GetLocation()

template<typename T >
UE_FORCEINLINE_HINT TVector< T > UE::Math::TTransform< T >::GetLocation ( ) const
inline

◆ GetMaximumAxisScale()

template<typename T >
T UE::Math::TTransform< T >::GetMaximumAxisScale ( ) const
inline

same version of TMatrix<T>::GetMaximumAxisScale function

Returns
the maximum magnitude of all components of the 3D scale.

◆ GetMinimumAxisScale()

template<typename T >
T UE::Math::TTransform< T >::GetMinimumAxisScale ( ) const
inline
Returns
the minimum magnitude of all components of the 3D scale.

◆ GetRelativeTransform()

template<typename T >
TTransform< T > UE::Math::TTransform< T >::GetRelativeTransform ( const TTransform< T > &  Other) const

◆ GetRelativeTransformReverse()

template<typename T >
TTransform< T > UE::Math::TTransform< T >::GetRelativeTransformReverse ( const TTransform< T > &  Other) const

◆ GetRotation()

template<typename T >
TQuat< T > UE::Math::TTransform< T >::GetRotation ( ) const
inline

Returns the rotation component

Returns
The rotation component

◆ GetRotationRegister()

template<typename T >
TransformVectorRegister UE::Math::TTransform< T >::GetRotationRegister ( ) const
inline

◆ GetSafeScaleReciprocal()

template<typename T >
TVector< T > UE::Math::TTransform< T >::GetSafeScaleReciprocal ( const TVector< T > &  InScale,
FReal  Tolerance = UE_SMALL_NUMBER 
)
inlinestatic

◆ GetScale3D()

template<typename T >
TVector< T > UE::Math::TTransform< T >::GetScale3D ( ) const
inline

Returns the Scale3D component

Returns
The Scale3D component

◆ GetScaled() [1/2]

template<typename T >
TTransform< T > UE::Math::TTransform< T >::GetScaled ( InScale) const
inline

Apply Scale to this transform

◆ GetScaled() [2/2]

template<typename T >
TTransform< T > UE::Math::TTransform< T >::GetScaled ( TVector< T >  InScale) const
inline

Apply Scale to this transform

◆ GetScaledAxis()

template<typename T >
TVector< T > UE::Math::TTransform< T >::GetScaledAxis ( EAxis::Type  InAxis) const
inline

◆ GetTranslation()

template<typename T >
TVector< T > UE::Math::TTransform< T >::GetTranslation ( ) const
inline

Returns the translation component

Returns
The translation component

◆ GetTranslationRegister()

template<typename T >
TransformVectorRegister UE::Math::TTransform< T >::GetTranslationRegister ( ) const
inline

◆ GetUnitAxis()

template<typename T >
TVector< T > UE::Math::TTransform< T >::GetUnitAxis ( EAxis::Type  InAxis) const
inline

◆ Identical()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::Identical ( const TTransform< T > *  Other,
uint32  PortFlags 
) const
inline

◆ InitFromString()

template<typename T >
bool UE::Math::TTransform< T >::InitFromString ( const FString &  InSourceString)

Acceptable form: "%f,%f,%f|%f,%f,%f|%f,%f,%f"

◆ Inverse()

template<typename T >
TTransform< T > UE::Math::TTransform< T >::Inverse ( ) const
inline

Convert this Transform to inverse.

◆ InverseTransformPosition()

template<typename T >
TVector< T > UE::Math::TTransform< T >::InverseTransformPosition ( const TVector< T > &  V) const
inline

Inverts the transform and then transforms V - correctly handles scaling in this transform.

◆ InverseTransformPositionNoScale()

template<typename T >
TVector< T > UE::Math::TTransform< T >::InverseTransformPositionNoScale ( const TVector< T > &  V) const
inline

◆ InverseTransformRotation()

template<typename T >
UE_FORCEINLINE_HINT TQuat< T > UE::Math::TTransform< T >::InverseTransformRotation ( const TQuat< T > &  Q) const

Inverse transform a rotation. For example if this is a LocalToWorld transform, InverseTransformRotation(Q) would transform Q from world to local space.

◆ InverseTransformVector()

template<typename T >
TVector< T > UE::Math::TTransform< T >::InverseTransformVector ( const TVector< T > &  V) const
inline

Transform a direction vector by the inverse of this transform - will not take into account translation part. If you want to transform a surface normal (or plane) and correctly account for non-uniform scaling you should use TransformByUsingAdjointT with adjoint of matrix inverse.

◆ InverseTransformVectorNoScale()

template<typename T >
TVector< T > UE::Math::TTransform< T >::InverseTransformVectorNoScale ( const TVector< T > &  V) const
inline

◆ IsRotationNormalized()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::IsRotationNormalized ( ) const
inline

Checks whether the rotation component is normalized or not

Returns
true if the rotation component is normalized, and false otherwise.

◆ IsValid()

template<typename T >
bool UE::Math::TTransform< T >::IsValid ( ) const
inline

◆ LerpTranslationScale3D()

template<typename T >
void UE::Math::TTransform< T >::LerpTranslationScale3D ( const TTransform< T > &  SourceAtom1,
const TTransform< T > &  SourceAtom2,
ScalarRegister  Alpha 
)
inline

Set the translation and Scale3D components of this transform to a linearly interpolated combination of two other transforms

Translation = FMath::Lerp(SourceAtom1.Translation, SourceAtom2.Translation, Alpha) Scale3D = FMath::Lerp(SourceAtom1.Scale3D, SourceAtom2.Scale3D, Alpha)

Parameters
SourceAtom1The starting point source atom (used 100% if Alpha is 0)
SourceAtom2The ending point source atom (used 100% if Alpha is 1)
AlphaThe blending weight between SourceAtom1 and SourceAtom2

◆ Mirror()

template<typename T >
void UE::Math::TTransform< T >::Mirror ( EAxis::Type  MirrorAxis,
EAxis::Type  FlipAxis 
)
inline

◆ Multiply()

template<typename T >
void UE::Math::TTransform< T >::Multiply ( TTransform< T > *  OutTransform,
const TTransform< T > *  A,
const TTransform< T > *  B 
)
inlinestatic

Create a new transform: OutTransform = A * B.

Order matters when composing transforms : A * B will yield a transform that logically first applies A then B to any subsequent transformation.

Parameters
OutTransformpointer to transform that will store the result of A * B.
ATransform A.
BTransform B.

Returns Multiplied Transform of 2 TTransform<T>s

◆ MultiplyScale3D()

template<typename T >
void UE::Math::TTransform< T >::MultiplyScale3D ( const TVector< T > &  Scale3DMultiplier)
inline

Scales the Scale3D component by a new factor

Parameters
Scale3DMultiplierThe value to multiply Scale3D with

◆ NormalizeRotation()

template<typename T >
void UE::Math::TTransform< T >::NormalizeRotation ( )
inline

Normalize the rotation component of this transformation

◆ operator*() [1/3]

template<typename T >
TTransform< T > UE::Math::TTransform< T >::operator* ( const TQuat< T > &  Other) const
inline

Return a transform that is the result of this multiplied by another transform (made only from a rotation). Order matters when composing transforms : C = A * B will yield a transform C that logically first applies A then B to any subsequent transformation.

Parameters
Otherother quaternion rotation by which to multiply.
Returns
new transform: this * TTransform(Other)

◆ operator*() [2/3]

template<typename T >
TTransform< T > UE::Math::TTransform< T >::operator* ( const TTransform< T > &  Other) const
inline

Return a transform that is the result of this multiplied by another transform. Order matters when composing transforms : C = A * B will yield a transform C that logically first applies A then B to any subsequent transformation.

Parameters
Otherother transform by which to multiply.
Returns
new transform: this * Other

◆ operator*() [3/3]

template<typename T >
UE_FORCEINLINE_HINT TTransform< T > UE::Math::TTransform< T >::operator* ( Mult) const
inline

◆ operator*=() [1/3]

template<typename T >
void UE::Math::TTransform< T >::operator*= ( const TQuat< T > &  Other)
inline

Sets this transform to the result of this multiplied by another transform (made only from a rotation). Order matters when composing transforms : C = A * B will yield a transform C that logically first applies A then B to any subsequent transformation.

Parameters
Otherother quaternion rotation by which to multiply.

◆ operator*=() [2/3]

template<typename T >
UE_FORCEINLINE_HINT void UE::Math::TTransform< T >::operator*= ( const TTransform< T > &  Other)

Sets this transform to the result of this multiplied by another transform. Order matters when composing transforms : C = A * B will yield a transform C that logically first applies A then B to any subsequent transformation.

Parameters
Otherother transform by which to multiply.

◆ operator*=() [3/3]

template<typename T >
TTransform< T > & UE::Math::TTransform< T >::operator*= ( Mult)
inline

◆ operator+()

template<typename T >
UE_FORCEINLINE_HINT TTransform< T > UE::Math::TTransform< T >::operator+ ( const TTransform< T > &  Atom) const
inline

Quaternion addition is wrong here. This is just a special case for linear interpolation. Use only within blends!! Rotation part is NOT normalized!!

◆ operator+=()

template<typename T >
TTransform< T > & UE::Math::TTransform< T >::operator+= ( const TTransform< T > &  Atom)
inline

◆ RemoveScaling()

template<typename T >
void UE::Math::TTransform< T >::RemoveScaling ( FReal  Tolerance = UE_SMALL_NUMBER)
inline

◆ RotationEquals()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::RotationEquals ( const TTransform< T > &  Other,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
) const
inline

◆ Rotator()

template<typename T >
UE_FORCEINLINE_HINT TRotator< T > UE::Math::TTransform< T >::Rotator ( ) const
inline

◆ Scale3DEquals()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::Scale3DEquals ( const TTransform< T > &  Other,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
) const
inline

◆ ScaleTranslation() [1/2]

template<typename T >
void UE::Math::TTransform< T >::ScaleTranslation ( const FReal Scale)
inline

◆ ScaleTranslation() [2/2]

template<typename T >
void UE::Math::TTransform< T >::ScaleTranslation ( const TVector< T > &  InScale3D)
inline

Scale the translation part of the Transform by the supplied vector.

◆ Serialize()

template<typename T >
bool UE::Math::TTransform< T >::Serialize ( FArchive Ar)
inline

◆ SerializeFromMismatchedTag()

template<typename T >
bool UE::Math::TTransform< T >::SerializeFromMismatchedTag ( FName  StructTag,
FArchive Ar 
)
inline

◆ SetComponents()

template<typename T >
void UE::Math::TTransform< T >::SetComponents ( const TQuat< T > &  InRotation,
const TVector< T > &  InTranslation,
const TVector< T > &  InScale3D 
)
inline

Sets the components

Parameters
InRotationThe new value for the Rotation component
InTranslationThe new value for the Translation component
InScale3DThe new value for the Scale3D component

◆ SetFromMatrix()

template<typename T >
void UE::Math::TTransform< T >::SetFromMatrix ( const TMatrix< T > &  InMatrix)
inline

◆ SetIdentity()

template<typename T >
void UE::Math::TTransform< T >::SetIdentity ( )
inline

Sets the components to the identity transform: Rotation = (0,0,0,1) Translation = (0,0,0) Scale3D = (1,1,1)

◆ SetIdentityZeroScale()

template<typename T >
void UE::Math::TTransform< T >::SetIdentityZeroScale ( )
inline

Sets the components to the 'additive' identity transform: Rotation = (0,0,0,1) Translation = (0,0,0) Scale3D = (0,0,0)

◆ SetLocation()

template<typename T >
void UE::Math::TTransform< T >::SetLocation ( const TVector< T > &  Origin)
inline

Set the translation of this transformation

◆ SetRotation()

template<typename T >
void UE::Math::TTransform< T >::SetRotation ( const TQuat< T > &  NewRotation)
inline

Sets the rotation component

Parameters
NewRotationThe new value for the rotation component

◆ SetRotationRegister()

template<typename T >
void UE::Math::TTransform< T >::SetRotationRegister ( TransformVectorRegister  InRotation)
inline

◆ SetScale3D()

template<typename T >
void UE::Math::TTransform< T >::SetScale3D ( const TVector< T > &  NewScale3D)
inline

Sets the Scale3D component

Parameters
NewScale3DThe new value for the Scale3D component

◆ SetToRelativeTransform()

template<typename T >
void UE::Math::TTransform< T >::SetToRelativeTransform ( const TTransform< T > &  ParentTransform)

Set current transform and the relative to ParentTransform. Equates to This = This->GetRelativeTransform(Parent), but saves the intermediate TTransform<T> storage and copy.

◆ SetTranslation()

template<typename T >
void UE::Math::TTransform< T >::SetTranslation ( const TVector< T > &  NewTranslation)
inline

Sets the translation component

Parameters
NewTranslationThe new value for the translation component

◆ SetTranslationAndScale3D()

template<typename T >
void UE::Math::TTransform< T >::SetTranslationAndScale3D ( const TVector< T > &  NewTranslation,
const TVector< T > &  NewScale3D 
)
inline

Sets both the translation and Scale3D components at the same time

Parameters
NewTranslationThe new value for the translation component
NewScale3DThe new value for the Scale3D component

◆ SetTranslationRegister()

template<typename T >
void UE::Math::TTransform< T >::SetTranslationRegister ( TransformVectorRegister  InTranslation)
inline

◆ SubtractTranslations()

template<typename T >
static UE_FORCEINLINE_HINT TVector< T > UE::Math::TTransform< T >::SubtractTranslations ( const TTransform< T > &  A,
const TTransform< T > &  B 
)
inlinestatic

Subtract translations from two TTransform<T>s and return the difference.

Returns
A.Translation - B.Translation.

◆ ToHumanReadableString()

template<typename T >
FString UE::Math::TTransform< T >::ToHumanReadableString ( ) const

Convert TTransform<T> contents to a string

◆ ToInverseMatrixWithScale()

template<typename T >
UE_FORCEINLINE_HINT TMatrix< T > UE::Math::TTransform< T >::ToInverseMatrixWithScale ( ) const
inline

Convert this Transform to matrix with scaling and compute the inverse of that.

◆ ToMatrixNoScale()

template<typename T >
TMatrix< T > UE::Math::TTransform< T >::ToMatrixNoScale ( ) const
inline

Convert this Transform to a transformation matrix, ignoring its scaling

◆ ToMatrixWithScale()

template<typename T >
TMatrix< T > UE::Math::TTransform< T >::ToMatrixWithScale ( ) const
inline

Convert this Transform to a transformation matrix with scaling.

◆ ToString()

template<typename T >
FString UE::Math::TTransform< T >::ToString ( ) const

◆ TransformFVector4()

template<typename T >
TVector4< T > UE::Math::TTransform< T >::TransformFVector4 ( const TVector4< T > &  V) const
inline

Transform TVector4<T>

◆ TransformFVector4NoScale()

template<typename T >
TVector4< T > UE::Math::TTransform< T >::TransformFVector4NoScale ( const TVector4< T > &  V) const
inline

Transform homogenous TVector4<T>, ignoring the scaling part of this transform

◆ TransformPosition()

template<typename T >
TVector< T > UE::Math::TTransform< T >::TransformPosition ( const TVector< T > &  V) const
inline

◆ TransformPositionNoScale()

template<typename T >
TVector< T > UE::Math::TTransform< T >::TransformPositionNoScale ( const TVector< T > &  V) const
inline

◆ TransformRotation()

template<typename T >
UE_FORCEINLINE_HINT TQuat< T > UE::Math::TTransform< T >::TransformRotation ( const TQuat< T > &  Q) const

Transform a rotation. For example if this is a LocalToWorld transform, TransformRotation(Q) would transform Q from local to world space.

◆ TransformVector()

template<typename T >
TVector< T > UE::Math::TTransform< T >::TransformVector ( const TVector< T > &  V) const
inline

◆ TransformVectorNoScale()

template<typename T >
TVector< T > UE::Math::TTransform< T >::TransformVectorNoScale ( const TVector< T > &  V) const
inline

◆ TranslationEquals()

template<typename T >
UE_FORCEINLINE_HINT bool UE::Math::TTransform< T >::TranslationEquals ( const TTransform< T > &  Other,
FReal  Tolerance = UE_KINDA_SMALL_NUMBER 
) const
inline

Friends And Related Symbol Documentation

◆ operator<<

template<typename T >
FArchive & operator<< ( FArchive Ar,
TTransform< T > &  M 
)
friend

Member Data Documentation

◆ Identity

template<typename T >
CORE_API const TTransform<T> UE::Math::TTransform< T >::Identity
static

The identity transformation (Rotation = TQuat<T>::Identity, Translation = TVector<T>::ZeroVector, Scale3D = (1,1,1)).

◆ Rotation

template<typename T >
TQuat<T> UE::Math::TTransform< T >::Rotation
protected

Rotation of this transformation, as a quaternion.

◆ Scale3D

template<typename T >
TVector<T> UE::Math::TTransform< T >::Scale3D
protected

3D scale (always applied in local space) as a vector.

◆ Translation

template<typename T >
TVector<T> UE::Math::TTransform< T >::Translation
protected

Translation of this transformation, as a vector.

◆ Z_Construct_UScriptStruct_FTransform3d_Statics

template<typename T >
friend UE::Math::TTransform< T >::Z_Construct_UScriptStruct_FTransform3d_Statics

◆ Z_Construct_UScriptStruct_FTransform3f_Statics

template<typename T >
friend UE::Math::TTransform< T >::Z_Construct_UScriptStruct_FTransform3f_Statics

◆ Z_Construct_UScriptStruct_FTransform_Statics

template<typename T >
friend UE::Math::TTransform< T >::Z_Construct_UScriptStruct_FTransform_Statics

The documentation for this struct was generated from the following files: