mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 10:07:58 +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) {
|
if (dt > MAX_OVERLAY_DT) {
|
||||||
dt = MAX_OVERLAY_DT;
|
dt = MAX_OVERLAY_DT;
|
||||||
}
|
}
|
||||||
|
loadPoses(underPoses);
|
||||||
|
/*
|
||||||
if (_relativePoses.size() != underPoses.size()) {
|
if (_relativePoses.size() != underPoses.size()) {
|
||||||
loadPoses(underPoses);
|
loadPoses(underPoses);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1054,7 +1055,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars
|
||||||
}
|
}
|
||||||
|
|
||||||
processOutputJoints(triggersOut);
|
processOutputJoints(triggersOut);
|
||||||
|
*/
|
||||||
return _relativePoses;
|
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) {
|
const AnimPoseVec& AnimSplineIK::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) {
|
||||||
assert(_children.size() == 1);
|
assert(_children.size() == 1);
|
||||||
if (_children.size() != 1) {
|
if (_children.size() != 1) {
|
||||||
|
@ -444,4 +450,13 @@ void AnimSplineIK::computeAndCacheSplineJointInfosForIKTarget(const AnimContext&
|
||||||
}
|
}
|
||||||
|
|
||||||
_splineJointInfoMap[target.getIndex()] = splineJointInfoVec;
|
_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 ~AnimSplineIK() override;
|
||||||
virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) 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:
|
protected:
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
void computeAbsolutePoses(AnimPoseVec& absolutePoses) const;
|
void computeAbsolutePoses(AnimPoseVec& absolutePoses) const;
|
||||||
|
void loadPoses(const AnimPoseVec& poses);
|
||||||
|
|
||||||
// for AnimDebugDraw rendering
|
// for AnimDebugDraw rendering
|
||||||
virtual const AnimPoseVec& getPosesInternal() const override;
|
virtual const AnimPoseVec& getPosesInternal() const override;
|
||||||
|
|
Loading…
Reference in a new issue