mirror of
https://github.com/lubosz/overte.git
synced 2025-04-14 06:46:19 +02:00
changed the json reader to take an array not a string for the flex targets
This commit is contained in:
parent
d174fb1b5c
commit
d547d5b854
4 changed files with 36 additions and 17 deletions
|
@ -192,8 +192,8 @@
|
|||
"tipRotationVar": "headRotation",
|
||||
"alphaVar": "splineIKAlpha",
|
||||
"enabledVar": "splineIKEnabled",
|
||||
"tipTargetFlexCoefficients": "1.0, 1.0, 1.0, 1.0, 1.0",
|
||||
"midTargetFlexCoefficients": "1.0, 1.0, 1.0"
|
||||
"tipTargetFlexCoefficients": [ 1.0, 1.0, 1.0, 1.0, 1.0 ],
|
||||
"midTargetFlexCoefficients": [ 1.0, 1.0, 1.0 ]
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
|
|
|
@ -594,8 +594,28 @@ static AnimNode::Pointer loadSplineIKNode(const QJsonObject& jsonObj, const QStr
|
|||
READ_STRING(tipRotationVar, jsonObj, id, jsonUrl, nullptr);
|
||||
READ_STRING(alphaVar, jsonObj, id, jsonUrl, nullptr);
|
||||
READ_STRING(enabledVar, jsonObj, id, jsonUrl, nullptr);
|
||||
READ_STRING(tipTargetFlexCoefficients, jsonObj, id, jsonUrl, nullptr);
|
||||
READ_STRING(midTargetFlexCoefficients, jsonObj, id, jsonUrl, nullptr);
|
||||
|
||||
auto tipFlexCoefficientsValue = jsonObj.value("tipTargetFlexCoefficients");
|
||||
if (!tipFlexCoefficientsValue.isArray()) {
|
||||
qCCritical(animation) << "AnimNodeLoader, bad or missing tip flex array";
|
||||
return nullptr;
|
||||
}
|
||||
auto tipFlexCoefficientsArray = tipFlexCoefficientsValue.toArray();
|
||||
std::vector<float> tipTargetFlexCoefficients;
|
||||
for (const auto& value : tipFlexCoefficientsArray) {
|
||||
tipTargetFlexCoefficients.push_back((float)value.toDouble());
|
||||
}
|
||||
|
||||
auto midFlexCoefficientsValue = jsonObj.value("midTargetFlexCoefficients");
|
||||
if (!midFlexCoefficientsValue.isArray()) {
|
||||
qCCritical(animation) << "AnimNodeLoader, bad or missing mid flex array";
|
||||
return nullptr;
|
||||
}
|
||||
auto midFlexCoefficientsArray = midFlexCoefficientsValue.toArray();
|
||||
std::vector<float> midTargetFlexCoefficients;
|
||||
for (const auto& midValue : midFlexCoefficientsArray) {
|
||||
midTargetFlexCoefficients.push_back((float)midValue.toDouble());
|
||||
}
|
||||
|
||||
auto node = std::make_shared<AnimSplineIK>(id, alpha, enabled, interpDuration,
|
||||
baseJointName, midJointName, tipJointName,
|
||||
|
|
|
@ -29,8 +29,8 @@ AnimSplineIK::AnimSplineIK(const QString& id, float alpha, bool enabled, float i
|
|||
const QString& tipRotationVar,
|
||||
const QString& alphaVar,
|
||||
const QString& enabledVar,
|
||||
const QString& tipTargetFlexCoefficients,
|
||||
const QString& midTargetFlexCoefficients) :
|
||||
const std::vector<float> tipTargetFlexCoefficients,
|
||||
const std::vector<float> midTargetFlexCoefficients) :
|
||||
AnimNode(AnimNode::Type::SplineIK, id),
|
||||
_alpha(alpha),
|
||||
_enabled(enabled),
|
||||
|
@ -48,21 +48,20 @@ AnimSplineIK::AnimSplineIK(const QString& id, float alpha, bool enabled, float i
|
|||
_enabledVar(enabledVar)
|
||||
{
|
||||
|
||||
QStringList tipTargetFlexCoefficientsValues = tipTargetFlexCoefficients.split(',', QString::SkipEmptyParts);
|
||||
for (int i = 0; i < tipTargetFlexCoefficientsValues.size(); i++) {
|
||||
for (int i = 0; i < tipTargetFlexCoefficients.size(); i++) {
|
||||
if (i < MAX_NUMBER_FLEX_VARIABLES) {
|
||||
_tipTargetFlexCoefficients[i] = (float)tipTargetFlexCoefficientsValues[i].toDouble();
|
||||
_tipTargetFlexCoefficients[i] = tipTargetFlexCoefficients[i];
|
||||
}
|
||||
}
|
||||
_numTipTargetFlexCoefficients = std::min(tipTargetFlexCoefficientsValues.size(), MAX_NUMBER_FLEX_VARIABLES);
|
||||
|
||||
}
|
||||
_numTipTargetFlexCoefficients = std::min((int)tipTargetFlexCoefficients.size(), MAX_NUMBER_FLEX_VARIABLES);
|
||||
|
||||
QStringList midTargetFlexCoefficientsValues = midTargetFlexCoefficients.split(',', QString::SkipEmptyParts);
|
||||
for (int i = 0; i < midTargetFlexCoefficientsValues.size(); i++) {
|
||||
for (int i = 0; i < midTargetFlexCoefficients.size(); i++) {
|
||||
if (i < MAX_NUMBER_FLEX_VARIABLES) {
|
||||
_midTargetFlexCoefficients[i] = (float)midTargetFlexCoefficientsValues[i].toDouble();
|
||||
_midTargetFlexCoefficients[i] = midTargetFlexCoefficients[i];
|
||||
}
|
||||
}
|
||||
_numMidTargetFlexCoefficients = std::min(midTargetFlexCoefficientsValues.size(), MAX_NUMBER_FLEX_VARIABLES);
|
||||
_numMidTargetFlexCoefficients = std::min((int)midTargetFlexCoefficients.size(), MAX_NUMBER_FLEX_VARIABLES);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -24,8 +24,8 @@ public:
|
|||
const QString& midPositionVar, const QString& midRotationVar,
|
||||
const QString& tipPositionVar, const QString& tipRotationVar,
|
||||
const QString& alphaVar, const QString& enabledVar,
|
||||
const QString& tipTargetFlexCoefficients,
|
||||
const QString& midTargetFlexCoefficients);
|
||||
const std::vector<float> tipTargetFlexCoefficients,
|
||||
const std::vector<float> midTargetFlexCoefficients);
|
||||
|
||||
virtual ~AnimSplineIK() override;
|
||||
virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) override;
|
||||
|
|
Loading…
Reference in a new issue