etch-a-ton

Use head not tail normal for bone orientation.
Simplify roll to normal a bit.
This commit is contained in:
Martin Poirier 2009-04-07 20:05:32 +00:00
parent 14e3b041ba
commit 486985762a
2 changed files with 20 additions and 5 deletions

@ -51,14 +51,14 @@ void setBoneRollFromNormal(EditBone *bone, float *no, float invmat[][4], float t
{
if (no != NULL && !VecIsNull(no))
{
float tangent[3], cotangent[3], normal[3];
float tangent[3], vec[3], normal[3];
VECCOPY(normal, no);
Mat3MulVecfl(tmat, normal);
VecSubf(tangent, bone->tail, bone->head);
Crossf(cotangent, tangent, normal);
Crossf(normal, cotangent, tangent);
Projf(vec, tangent, normal);
VecSubf(normal, normal, vec);
Normalize(normal);

@ -1012,6 +1012,21 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
glEnd();
#if 0
glColor3f(0, 0, 1);
glBegin(GL_LINES);
for (i = 0; i < stk->nb_points; i++)
{
float *p = stk->points[i].p;
float *no = stk->points[i].no;
glVertex3fv(p);
glVertex3f(p[0] + no[0], p[1] + no[1], p[2] + no[2]);
}
glEnd();
#endif
glColor3f(0, 0, 0);
glBegin(GL_POINTS);
@ -1961,7 +1976,7 @@ void sk_convertStroke(SK_Stroke *stk)
Mat4MulVecfl(invmat, bone->head);
Mat4MulVecfl(invmat, bone->tail);
setBoneRollFromNormal(bone, pt->no, invmat, tmat);
setBoneRollFromNormal(bone, head->no, invmat, tmat);
}
new_parent = bone;