mirror of
https://github.com/lubosz/overte.git
synced 2025-04-14 01:46:18 +02:00
got the spline arms and legs working without any inverse kinematic node in the json, using _withIKnode.json
This commit is contained in:
parent
8d88c627b0
commit
dbd03e2eb4
4 changed files with 2260 additions and 2 deletions
2240
interface/resources/avatar/avatar-animation_withIKNode.json
Normal file
2240
interface/resources/avatar/avatar-animation_withIKNode.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -886,7 +886,8 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars
|
|||
if (dt > MAX_OVERLAY_DT) {
|
||||
dt = MAX_OVERLAY_DT;
|
||||
}
|
||||
|
||||
loadPoses(underPoses);
|
||||
/*
|
||||
if (_relativePoses.size() != underPoses.size()) {
|
||||
loadPoses(underPoses);
|
||||
} else {
|
||||
|
@ -1054,7 +1055,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars
|
|||
}
|
||||
|
||||
processOutputJoints(triggersOut);
|
||||
|
||||
*/
|
||||
return _relativePoses;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,12 @@ AnimSplineIK::~AnimSplineIK() {
|
|||
|
||||
}
|
||||
|
||||
//virtual
|
||||
const AnimPoseVec& AnimSplineIK::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut, const AnimPoseVec& underPoses) {
|
||||
loadPoses(underPoses);
|
||||
return _poses;
|
||||
}
|
||||
|
||||
const AnimPoseVec& AnimSplineIK::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) {
|
||||
assert(_children.size() == 1);
|
||||
if (_children.size() != 1) {
|
||||
|
@ -444,4 +450,13 @@ void AnimSplineIK::computeAndCacheSplineJointInfosForIKTarget(const AnimContext&
|
|||
}
|
||||
|
||||
_splineJointInfoMap[target.getIndex()] = splineJointInfoVec;
|
||||
}
|
||||
|
||||
void AnimSplineIK ::loadPoses(const AnimPoseVec& poses) {
|
||||
assert(_skeleton && ((poses.size() == 0) || (_skeleton->getNumJoints() == (int)poses.size())));
|
||||
if (_skeleton->getNumJoints() == (int)poses.size()) {
|
||||
_poses = poses;
|
||||
} else {
|
||||
_poses.clear();
|
||||
}
|
||||
}
|
|
@ -25,6 +25,7 @@ public:
|
|||
|
||||
virtual ~AnimSplineIK() override;
|
||||
virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) override;
|
||||
virtual const AnimPoseVec& overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut, const AnimPoseVec& underPoses) override;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -36,6 +37,7 @@ protected:
|
|||
};
|
||||
|
||||
void computeAbsolutePoses(AnimPoseVec& absolutePoses) const;
|
||||
void loadPoses(const AnimPoseVec& poses);
|
||||
|
||||
// for AnimDebugDraw rendering
|
||||
virtual const AnimPoseVec& getPosesInternal() const override;
|
||||
|
|
Loading…
Reference in a new issue