[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29429] trunk/blender/source/blender: use utility functions for vertex groups, no functional changes
Campbell Barton
ideasman42 at gmail.com
Sun Jun 13 02:11:42 CEST 2010
Revision: 29429
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29429
Author: campbellbarton
Date: 2010-06-13 02:11:42 +0200 (Sun, 13 Jun 2010)
Log Message:
-----------
use utility functions for vertex groups, no functional changes
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/lattice.c
trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
trunk/blender/source/blender/modifiers/intern/MOD_hook.c
Modified: trunk/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/lattice.c 2010-06-12 23:09:01 UTC (rev 29428)
+++ trunk/blender/source/blender/blenkernel/intern/lattice.c 2010-06-13 00:11:42 UTC (rev 29429)
@@ -845,26 +845,20 @@
use_vgroups = 0;
if(vgroup && vgroup[0] && use_vgroups) {
- bDeformGroup *curdef;
Mesh *me = target->data;
- int index = 0;
-
- /* find the group (weak loop-in-loop) */
- for(curdef = target->defbase.first; curdef;
- curdef = curdef->next, index++)
- if(!strcmp(curdef->name, vgroup)) break;
+ int index = defgroup_name_index(target, vgroup);
+ float weight;
- if(curdef && (me->dvert || dm)) {
+ if(index >= 0 && (me->dvert || dm)) {
MDeformVert *dvert = me->dvert;
- int j;
for(a = 0; a < numVerts; a++, dvert++) {
if(dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
- for(j = 0; j < dvert->totweight; j++) {
- if (dvert->dw[j].def_nr == index) {
- calc_latt_deform(laOb, vertexCos[a], dvert->dw[j].weight);
- }
- }
+
+ weight= defvert_find_weight(dvert, index);
+
+ if(weight > 0.0f)
+ calc_latt_deform(laOb, vertexCos[a], weight);
}
}
} else {
Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c 2010-06-12 23:09:01 UTC (rev 29428)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c 2010-06-13 00:11:42 UTC (rev 29429)
@@ -864,6 +864,7 @@
Mesh *me= get_mesh(ob);
int index;
short mval[2] = {0, 0}, sco[2];
+ int vgroup= ob->actdef-1;
if (!me) return;
@@ -938,7 +939,6 @@
}
else {
DerivedMesh *dm;
- MDeformWeight *dw;
float w1, w2, w3, w4, co[3], fac;
dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
@@ -968,21 +968,17 @@
fac= MIN4(w1, w2, w3, w4);
if(w1==fac) {
- dw= defvert_find_index(me->dvert+mface->v1, ob->actdef-1);
- if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
+ ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v1, vgroup);
}
else if(w2==fac) {
- dw= defvert_find_index(me->dvert+mface->v2, ob->actdef-1);
- if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
+ ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v2, vgroup);
}
else if(w3==fac) {
- dw= defvert_find_index(me->dvert+mface->v3, ob->actdef-1);
- if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
+ ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v3, vgroup);
}
else if(w4==fac) {
if(mface->v4) {
- dw= defvert_find_index(me->dvert+mface->v4, ob->actdef-1);
- if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
+ ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v4, vgroup);
}
}
}
Modified: trunk/blender/source/blender/modifiers/intern/MOD_hook.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2010-06-12 23:09:01 UTC (rev 29428)
+++ trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2010-06-13 00:11:42 UTC (rev 29429)
@@ -214,25 +214,26 @@
if(defgrp_index >= 0 && use_dverts) {
MDeformVert *dvert = me->dvert;
- int i, j;
+ int i;
+ float fac;
for(i = 0; i < maxVerts; i++, dvert++) {
if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
- for(j = 0; j < dvert->totweight; j++) {
- if(dvert->dw[j].def_nr == defgrp_index) {
- float fac = hmd->force*dvert->dw[j].weight;
- float *co = vertexCos[i];
- if(hmd->falloff != 0.0) {
- float len = len_v3v3(co, hmd->cent);
- if(len > hmd->falloff) fac = 0.0;
- else if(len > 0.0)
- fac *= sqrt(1.0 - len / hmd->falloff);
- }
+ fac= defvert_find_weight(dvert, defgrp_index);
- mul_v3_m4v3(vec, mat, co);
- interp_v3_v3v3(co, co, vec, fac);
+ if(fac > 0.0f) {
+ float *co = vertexCos[i];
+
+ if(hmd->falloff != 0.0) {
+ float len = len_v3v3(co, hmd->cent);
+ if(len > hmd->falloff) fac = 0.0;
+ else if(len > 0.0)
+ fac *= sqrt(1.0 - len / hmd->falloff);
}
+
+ mul_v3_m4v3(vec, mat, co);
+ interp_v3_v3v3(co, co, vec, fac);
}
}
}
More information about the Bf-blender-cvs
mailing list