コード例 #1
0
ファイル: IK_Solver.cpp プロジェクト: MakersF/BlenderDev
void IK_GetBasisChange(IK_Segment *seg, float basis_change[][3])
{
	IK_QSegment *qseg = (IK_QSegment*)seg;
	const MT_Matrix3x3& change = qseg->BasisChange();

	if (qseg->Translational() && qseg->Composite())
		qseg = qseg->Composite();

	// convert from moto row major to blender column major
	basis_change[0][0] = (float)change[0][0];
	basis_change[1][0] = (float)change[0][1];
	basis_change[2][0] = (float)change[0][2];
	basis_change[0][1] = (float)change[1][0];
	basis_change[1][1] = (float)change[1][1];
	basis_change[2][1] = (float)change[1][2];
	basis_change[0][2] = (float)change[2][0];
	basis_change[1][2] = (float)change[2][1];
	basis_change[2][2] = (float)change[2][2];
}
コード例 #2
0
void IK_GetBasisChange(IK_Segment *seg, float basis_change[][3])
{
	IK_QSegment *qseg = (IK_QSegment *)seg;

	if (qseg->Translational() && qseg->Composite())
		qseg = qseg->Composite();

	const Matrix3d& change = qseg->BasisChange();

	// convert to blender column major
	basis_change[0][0] = (float)change(0, 0);
	basis_change[1][0] = (float)change(0, 1);
	basis_change[2][0] = (float)change(0, 2);
	basis_change[0][1] = (float)change(1, 0);
	basis_change[1][1] = (float)change(1, 1);
	basis_change[2][1] = (float)change(1, 2);
	basis_change[0][2] = (float)change(2, 0);
	basis_change[1][2] = (float)change(2, 1);
	basis_change[2][2] = (float)change(2, 2);
}