void IK_SetStiffness(IK_Segment *seg, IK_SegmentAxis axis, float stiffness) { if (stiffness < 0.0f) return; if (stiffness > (1.0 - IK_STRETCH_STIFF_EPS)) stiffness = (1.0 - IK_STRETCH_STIFF_EPS); IK_QSegment *qseg = (IK_QSegment *)seg; double weight = 1.0f - stiffness; if (axis >= IK_TRANS_X) { if (!qseg->Translational()) { if (qseg->Composite() && qseg->Composite()->Translational()) qseg = qseg->Composite(); else return; } if (axis == IK_TRANS_X) axis = IK_X; else if (axis == IK_TRANS_Y) axis = IK_Y; else axis = IK_Z; } qseg->SetWeight(axis, weight); }
void IK_SetStiffness(IK_Segment *seg, IK_SegmentAxis axis, float stiffness) { if (stiffness < 0.0) return; if (stiffness > 0.999) stiffness = 0.999; IK_QSegment *qseg = (IK_QSegment*)seg; MT_Scalar weight = 1.0-stiffness; if (axis >= IK_TRANS_X) { if(!qseg->Translational()) { if(qseg->Composite() && qseg->Composite()->Translational()) qseg = qseg->Composite(); else return; } if(axis == IK_TRANS_X) axis = IK_X; else if(axis == IK_TRANS_Y) axis = IK_Y; else axis = IK_Z; } qseg->SetWeight(axis, weight); }