FTransform::AccumulateWithAdditiveScale

Accumulates another transform with this one, with a blending weight

Windows
MacOS
Linux

References

Module

Core

Header

/Engine/Source/Runtime/Core/Public/Math/TransformNonVectorized.h

Include

#include "Math/TransformNonVectorized.h"

Syntax

void AccumulateWithAdditiveScale
(
    const FTransform & Atom,
    float BlendWeight
)

Remarks

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

Parameter

Description

Atom

The other transform to accumulate into this one

BlendWeight

The weight to multiply Atom by before it is accumulated.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback