10 #include <AtomsGraph/Ports.h>
12 #include <Atoms/Globals.h>
13 #include <Atoms/Graph/Operator.h>
14 #include <Atoms/AnimationClipLooper.h>
15 #include <AtomsCore/Metadata/Vector3Metadata.h>
16 #include <AtomsCore/JointChain.h>
17 #include <Atoms/AgentType.h>
42 void setupDefaultPose();
62 double retargetingFactor,
74 const std::vector<AtomsCore::Vector3>& allPositions,
79 double threshold = 0.9999);
90 void refreshTargetMatrix(
93 unsigned short jointId);
102 std::map<unsigned short, AtomsCore::MapMetadata> &sMetadata,
103 const double agentScale);
105 inline void useLocomotion(
bool value) { m_isLocomotion = value; }
107 void setTimeAndPreviousTime(
double time,
double prevTime);
113 std::map<unsigned short, AtomsCore::MapMetadata>& sMetadata
116 AtomsMath::Vector3 computeIkBlendRelativeTarget(
119 const double agentScale,
120 const AtomsMath::Vector3& agentPlaneNormal
123 AtomsMath::Vector3 computeIkBlendRelativeTarget(
128 const AtomsMath::Vector3& agentPlaneNormal,
132 const double agentScale
135 AtomsMath::Vector3 computeTargetPos(
136 std::map<unsigned short, AtomsCore::MapMetadata>& sMetadata,
141 const AtomsMath::Vector3& agentPlaneNormal,
145 const double agentScale);
147 void computeThreeJointChain(
152 const AtomsMath::Vector3& targetPos,
156 const double agentScale,
157 const std::pair<AtomsMath::Vector3, AtomsMath::Vector3>& localPoleVector);
159 void computeFARBIKChain(
164 const AtomsMath::Vector3& targetPos,
171 int clampedFrame,
double weight,
198 unsigned int m_currentLoop;
200 std::vector<int> m_skeletonClipJointId;
202 std::vector<BindData> m_bindData;
204 std::string frameRateOverrideName;
208 double m_retargetingFactor;
217 std::map<std::string, AtomsCore::Vector3> m_poleVectorInBindMap;
220 std::vector<AtomsCore::Matrix> m_sAllMatrix;
221 std::vector<AtomsCore::Matrix> m_tAllMatrix;
222 std::vector<AtomsCore::Vector3> m_sAllPositions;
223 std::vector<AtomsCore::Vector3> m_tAllPositions;
224 std::vector<bool> m_tAllMatrixDirty;
225 std::vector<std::pair<AtomsMath::Vector3, AtomsMath::Vector3>> m_localPoleVectors;
230 double m_agentTypeScaleMultiplier;
236 bool m_isParentSpace;