Open 3D Engine EMotionFX Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
EMotionFX::NonUniformMotionData Class Reference

Inherits EMotionFX::MotionData.

Classes

struct  KeyTrack
 

Public Types

using FloatTrack = KeyTrack< float >
 
using Vector3Track = KeyTrack< AZ::Vector3 >
 
using QuaternionTrack = KeyTrack< MCore::Compressed16BitQuaternion >
 
- Public Types inherited from EMotionFX::MotionData
using Vector3Key = Key< AZ::Vector3 >
 
using QuaternionKey = Key< AZ::Quaternion >
 
using FloatKey = Key< float >
 

Public Member Functions

void InitFromNonUniformData (const NonUniformMotionData *motionData, bool keepSameSampleRate=true, float newSampleRate=30.0f, bool updateDuration=false) override
 
void RemoveRedundantKeyframes (bool updateDurationAfterwards=false)
 
void Optimize (const OptimizeSettings &settings) override
 
bool Read (MCore::Stream *stream, const ReadSettings &readSettings) override
 
bool Save (MCore::Stream *stream, const SaveSettings &saveSettings) const override
 
size_t CalcStreamSaveSizeInBytes (const SaveSettings &saveSettings) const override
 
AZ::u32 GetStreamSaveVersion () const override
 
const char * GetSceneSettingsName () const override
 
Transform SampleJointTransform (const MotionDataSampleSettings &settings, size_t jointSkeletonIndex) const override
 
void SamplePose (const MotionDataSampleSettings &settings, Pose *outputPose) const override
 
Transform SampleJointTransform (float sampleTime, size_t jointDataIndex) const override
 
AZ::Vector3 SampleJointPosition (float sampleTime, size_t jointDataIndex) const override
 
AZ::Quaternion SampleJointRotation (float sampleTime, size_t jointDataIndex) const override
 
float SampleMorph (float sampleTime, size_t morphDataIndex) const override
 
float SampleFloat (float sampleTime, size_t floatDataIndex) const override
 
void AllocateJointPositionSamples (size_t jointDataIndex, size_t numSamples)
 
void AllocateJointRotationSamples (size_t jointDataIndex, size_t numSamples)
 
void AllocateMorphSamples (size_t morphDataIndex, size_t numSamples)
 
void AllocateFloatSamples (size_t floatDataIndex, size_t numSamples)
 
void ClearAllJointTransformSamples () override
 
void ClearAllMorphSamples () override
 
void ClearAllFloatSamples () override
 
void ClearJointPositionSamples (size_t jointDataIndex) override
 
void ClearJointRotationSamples (size_t jointDataIndex) override
 
void ClearJointTransformSamples (size_t jointDataIndex) override
 
void ClearMorphSamples (size_t morphDataIndex) override
 
void ClearFloatSamples (size_t floatDataIndex) override
 
bool VerifyIntegrity () const override
 
void FixMissingEndKeyframes ()
 
void ScaleData (float scaleFactor) override
 
void UpdateDuration () override
 
Vector3Key GetJointPositionSample (size_t jointDataIndex, size_t sampleIndex) const
 
QuaternionKey GetJointRotationSample (size_t jointDataIndex, size_t sampleIndex) const
 
FloatKey GetMorphSample (size_t morphDataIndex, size_t sampleIndex) const
 
FloatKey GetFloatSample (size_t floatDataIndex, size_t sampleIndex) const
 
bool IsJointPositionAnimated (size_t jointDataIndex) const override
 
bool IsJointRotationAnimated (size_t jointDataIndex) const override
 
bool IsJointAnimated (size_t jointDataIndex) const override
 
bool IsMorphAnimated (size_t morphDataIndex) const override
 
bool IsFloatAnimated (size_t floatDataIndex) const override
 
size_t GetNumJointPositionSamples (size_t jointDataIndex) const
 
size_t GetNumJointRotationSamples (size_t jointDataIndex) const
 
size_t GetNumMorphSamples (size_t morphDataIndex) const
 
size_t GetNumFloatSamples (size_t floatDataIndex) const
 
const Vector3TrackGetJointPositionTrack (size_t jointDataIndex) const
 
const QuaternionTrackGetJointRotationTrack (size_t jointDataIndex) const
 
const FloatTrackGetMorphTrack (size_t morphDataIndex) const
 
const FloatTrackGetFloatTrack (size_t floatDataIndex) const
 
void SetJointPositionSample (size_t jointDataIndex, size_t sampleIndex, const Vector3Key &key)
 
void SetJointRotationSample (size_t jointDataIndex, size_t sampleIndex, const QuaternionKey &key)
 
void SetMorphSample (size_t morphDataIndex, size_t sampleIndex, const FloatKey &key)
 
void SetFloatSample (size_t floatDataIndex, size_t sampleIndex, const FloatKey &key)
 
void SetJointPositionSamples (size_t jointDataIndex, const Vector3Track &track)
 
void SetJointRotationSamples (size_t jointDataIndex, const QuaternionTrack &track)
 
void AllocateJointScaleSamples (size_t jointDataIndex, size_t numSamples)
 
void ClearJointScaleSamples (size_t jointDataIndex) override
 
Vector3Key GetJointScaleSample (size_t jointDataIndex, size_t sampleIndex) const
 
bool IsJointScaleAnimated (size_t jointDataIndex) const override
 
size_t GetNumJointScaleSamples (size_t jointDataIndex) const
 
const Vector3TrackGetJointScaleTrack (size_t jointDataIndex) const
 
void SetJointScaleSample (size_t jointDataIndex, size_t sampleIndex, const Vector3Key &key)
 
void SetJointScaleSamples (size_t jointDataIndex, const Vector3Track &track)
 
AZ::Vector3 SampleJointScale (float sampleTime, size_t jointDataIndex) const override
 
void ExtractRootMotion (size_t sampleJointDataIndex, size_t rootJointDataIndex, const RootMotionExtractionData &data) override
 
void SmoothData (const RootMotionExtractionData &data)
 
NonUniformMotionDataoperator= (const NonUniformMotionData &sourceMotionData)
 
- Public Member Functions inherited from EMotionFX::MotionData
 MotionData (const MotionData &)=delete
 
 MotionData (MotionData &&)=delete
 
MotionDataoperator= (const MotionData &)=delete
 
MotionDataoperator= (MotionData &&)=delete
 
virtual void InitFromNonUniformData (const NonUniformMotionData *motionData, bool keepSameSampleRate=true, float newSampleRate=30.0f, bool updateDuration=false)=0
 
virtual void Optimize (const OptimizeSettings &settings)
 
virtual bool Read (MCore::Stream *stream, const ReadSettings &readSettings)=0
 
virtual bool Save (MCore::Stream *stream, const SaveSettings &saveSettings) const =0
 
virtual size_t CalcStreamSaveSizeInBytes (const SaveSettings &saveSettings) const =0
 
virtual AZ::u32 GetStreamSaveVersion () const =0
 
virtual bool GetSupportsOptimizeSettings () const
 
virtual const char * GetSceneSettingsName () const =0
 
virtual Transform SampleJointTransform (const MotionDataSampleSettings &settings, size_t jointSkeletonIndex) const =0
 
virtual void SamplePose (const MotionDataSampleSettings &settings, Pose *outputPose) const =0
 
virtual float SampleMorph (float sampleTime, size_t morphDataIndex) const =0
 
virtual float SampleFloat (float sampleTime, size_t morphDataIndex) const =0
 
virtual Transform SampleJointTransform (float sampleTime, size_t jointIndex) const =0
 
virtual AZ::Vector3 SampleJointPosition (float sampleTime, size_t jointDataIndex) const =0
 
virtual AZ::Quaternion SampleJointRotation (float sampleTime, size_t jointDataIndex) const =0
 
bool SampleJointPosition (float sampleTime, AZ::u32 jointNameId, AZ::Vector3 &resultValue) const
 
bool SampleJointRotation (float sampleTime, AZ::u32 jointNameId, AZ::Quaternion &resultValue) const
 
bool SampleMorph (float sampleTime, AZ::u32 id, float &resultValue) const
 
bool SampleFloat (float sampleTime, AZ::u32 id, float &resultValue) const
 
virtual void ClearAllJointTransformSamples ()=0
 
virtual void ClearAllMorphSamples ()=0
 
virtual void ClearAllFloatSamples ()=0
 
virtual void ClearJointPositionSamples (size_t jointDataIndex)=0
 
virtual void ClearJointRotationSamples (size_t jointDataIndex)=0
 
virtual void ClearJointTransformSamples (size_t jointDataIndex)=0
 
virtual void ClearMorphSamples (size_t morphDataIndex)=0
 
virtual void ClearFloatSamples (size_t floatDataIndex)=0
 
virtual bool IsJointPositionAnimated (size_t jointDataIndex) const =0
 
virtual bool IsJointRotationAnimated (size_t jointDataIndex) const =0
 
virtual bool IsJointAnimated (size_t jointDataIndex) const =0
 
virtual bool IsMorphAnimated (size_t morphDataIndex) const =0
 
virtual bool IsFloatAnimated (size_t floatDataIndex) const =0
 
virtual void UpdateDuration ()
 
virtual bool VerifyIntegrity () const
 
void Resize (size_t numJoints, size_t numMorphs, size_t numFloats)
 
void Clear ()
 
size_t AddJoint (const AZStd::string &name, const Transform &poseTransform, const Transform &bindPoseTransform)
 
size_t AddMorph (const AZStd::string &name, float poseValue)
 
size_t AddFloat (const AZStd::string &name, float poseValue)
 
void RemoveJoint (size_t jointDataIndex)
 
void RemoveMorph (size_t morphDataIndex)
 
void RemoveFloat (size_t floatDataIndex)
 
void Scale (float scaleFactor)
 
float GetDuration () const
 
float GetSampleRate () const
 
void SetDuration (float duration)
 
virtual void SetSampleRate (float sampleRate)
 
AZ::Outcome< size_t > FindJointIndexByNameId (size_t nameId) const
 
AZ::Outcome< size_t > FindMorphIndexByNameId (AZ::u32 nameId) const
 
AZ::Outcome< size_t > FindFloatIndexByNameId (AZ::u32 nameId) const
 
size_t GetNumJoints () const
 
size_t GetNumMorphs () const
 
size_t GetNumFloats () const
 
const AZStd::string & GetJointName (size_t jointDataIndex) const
 
const AZStd::string & GetMorphName (size_t morphDataIndex) const
 
const AZStd::string & GetFloatName (size_t floatDataIndex) const
 
AZ::Vector3 GetJointStaticPosition (size_t jointDataIndex) const
 
AZ::Quaternion GetJointStaticRotation (size_t jointDataIndex) const
 
Transform GetJointStaticTransform (size_t jointDataIndex) const
 
AZ::Vector3 GetJointBindPosePosition (size_t jointDataIndex) const
 
AZ::Quaternion GetJointBindPoseRotation (size_t jointDataIndex) const
 
Transform GetJointBindPoseTransform (size_t jointDataIndex) const
 
float GetMorphStaticValue (size_t morphDataIndex) const
 
float GetFloatStaticValue (size_t floatDataIndex) const
 
AZ::u32 GetJointNameId (size_t jointDataIndex) const
 
AZ::u32 GetMorphNameId (size_t morphDataIndex) const
 
AZ::u32 GetFloatNameId (size_t floatDataIndex) const
 
AZ::Outcome< size_t > FindJointIndexByName (const AZStd::string &name) const
 
AZ::Outcome< size_t > FindMorphIndexByName (const AZStd::string &name) const
 
AZ::Outcome< size_t > FindFloatIndexByName (const AZStd::string &name) const
 
void SetJointName (size_t jointDataIndex, const AZStd::string &name)
 
void SetMorphName (size_t morphDataIndex, const AZStd::string &name)
 
void SetFloatName (size_t floatDataIndex, const AZStd::string &name)
 
void SetJointNameId (size_t jointDataIndex, AZ::u32 id)
 
void SetMorphNameId (size_t morphDataIndex, AZ::u32 id)
 
void SetFloatNameId (size_t floatDataIndex, AZ::u32 id)
 
void SetJointStaticTransform (size_t jointDataIndex, const Transform &transform)
 
void SetJointStaticPosition (size_t jointDataIndex, const AZ::Vector3 &position)
 
void SetJointStaticRotation (size_t jointDataIndex, const AZ::Quaternion &rotation)
 
void SetJointBindPoseTransform (size_t jointDataIndex, const Transform &transform)
 
void SetJointBindPosePosition (size_t jointDataIndex, const AZ::Vector3 &position)
 
void SetJointBindPoseRotation (size_t jointDataIndex, const AZ::Quaternion &rotation)
 
void SetMorphStaticValue (size_t morphDataIndex, float poseValue)
 
void SetFloatStaticValue (size_t floatDataIndex, float poseValue)
 
const MotionLinkDataFindMotionLinkData (const Actor *actor) const
 
size_t GetNumMotionLinkCacheEntries () const
 
void BasicRetarget (const ActorInstance *actorInstance, const MotionLinkData *motionLinkData, size_t jointIndex, Transform &inOutTransform) const
 
bool IsAdditive () const
 
void SetAdditive (bool isAdditive)
 
virtual AZ::Vector3 SampleJointScale (float sampleTime, size_t jointDataIndex) const =0
 
bool SampleJointScale (float sampleTime, AZ::u32 jointNameId, AZ::Vector3 &resultValue) const
 
virtual void ClearJointScaleSamples (size_t jointDataIndex)=0
 
virtual bool IsJointScaleAnimated (size_t jointDataIndex) const =0
 
AZ::Vector3 GetJointStaticScale (size_t jointDataIndex) const
 
AZ::Vector3 GetJointBindPoseScale (size_t jointDataIndex) const
 
void SetJointStaticScale (size_t jointDataIndex, const AZ::Vector3 &scale)
 
void SetJointBindPoseScale (size_t jointDataIndex, const AZ::Vector3 &scale)
 
virtual void ExtractRootMotion (size_t sampleJointDataIndex, size_t rootJointDataIndex, const RootMotionExtractionData &data)
 

Additional Inherited Members

- Static Public Member Functions inherited from EMotionFX::MotionData
static void CalculateSampleInformation (float duration, float &inOutSampleRate, size_t &numSamples, float &sampleSpacing)
 
static size_t CalculateNumRequiredSamples (float duration, float sampleSpacing)
 
static void CalculateInterpolationIndicesNonUniform (const AZStd::vector< float > &timeValues, float sampleTime, size_t &indexA, size_t &indexB, float &t)
 
static void CalculateInterpolationIndicesUniform (float sampleTime, float sampleSpacing, float duration, size_t numSamples, size_t &indexA, size_t &indexB, float &t)
 
static AZStd::string ReadStringFromStream (MCore::Stream *stream, MCore::Endian::EEndianType sourceEndianType)
 
- Protected Member Functions inherited from EMotionFX::MotionData
virtual void ResizeSampleData (size_t numJoints, size_t numMorphs, size_t numFloats)=0
 
virtual void AddJointSampleData (size_t jointDataIndex)=0
 
virtual void AddMorphSampleData (size_t morphDataIndex)=0
 
virtual void AddFloatSampleData (size_t floatDataIndex)=0
 
virtual void RemoveJointSampleData (size_t jointDataIndex)=0
 
virtual void RemoveMorphSampleData (size_t morphDataIndex)=0
 
virtual void RemoveFloatSampleData (size_t floatDataIndex)=0
 
virtual void ClearAllData ()=0
 
virtual void ScaleData (float scaleFactor)=0
 
virtual AZStd::unique_ptr< const MotionLinkDataCreateMotionLinkData (const Actor *actor) const
 
void CopyBaseMotionData (const MotionData *motionData)
 
- Static Protected Member Functions inherited from EMotionFX::MotionData
static AZ::Outcome< size_t > FindFloatDataIndexById (const AZStd::vector< StaticFloatData > &data, AZ::u32 id)
 
- Protected Attributes inherited from EMotionFX::MotionData
AZStd::vector< StaticJointDatam_staticJointData
 
AZStd::vector< StaticFloatDatam_staticMorphData
 
AZStd::vector< StaticFloatDatam_staticFloatData
 
float m_duration = 0.0f
 
float m_sampleRate = 30.0f
 
bool m_additive = false
 
bool m_rootMotionExtracted = false
 

Member Function Documentation

◆ CalcStreamSaveSizeInBytes()

size_t EMotionFX::NonUniformMotionData::CalcStreamSaveSizeInBytes ( const SaveSettings saveSettings) const
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearAllFloatSamples()

void EMotionFX::NonUniformMotionData::ClearAllFloatSamples ( )
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearAllJointTransformSamples()

void EMotionFX::NonUniformMotionData::ClearAllJointTransformSamples ( )
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearAllMorphSamples()

void EMotionFX::NonUniformMotionData::ClearAllMorphSamples ( )
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearFloatSamples()

void EMotionFX::NonUniformMotionData::ClearFloatSamples ( size_t  floatDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearJointPositionSamples()

void EMotionFX::NonUniformMotionData::ClearJointPositionSamples ( size_t  jointDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearJointRotationSamples()

void EMotionFX::NonUniformMotionData::ClearJointRotationSamples ( size_t  jointDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearJointScaleSamples()

void EMotionFX::NonUniformMotionData::ClearJointScaleSamples ( size_t  jointDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearJointTransformSamples()

void EMotionFX::NonUniformMotionData::ClearJointTransformSamples ( size_t  jointDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ClearMorphSamples()

void EMotionFX::NonUniformMotionData::ClearMorphSamples ( size_t  morphDataIndex)
overridevirtual

Implements EMotionFX::MotionData.

◆ ExtractRootMotion()

void EMotionFX::NonUniformMotionData::ExtractRootMotion ( size_t  sampleJointDataIndex,
size_t  rootJointDataIndex,
const RootMotionExtractionData data 
)
overridevirtual

Reimplemented from EMotionFX::MotionData.

◆ FixMissingEndKeyframes()

void EMotionFX::NonUniformMotionData::FixMissingEndKeyframes ( )

Animation tracks in the DCC tool formats are often stored individually, each having its own duration. For the motion data, it is required to have tracks with the same duration and e.g. a position track has to match the duration of a morph track. This will be automatically fixed by adding missing keyframes at the end of the tracks to match the animation's global duration. The value of these are the same as the last one of the given track so that they freeze at that value.

◆ GetSceneSettingsName()

const char * EMotionFX::NonUniformMotionData::GetSceneSettingsName ( ) const
overridevirtual

Implements EMotionFX::MotionData.

◆ GetStreamSaveVersion()

AZ::u32 EMotionFX::NonUniformMotionData::GetStreamSaveVersion ( ) const
overridevirtual

Implements EMotionFX::MotionData.

◆ InitFromNonUniformData()

void EMotionFX::NonUniformMotionData::InitFromNonUniformData ( const NonUniformMotionData motionData,
bool  keepSameSampleRate = true,
float  newSampleRate = 30.0f,
bool  updateDuration = false 
)
overridevirtual

Implements EMotionFX::MotionData.

◆ IsFloatAnimated()

bool EMotionFX::NonUniformMotionData::IsFloatAnimated ( size_t  floatDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ IsJointAnimated()

bool EMotionFX::NonUniformMotionData::IsJointAnimated ( size_t  jointDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ IsJointPositionAnimated()

bool EMotionFX::NonUniformMotionData::IsJointPositionAnimated ( size_t  jointDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ IsJointRotationAnimated()

bool EMotionFX::NonUniformMotionData::IsJointRotationAnimated ( size_t  jointDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ IsJointScaleAnimated()

bool EMotionFX::NonUniformMotionData::IsJointScaleAnimated ( size_t  jointDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ IsMorphAnimated()

bool EMotionFX::NonUniformMotionData::IsMorphAnimated ( size_t  morphDataIndex) const
overridevirtual

Implements EMotionFX::MotionData.

◆ Optimize()

void EMotionFX::NonUniformMotionData::Optimize ( const OptimizeSettings settings)
overridevirtual

Reimplemented from EMotionFX::MotionData.

◆ Read()

bool EMotionFX::NonUniformMotionData::Read ( MCore::Stream stream,
const ReadSettings readSettings 
)
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleFloat()

float EMotionFX::NonUniformMotionData::SampleFloat ( float  sampleTime,
size_t  floatDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleJointPosition()

AZ::Vector3 EMotionFX::NonUniformMotionData::SampleJointPosition ( float  sampleTime,
size_t  jointDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleJointRotation()

AZ::Quaternion EMotionFX::NonUniformMotionData::SampleJointRotation ( float  sampleTime,
size_t  jointDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleJointScale()

AZ::Vector3 EMotionFX::NonUniformMotionData::SampleJointScale ( float  sampleTime,
size_t  jointDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleJointTransform() [1/2]

Transform EMotionFX::NonUniformMotionData::SampleJointTransform ( const MotionDataSampleSettings settings,
size_t  jointSkeletonIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleJointTransform() [2/2]

Transform EMotionFX::NonUniformMotionData::SampleJointTransform ( float  sampleTime,
size_t  jointDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SampleMorph()

float EMotionFX::NonUniformMotionData::SampleMorph ( float  sampleTime,
size_t  morphDataIndex 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ SamplePose()

void EMotionFX::NonUniformMotionData::SamplePose ( const MotionDataSampleSettings settings,
Pose outputPose 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ Save()

bool EMotionFX::NonUniformMotionData::Save ( MCore::Stream stream,
const SaveSettings saveSettings 
) const
overridevirtual

Implements EMotionFX::MotionData.

◆ ScaleData()

void EMotionFX::NonUniformMotionData::ScaleData ( float  scaleFactor)
overridevirtual

Implements EMotionFX::MotionData.

◆ UpdateDuration()

void EMotionFX::NonUniformMotionData::UpdateDuration ( )
overridevirtual

Reimplemented from EMotionFX::MotionData.

◆ VerifyIntegrity()

bool EMotionFX::NonUniformMotionData::VerifyIntegrity ( ) const
overridevirtual

Reimplemented from EMotionFX::MotionData.


The documentation for this class was generated from the following file: