Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}