forked from bartvdbraak/blender
use bli math functions for vgroup_fix operator.
This commit is contained in:
parent
7aa14fdbb9
commit
dc09774fb6
@ -955,10 +955,8 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in
|
|||||||
wasChange = FALSE;
|
wasChange = FALSE;
|
||||||
dm = dm_deform_recalc(scene, ob);
|
dm = dm_deform_recalc(scene, ob);
|
||||||
dm->getVert(dm, index, &m);
|
dm->getVert(dm, index, &m);
|
||||||
oldPos[0] = m.co[0];
|
copy_v3_v3(oldPos, m.co);
|
||||||
oldPos[1] = m.co[1];
|
distToStart = dot_v3v3(norm, oldPos) + d;
|
||||||
oldPos[2] = m.co[2];
|
|
||||||
distToStart = norm[0]*oldPos[0] + norm[1]*oldPos[1] + norm[2]*oldPos[2] + d;
|
|
||||||
|
|
||||||
if(distToBe == originalDistToBe) {
|
if(distToBe == originalDistToBe) {
|
||||||
distToBe += distToStart - distToStart*strength;
|
distToBe += distToStart - distToStart*strength;
|
||||||
@ -1123,18 +1121,14 @@ static void vgroup_fix(Scene *scene, Object *ob, float distToBe, float strength,
|
|||||||
|
|
||||||
if(count >= 3) {
|
if(count >= 3) {
|
||||||
float d /*, dist */ /* UNUSED */, mag;
|
float d /*, dist */ /* UNUSED */, mag;
|
||||||
float coord[3] = {0};
|
float coord[3];
|
||||||
float norm[3] = {0};
|
float norm[3];
|
||||||
getSingleCoordinate(p, count, coord);
|
getSingleCoordinate(p, count, coord);
|
||||||
dm->getVert(dm, i, &m);
|
dm->getVert(dm, i, &m);
|
||||||
norm[0] = m.co[0]-coord[0];
|
sub_v3_v3v3(norm, m.co, coord);
|
||||||
norm[1] = m.co[1]-coord[1];
|
mag= normalize_v3(norm);
|
||||||
norm[2] = m.co[2]-coord[2];
|
if(mag) { /* zeros fix */
|
||||||
mag = sqrt(norm[0]*norm[0] + norm[1]*norm[1] + norm[2]*norm[2]);
|
d = -dot_v3v3(norm, coord);
|
||||||
if(mag) {// zeros fix
|
|
||||||
mul_v3_fl(norm, 1.0f/mag);
|
|
||||||
|
|
||||||
d = -norm[0]*coord[0] -norm[1]*coord[1] -norm[2]*coord[2];
|
|
||||||
/* dist = (norm[0]*m.co[0] + norm[1]*m.co[1] + norm[2]*m.co[2] + d); */ /* UNUSED */
|
/* dist = (norm[0]*m.co[0] + norm[1]*m.co[1] + norm[2]*m.co[2] + d); */ /* UNUSED */
|
||||||
moveCloserToDistanceFromPlane(scene, ob, me, i, norm, coord, d, distToBe, strength, cp);
|
moveCloserToDistanceFromPlane(scene, ob, me, i, norm, coord, d, distToBe, strength, cp);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user