forked from bartvdbraak/blender
etch-a-ton
Use head not tail normal for bone orientation. Simplify roll to normal a bit.
This commit is contained in:
parent
14e3b041ba
commit
486985762a
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user