Mesh Deform Modifiers

=====================

Tweak for somewhat improved results with dynamic binding, and added
a rt value (527) for debugging mdef accuracy.
This commit is contained in:
Brecht Van Lommel
2007-12-08 18:46:44 +00:00
parent 85ee6302dd
commit 15eb4ebbe4
2 changed files with 13 additions and 5 deletions

View File

@@ -6404,9 +6404,14 @@ static void meshdeformModifier_do(
for(a=0; a<totcagevert; a++) {
/* get cage vertex in world space with binding transform */
VECCOPY(co, cagemvert[a].co);
Mat4MulVecfl(mmd->bindmat, co);
/* compute different with world space bind coord */
VECSUB(dco[a], co, bindcos[a]);
if(G.rt != 527) {
Mat4MulVecfl(mmd->bindmat, co);
/* compute difference with world space bind coord */
VECSUB(dco[a], co, bindcos[a]);
}
else
VECCOPY(dco[a], co)
}
defgrp_index = -1;
@@ -6474,7 +6479,10 @@ static void meshdeformModifier_do(
if(totweight > 0.0f) {
VecMulf(co, fac/totweight);
Mat3MulVecfl(iobmat, co);
VECADD(vertexCos[b], vertexCos[b], co);
if(G.rt != 527)
VECADD(vertexCos[b], vertexCos[b], co)
else
VECCOPY(vertexCos[b], co)
}
}

View File

@@ -974,7 +974,7 @@ void rigid_deform_end(int cancel)
#define MESHDEFORM_LEN_THRESHOLD 1e-6
#define MESHDEFORM_MIN_INFLUENCE 0.005
#define MESHDEFORM_MIN_INFLUENCE 0.0005
static int MESHDEFORM_OFFSET[7][3] =
{{0,0,0}, {1,0,0}, {-1,0,0}, {0,1,0}, {0,-1,0}, {0,0,1}, {0,0,-1}};