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]; }
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); }