FTransform
struct FTransform
Transform composed of Scale, Rotation (as a quaternion), and Translation.
Transforms can be used to convert from one space to another, for example by transforming positions and directions from local space to world space.
Transformation of position vectors is applied in the order: Scale > Rotate > Translate. Transformation of direction vectors is applied in the order: Scale > Rotate.
Order matters when composing transforms: C = A * B will yield a transform C that logically first applies A then B to any subsequent transformation. Note that this is the opposite order of quaternion (FQuat ) multiplication.
Example: LocalToWorld = (DeltaRotation * LocalToWorld) will change rotation in local space by DeltaRotation. Example: LocalToWorld = (LocalToWorld * DeltaRotation) will change rotation in world space by DeltaRotation.
Transform composed of Quat/Translation/Scale. The full C++ class is located here: Engine\Source\Runtime\Core\Public\Math\Transform.h
Name  Description  

FTransform() 
Default constructor. 

FTransform 
Constructor that takes basis axes and translation 

FTransform ( 
Constructor with an initial translation 

FTransform ( 
Constructor with leaving uninitialized memory 

FTransform ( 
Constructor with an initial rotation 

FTransform ( 
Constructor with an initial rotation 

FTransform ( 
Copyconstructor 

FTransform ( 
Constructor for converting a Matrix (including scale) into a FTransform . 

FTransform 
Constructor with all components initialized 

FTransform 
Constructor with all components initialized, taking a FRotator as the rotation component 
Name  Description  

void 
Accumulate ( 
: 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 

void 
Accumulate ( 
Accumulates another transform with this one, with a blending weight 

void 
AccumulateWithAdditiveScale ( 
Accumulates another transform with this one, with a blending weight 

void 
AccumulateWithShortestRotation ( 
Accumulates another transform with this one, with an optional blending weight 

void 
AddToTranslation ( 
Adjusts the translation component of this transformation 


AddTranslations ( 
Add the translations from two FTransforms and return the result. A.Translation + B.Translation 


bool 
AnyHasNegativeScale 


bool 
AreRotationsEqual ( 
Test if A's rotation equals B's rotation, within a tolerance. Preferred over "A.GetRotation().Equals(B.GetRotation())" because it is faster on some platforms. 

bool 
AreScale3DsEqual ( 
Test if A's scale equals B's scale, within a tolerance. Preferred over "A.GetScale3D().Equals(B.GetScale3D())" because it is faster on some platforms. 

bool 
AreTranslationsEqual ( 
Test if A's translation equals B's translation, within a tolerance. Preferred over "A.GetTranslation().Equals(B.GetTranslation())" because it is faster on some platforms. 
void 
Blend ( 
Set this transform to the weighted blend of the supplied two transforms. 


void 
BlendFromIdentityAndAccumulate ( 
Blends the Identity transform with a weighted source transform and accumulates that into a destination transform 
void 
BlendWith ( 
Set this Transform to the weighted blend of it and the supplied Transform. 

void 
ConcatenateRotation ( 
Concatenates another rotation to this transformation 

bool 
ContainsNaN() 
Checks the components for nonfinite values (NaN or Inf). 

void 
CopyRotation ( 
Copy rotation from another FTransform . 

void 
CopyRotationPart ( 
Sets the Rotation and Scale3D of this transformation from another transform 

void 
CopyScale3D ( 
Copy scale from another FTransform . 

void 
CopyTranslation ( 
Copy translation from another FTransform . 

void 
CopyTranslationAndScale3D ( 
Sets the Translation and Scale3D of this transformation from another transform 

bool 
DebugEqualMatrix ( 
Debug purpose only 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1) voi... 
DebugPrint() 
Replacement of Inverse of FMatrix . 

void 
DiagnosticCheck_IsValid() 

void 
DiagnosticCheckNaN_All() 

void 
DiagnosticCheckNaN_Rotate() 

void 
DiagnosticCheckNaN_Scale3D() 

void 
DiagnosticCheckNaN_Translate() 

bool 
Equals ( 
Test if all components of the transforms are equal, within a tolerance. 

bool 
EqualsNoScale ( 
Test if rotation and translation components of the transforms are equal, within a tolerance. 

float 
GetDeterminant() 
Calculate the 

GetLocation() 
Temp function for easy conversion 

float 
GetMaximumAxisScale() 
Same version of FMatrix::GetMaximumAxisScale function 

float 
GetMinimumAxisScale() 
The minimum magnitude of all components of the 3D scale. 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1)FTra ... 
GetRelativeTransform ( 
Inverse does not work well with VQS format(in particular nonuniform), so removing it, but made two below functions to be used instead. 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1)FTra ... 
GetRelativeTransformReverse ( 

GetRotation() 
Returns the rotation component The rotation component 


GetSafeScaleReciprocal ( 
Mathematically if you have 0 scale, it should be infinite, however, in practice if you have 0 scale, and relative transform doesn't make much sense anymore because you should be instead of showing gigantic infinite mesh also returning BIG_NUMBER causes sequential NaN issues by multiplying so we hardcode as 0 

GetScale3D() 
Returns the Scale3D component The Scale3D component 

GetScaled ( 
Apply Scale to this transform 

GetScaled ( 
Apply Scale to this transform 

GetScaledAxis ( 
X = 0, y = 1, z = 2 

GetTranslation() 
Returns the translation component The translation component 

GetUnitAxis ( 
X = 0, y = 1, z = 2 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1) boo... 
InitFromString ( 
Acceptable form: "%f,%f,%f%f,%f,%f%f,%f,%f" 

Inverse() 
Convert this Transform to inverse. 

InverseTransformPosition ( 
Do backward operation when inverse, translation > rotation > scale 

InverseTransformPositionNoScale ( 
Do backward operation when inverse, translation > rotation 

InverseTransformRotation ( 
Inverse transform a rotation. 

InverseTransformVector ( 
Do backward operation when inverse, translation > rotation > scale 

InverseTransformVectorNoScale ( 
Do backward operation when inverse, translation > rotation 

bool 
IsRotationNormalized() 
Checks whether the rotation component is normalized or not 

bool 
IsValid() 

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

void 
Mirror ( 


void 
Multiply ( 
Create a new transform: OutTransform = A * B. 
void 
MultiplyScale3D ( 
Scales the Scale3D component by a new factor 

void 
NormalizeRotation() 
Normalize the rotation component of this transformation 

void 
RemoveScaling ( 
This function is from matrix, and all it does is to normalize rotation portion 

bool 
RotationEquals ( 
Test if this Transform's rotation equals another's rotation, within a tolerance. Preferred over "GetRotation().Equals(Other.GetRotation())" because it is faster on some platforms. 

Rotator() 

bool 
Scale3DEquals ( 
Test if this Transform's scale equals another's scale, within a tolerance. Preferred over "GetScale3D().Equals(Other.GetScale3D())" because it is faster on some platforms. 

void 
ScaleTranslation ( 

void 
ScaleTranslation ( 
Scale the translation part of the Transform by the supplied vector. 

void 
SetComponents 
Sets the components 

void 
SetFromMatrix ( 

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

void 
SetLocation ( 
Set the translation of this transformation 

void 
SetRotation ( 
Sets the rotation component 

void 
SetScale3D ( 
Sets the Scale3D component 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1) voi... 
SetToRelativeTransform ( 
Set current transform and the relative to ParentTransform. 

void 
SetTranslation ( 
Sets the translation component 

void 
SetTranslationAndScale3D 
Sets both the translation and Scale3D components at the same time 


SubtractTranslations ( 
Subtract translations from two FTransforms and return the difference. 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1)FStr ... 
ToHumanReadableString() 
Convert FTransform contents to a string 

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

ToMatrixNoScale() 
Convert this Transform to a transformation matrix, ignoring its scaling 

ToMatrixWithScale() 
Convert this Transform to a transformation matrix with scaling. 

[CORE_API](API\Runtime\Core\Misc\CORE_API_1)FStr ... 
ToString() 

TransformFVector4 ( 
Transform FVector4 

TransformFVector4NoScale ( 
Transform homogenous FVector4 , ignoring the scaling part of this transform 

TransformPosition ( 

TransformPositionNoScale ( 

TransformRotation ( 
Transform a rotation. 

TransformVector ( 

TransformVectorNoScale ( 

bool 
TranslationEquals ( 
Test if this Transform's translation equals another's translation, within a tolerance. Preferred over "GetTranslation().Equals(Other.GetTranslation())" because it is faster on some platforms. 
Name  Description  

operator* ( 
Return a transform that is the result of this multiplied by another transform (made only from a rotation). 

operator* ( 
Return a transform that is the result of this multiplied by another transform. 

operator* ( 

void 
operator*= ( 
Sets this transform to the result of this multiplied by another transform (made only from a rotation). 

void 
operator*= ( 
Sets this transform to the result of this multiplied by another transform. 

operator*= ( 

operator+ ( 
Quaternion addition is wrong here. 

operator+= ( 
Name 
Description 

Identity 
The identity transformation (Rotation = FQuat::Identity, Translation = FVector::ZeroVector, Scale3D = (1,1,1)). 
Module 

Header 
Runtime/Core/Public/Math/TransformNonVectorized.h 