|
Atoms Crowd
4.1.0
|
10 #include <Atoms/Globals.h>
11 #include <AtomsCore/AtomsMath.h>
12 #include <AtomsCore/Metadata/MetadataFactory.h>
13 #include <AtomsCore/Metadata/TypedArrayMetadata.h>
14 #include <AtomsCore/Metadata/ArrayMetadata.h>
15 #include <AtomsCore/Metadata/MapMetadata.h>
16 #include <AtomsCore/Metadata/Vector2ArrayMetadata.h>
17 #include <AtomsCore/Metadata/Vector3ArrayMetadata.h>
18 #include <AtomsCore/Skeleton.h>
22 #define DOUBLE_FOOT_DOWN_TRESHOLD 0.95
55 inline const std::string& name()
const;
62 inline void setName(
const std::string& name);
74 inline void setTranslation(
const AtomsCore::Vector3 &translation,
const unsigned int frame);
109 inline unsigned int getArrayMetadataType(
const std::string &name)
const;
111 template <
class T>
inline void setArrayMetadataValue(
const std::string &name,
const unsigned int frame, T value);
113 inline AtomsPtr<AtomsCore::Metadata> getArrayMetadataAtFrame(
const std::string &name,
const unsigned int frame)
const;
115 template <
class T>
inline T getArrayMetadataValueAtFrame(
const std::string &name,
const unsigned int frame)
const;
117 AtomsPtr<AtomsCore::Metadata> getBlendedArrayMetadata(
const std::string &name,
const unsigned int initialFrame,
const unsigned int finalFrame,
const double weight)
const;
119 bool getBlendedArrayMetadataInPlace(
const std::string& name,
const unsigned int initialFrame,
const unsigned int finalFrame,
const double weight, AtomsPtr<AtomsCore::Metadata>& OutMeta)
const;
121 template <
class T> T& getBlendedArrayMetadataValue(
const std::string &name,
const unsigned int initialFrame,
const unsigned int finalFrame,
const double weight)
const;
123 AtomsPtr<AtomsCore::Metadata> getDoubleBlendedArrayMetadata(
const std::string &name,
const unsigned int initialFrame1,
const unsigned int finalFrame1,
const double weight1,
const unsigned int initialFrame2,
const unsigned int finalFrame2,
const double weight2,
const double finalWeight)
const;
124 bool getDoubleBlendedArrayMetadataInPlace(
const std::string& name,
const unsigned int initialFrame1,
const unsigned int finalFrame1,
const double weight1,
const unsigned int initialFrame2,
const unsigned int finalFrame2,
const double weight2,
const double finalWeight, AtomsPtr<AtomsCore::Metadata>& OutMeta)
const;
126 inline std::vector<std::string> getArrayMetadataNames()
const;
128 template<
class T>
inline void addArrayMetadata(
const std::string &name,
const bool force =
false);
130 template<
class T>
inline void getArrayMetadataValues(
const std::string& name, std::vector<T> &values);
132 inline void addArrayMetadata(
const std::string &name, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>& data);
134 inline bool hasArrayMetadata(
const std::string &name)
const;
136 inline void deleteArrayMetadata(
const std::string& name);
138 inline std::vector<std::string> getStaticMetadataNames()
const;
142 inline AtomsPtr<AtomsCore::Metadata> getStaticMetadata(
const std::string &name);
144 inline AtomsPtr<const AtomsCore::Metadata> getStaticMetadata(
const std::string &name)
const;
150 inline std::map<std::string, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>>& metadata();
152 inline const std::map<std::string, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>>& metadata()
const;
158 void computeIsAnimated();
161 inline bool isTransformAnimated()
const;
164 inline const std::vector<std::string>& animatedMetadata()
const;
167 void addAnimatedMetadata(
const std::string& metadataName);
169 void copyFrame(
unsigned int from,
unsigned int to);
173 static bool getBindPoseData(
183 static bool getBindPoseData(
196 std::vector<AtomsCore::Vector3> m_translation;
198 std::vector<AtomsCore::Quaternion> m_rotation;
200 std::vector<AtomsCore::Vector3> m_scale;
202 std::map<std::string, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>> m_metadata;
204 std::vector<std::string> m_animatedMetadata;
210 unsigned int m_numberOfFrames;
212 bool m_isTransformAnimated;
245 enum MirrorSideJointsSearch
254 AnimationClip(
const unsigned int numberOfJoints,
const unsigned int numberOfFrames,
const double fps);
260 inline int numJoints()
const;
263 inline int numFrames()
const;
269 inline double fps()
const;
272 inline void setFps(
double value);
275 inline unsigned int mapTimeToFrame(
const double time,
double &reminder)
const;
278 inline void setJointName(
const unsigned int index,
const std::string &jointName);
281 inline int jointId(
const std::string& jointName)
const;
287 inline const JointClipData& operator[](
unsigned short index)
const;
311 inline void setDirectionType(
unsigned int directionType);
314 inline unsigned int directionType()
const;
317 inline void setDirectionFromJoints(
unsigned int fromJoint,
unsigned int toJoint);
320 inline const std::pair<unsigned int, unsigned int>& directionFromJoints()
const;
323 inline void disableFootLock(
bool value);
326 inline bool isFootLockDisabled()
const;
329 inline const std::vector<int>& transitionFrames()
const;
341 void setGlobalIKData(
const std::string& jointName,
const AtomsCore::Vector2ArrayMetadata& data);
350 void setFootDownData(
const std::string& jointName,
const AtomsCore::Vector2ArrayMetadata& data);
353 void addJointMetadata(
const std::string& metadataName,
const std::string& jointName,
const int metadataType,
const AtomsCore::Vector2ArrayMetadata& data);
362 inline unsigned int additiveMode()
const;
365 inline const std::string & additiveReferenceClip()
const;
392 const unsigned int animMirrorPlane,
393 const unsigned int bindMirrorPlane,
394 const unsigned int searchMode,
395 const std::string &left,
396 const std::string &right,
397 const bool rawMirror =
false);
420 int clampedFrame,
double weight,
432 std::vector<JointClipData> m_joints;
438 std::vector<int> m_transitionFrames;
441 std::map<std::string, unsigned int> m_jointIndex;
450 unsigned int m_numberOfFrames;
456 std::pair<unsigned int, unsigned int> m_directionFromJoints;
459 unsigned int m_directionType;
462 bool m_isFootLockDisabled;
465 std::string m_compatibleAgentType;
468 unsigned int m_additiveMode;
471 std::string m_additiveReferenceClip;
474 bool m_frameRootRotationCached;
479 #include "AnimationClip.impl.h"
void addJointMetadata(const std::string &metadataName, const std::string &jointName, const int metadataType, const AtomsCore::Vector2ArrayMetadata &data)
Add a joint metadata.
void setFootDownData(const std::string &jointName, const AtomsCore::Vector2ArrayMetadata &data)
Set foot data for a specific joint.
void getBlendedScaleInPlace(AtomsCore::Vector3 &out, const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended scale between two frames.
void setNumFrames(const unsigned int numberOfFrames)
Sets the number of frames.
AtomsMath::Quaternion Quaternion
Quaternion class.
Definition: AtomsMath.h:67
~JointClipData()
Destructr.
AtomsCore::Matrix clipJointWorldMatrix(const AtomsCore::Skeleton &skeleton, int clampedFrame, double weight, AtomsCore::JointCPtr pelvisJoint) const
Get a world matrix form the clip.
void setTransitionFrames(const std::vector< int > &frames)
Get the transition frames.
void setNumberOfFrames(const int value)
set number of frames
void setCompatibleAgentType(const std::string &agentType)
Set compatible agent type name.
unsigned int getNumberOfFrames()
get number of frames
Definition: AnimationClip.h:68
void reverse()
Reverse clip.
void computePelvisAndFeetHeight(double height)
COmpute the the pelvis and feet height.
void setAdditiveMode(const unsigned int additiveMode)
Set the additive mode.
AnimationClip()
Constructor.
AtomsMath::Matrix Matrix
Matrix class.
Definition: AtomsMath.h:63
AtomsMath::Vector3 Vector3
Vector3 class.
Definition: AtomsMath.h:57
void getBlendedTranslationInPlace(AtomsCore::Vector3 &out, const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended translation between two frames.
void setGlobalIKData(const std::string &jointName, const AtomsCore::Vector2ArrayMetadata &data)
Set global ik data for a specific joint.
AtomsPtr< const AnimationClip > AnimationClipCPtr
animation clip const pointer
Definition: AnimationClip.h:31
Joint class.
Definition: Joint.h:30
double computeAverageAngularVelocity() const
Get the mean angular velocity of this clip.
Atoms namespace.
Definition: Agent.h:28
AtomsCore::Quaternion getBlendedRotation(const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended rotation between two frames.
void setSittingData(const AtomsCore::Vector2ArrayMetadata &data)
Set perching data on the joint root.
AtomsCore::Vector3 getBlendedTranslation(const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended translation between two frames.
AtomsCore::Vector3 getBlendedScale(const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended scale between two frames.
void computeMirror(const unsigned int animMirrorPlane, const unsigned int bindMirrorPlane, const unsigned int searchMode, const std::string &left, const std::string &right, const bool rawMirror=false)
Compute the mirror of the clip in the given mirror plane.
void computeAnimatedJoints()
Compute the animated joints.
JointClipData(const unsigned int numberOfFrames)
Cosntructor.
Joint Clip data.
Definition: AnimationClip.h:37
Animation clip.
Definition: AnimationClip.h:218
Skeleton class.
Definition: Skeleton.h:68
void conformFootDownDataForLocomotion()
Conforms the foot down data for locomotion.
void sanitizeJointNames()
Sanitize joint names.
void cacheFrameRootRotation(const std::string &agentType)
Cache frame root rotation.
void getBlendedRotationInPlace(AtomsCore::Quaternion &out, const unsigned int initialFrame, const unsigned int finalFrame, const double weight) const
Gets blended rotation between two frames.
~AnimationClip()
Destructor.
Definition: AnimationClip.h:257
const std::string & getCompatibleAgentType() const
Get compatible agent type name.
void computeClipDirections(const std::string &agentType, std::vector< AtomsCore::Vector3 > &directions) const
Compute and returns the clip directions.
void setPerchingData(const AtomsCore::Vector2ArrayMetadata &data)
Set perching data on the joint root.
AtomsPtr< AnimationClip > AnimationClipPtr
animation clip pointer
Definition: AnimationClip.h:27
void setAdditiveReferenceClip(const std::string &clipName)
Set additive reference clip.
double computeAverageVelocity() const
Get the mean velocity of this clip.