10 #include <AtomsGraph/Ports.h>
12 #include <Atoms/Globals.h>
13 #include <Atoms/Graph/Operator.h>
14 #include <Atoms/HeightFields.h>
15 #include <AtomsUtils/Mesh.h>
33 void computePelvisAndFeetHeightField(
37 const std::string& hf,
38 const std::string& gf,
43 double heightFieldOffset,
44 bool compensateStretchLeg,
45 bool useHeightFieldOnCreationOnly);
47 void computePelvisAndFeetHeightFieldInParentSpace(
51 const std::string& hf,
52 const std::string& gf,
57 double heightFieldOffset,
58 bool compensateStretchLeg,
59 bool useHeightFieldOnCreationOnly);
61 void computeSpinesHeightfields(
62 const std::string& hf,
63 const std::string& gf,
67 double heightFieldOffset,
68 bool useHeightFieldOnCreationOnly);
70 void computeSpinesHeightfieldsInParentSpace(
71 const std::string& hf,
72 const std::string& gf,
76 double heightFieldOffset,
77 bool useHeightFieldOnCreationOnly);
79 void compensateLegStretch(
87 double heightFieldOffset);
89 void compensateLegStretchInParentSpace(
97 double heightFieldOffset);
99 inline void useLocomotion(
bool value) { m_isLocomotion = value; }
133 double m_groudHeight;
140 std::vector<unsigned int> m_footFrameAfterDown;
141 std::vector<unsigned int> m_footWasDown;
142 std::vector<AtomsCore::Matrix> m_detachedJointMatrices;
144 AtomsPtr<AtomsCore::MapMetadata> m_hfAnimatedMetaMap;
151 double m_agentTypeHeight;
154 int m_animPointFaceId;
156 bool m_particleFirst;
159 bool m_hasCacheReader;
164 static const std::string maxTurnAngleKey;
165 static const std::string ikSolverKey;
166 static const std::string ikTolleranceKey;
167 static const std::string ikMaxIterationsKey;
169 static const std::string pelvisBehave3dCacheDirKey;
170 static const std::string pelvisBehave3dCacheUpKey;