forked from bartvdbraak/blender
code cleanup: check defgroup_name_index() return value != -1, rather then checking >= 0.
also remove unused bmesh decimator code.
This commit is contained in:
parent
612768760a
commit
23baf8c9c3
@ -947,7 +947,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_dverts || armature_def_nr >= 0) {
|
if (use_dverts || armature_def_nr != -1) {
|
||||||
if (dm)
|
if (dm)
|
||||||
dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
|
dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
|
||||||
else if (dverts && i < target_totvert)
|
else if (dverts && i < target_totvert)
|
||||||
@ -958,7 +958,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float
|
|||||||
else
|
else
|
||||||
dvert = NULL;
|
dvert = NULL;
|
||||||
|
|
||||||
if (armature_def_nr >= 0 && dvert) {
|
if (armature_def_nr != -1 && dvert) {
|
||||||
armature_weight = defvert_find_weight(dvert, armature_def_nr);
|
armature_weight = defvert_find_weight(dvert, armature_def_nr);
|
||||||
|
|
||||||
if (invert_vgroup)
|
if (invert_vgroup)
|
||||||
|
@ -431,7 +431,7 @@ int *defgroup_flip_map_single(Object *ob, int *flip_map_len, int use_default, in
|
|||||||
if (strcmp(name, dg->name)) {
|
if (strcmp(name, dg->name)) {
|
||||||
flip_num = defgroup_name_index(ob, name);
|
flip_num = defgroup_name_index(ob, name);
|
||||||
|
|
||||||
if (flip_num >= 0) {
|
if (flip_num != -1) {
|
||||||
map[defgroup] = flip_num;
|
map[defgroup] = flip_num;
|
||||||
map[flip_num] = defgroup;
|
map[flip_num] = defgroup;
|
||||||
}
|
}
|
||||||
|
@ -1762,10 +1762,10 @@ static DerivedMesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* apply weights into a vertex group, if doesnt exists add a new layer */
|
/* apply weights into a vertex group, if doesnt exists add a new layer */
|
||||||
if (defgrp_index >= 0 && !dvert && (surface->output_name[0] != '\0'))
|
if (defgrp_index != -1 && !dvert && (surface->output_name[0] != '\0'))
|
||||||
dvert = CustomData_add_layer_named(&result->vertData, CD_MDEFORMVERT, CD_CALLOC,
|
dvert = CustomData_add_layer_named(&result->vertData, CD_MDEFORMVERT, CD_CALLOC,
|
||||||
NULL, sData->total_points, surface->output_name);
|
NULL, sData->total_points, surface->output_name);
|
||||||
if (defgrp_index >= 0 && dvert) {
|
if (defgrp_index != -1 && dvert) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < sData->total_points; i++) {
|
for (i = 0; i < sData->total_points; i++) {
|
||||||
MDeformVert *dv = &dvert[i];
|
MDeformVert *dv = &dvert[i];
|
||||||
|
@ -1043,7 +1043,7 @@ static float *get_weights_array(Object *ob, char *vgroup)
|
|||||||
|
|
||||||
/* find the group (weak loop-in-loop) */
|
/* find the group (weak loop-in-loop) */
|
||||||
defgrp_index = defgroup_name_index(ob, vgroup);
|
defgrp_index = defgroup_name_index(ob, vgroup);
|
||||||
if (defgrp_index >= 0) {
|
if (defgrp_index != -1) {
|
||||||
float *weights;
|
float *weights;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -348,7 +348,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
|||||||
int ui, vi, wi, uu, vv, ww;
|
int ui, vi, wi, uu, vv, ww;
|
||||||
|
|
||||||
/* vgroup influence */
|
/* vgroup influence */
|
||||||
int defgroup_nr = -1;
|
int defgrp_index = -1;
|
||||||
float co_prev[3], weight_blend = 0.0f;
|
float co_prev[3], weight_blend = 0.0f;
|
||||||
MDeformVert *dvert = BKE_lattice_deform_verts_get(ob);
|
MDeformVert *dvert = BKE_lattice_deform_verts_get(ob);
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
|||||||
if (lt->latticedata == NULL) return;
|
if (lt->latticedata == NULL) return;
|
||||||
|
|
||||||
if (lt->vgroup[0] && dvert) {
|
if (lt->vgroup[0] && dvert) {
|
||||||
defgroup_nr = defgroup_name_index(ob, lt->vgroup);
|
defgrp_index = defgroup_name_index(ob, lt->vgroup);
|
||||||
copy_v3_v3(co_prev, co);
|
copy_v3_v3(co_prev, co);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -431,8 +431,8 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
|||||||
|
|
||||||
madd_v3_v3fl(co, <->latticedata[idx_u * 3], u);
|
madd_v3_v3fl(co, <->latticedata[idx_u * 3], u);
|
||||||
|
|
||||||
if (defgroup_nr != -1)
|
if (defgrp_index != -1)
|
||||||
weight_blend += (u * defvert_find_weight(dvert + idx_u, defgroup_nr));
|
weight_blend += (u * defvert_find_weight(dvert + idx_u, defgrp_index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -440,7 +440,7 @@ void calc_latt_deform(Object *ob, float co[3], float weight)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defgroup_nr != -1)
|
if (defgrp_index != -1)
|
||||||
interp_v3_v3v3(co, co_prev, co, weight_blend);
|
interp_v3_v3v3(co, co_prev, co, weight_blend);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -669,9 +669,9 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
|||||||
|
|
||||||
if (vgroup && vgroup[0] && use_vgroups) {
|
if (vgroup && vgroup[0] && use_vgroups) {
|
||||||
Mesh *me = target->data;
|
Mesh *me = target->data;
|
||||||
int index = defgroup_name_index(target, vgroup);
|
const int defgrp_index = defgroup_name_index(target, vgroup);
|
||||||
|
|
||||||
if (index != -1 && (me->dvert || dm)) {
|
if (defgrp_index != -1 && (me->dvert || dm)) {
|
||||||
MDeformVert *dvert = me->dvert;
|
MDeformVert *dvert = me->dvert;
|
||||||
float vec[3];
|
float vec[3];
|
||||||
float weight;
|
float weight;
|
||||||
@ -681,7 +681,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
|||||||
dvert = me->dvert;
|
dvert = me->dvert;
|
||||||
for (a = 0; a < numVerts; a++, dvert++) {
|
for (a = 0; a < numVerts; a++, dvert++) {
|
||||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||||
weight = defvert_find_weight(dvert, index);
|
weight = defvert_find_weight(dvert, defgrp_index);
|
||||||
|
|
||||||
if (weight > 0.0f) {
|
if (weight > 0.0f) {
|
||||||
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
||||||
@ -699,7 +699,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
|||||||
for (a = 0; a < numVerts; a++, dvert++) {
|
for (a = 0; a < numVerts; a++, dvert++) {
|
||||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||||
|
|
||||||
if (defvert_find_weight(dvert, index) > 0.0f) {
|
if (defvert_find_weight(dvert, defgrp_index) > 0.0f) {
|
||||||
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
mul_m4_v3(cd.curvespace, vertexCos[a]);
|
||||||
minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
|
minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]);
|
||||||
}
|
}
|
||||||
@ -709,7 +709,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target,
|
|||||||
for (a = 0; a < numVerts; a++, dvert++) {
|
for (a = 0; a < numVerts; a++, dvert++) {
|
||||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||||
|
|
||||||
weight = defvert_find_weight(dvert, index);
|
weight = defvert_find_weight(dvert, defgrp_index);
|
||||||
|
|
||||||
if (weight > 0.0f) {
|
if (weight > 0.0f) {
|
||||||
/* already in 'cd.curvespace', prev for loop */
|
/* already in 'cd.curvespace', prev for loop */
|
||||||
@ -815,16 +815,16 @@ void lattice_deform_verts(Object *laOb, Object *target, DerivedMesh *dm,
|
|||||||
|
|
||||||
if (vgroup && vgroup[0] && use_vgroups) {
|
if (vgroup && vgroup[0] && use_vgroups) {
|
||||||
Mesh *me = target->data;
|
Mesh *me = target->data;
|
||||||
int index = defgroup_name_index(target, vgroup);
|
const int defgrp_index = defgroup_name_index(target, vgroup);
|
||||||
float weight;
|
float weight;
|
||||||
|
|
||||||
if (index >= 0 && (me->dvert || dm)) {
|
if (defgrp_index >= 0 && (me->dvert || dm)) {
|
||||||
MDeformVert *dvert = me->dvert;
|
MDeformVert *dvert = me->dvert;
|
||||||
|
|
||||||
for (a = 0; a < numVerts; a++, dvert++) {
|
for (a = 0; a < numVerts; a++, dvert++) {
|
||||||
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
if (dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT);
|
||||||
|
|
||||||
weight = defvert_find_weight(dvert, index);
|
weight = defvert_find_weight(dvert, defgrp_index);
|
||||||
|
|
||||||
if (weight > 0.0f)
|
if (weight > 0.0f)
|
||||||
calc_latt_deform(laOb, vertexCos[a], weight * fac);
|
calc_latt_deform(laOb, vertexCos[a], weight * fac);
|
||||||
|
@ -1238,7 +1238,7 @@ static void emit_from_derivedmesh(Object *flow_ob, SmokeDomainSettings *sds, Smo
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* apply vertex group influence if used */
|
/* apply vertex group influence if used */
|
||||||
if (defgrp_index >= 0 && dvert) {
|
if (defgrp_index != -1 && dvert) {
|
||||||
float weight_mask = defvert_find_weight(&dvert[v1], defgrp_index) * weights[0] +
|
float weight_mask = defvert_find_weight(&dvert[v1], defgrp_index) * weights[0] +
|
||||||
defvert_find_weight(&dvert[v2], defgrp_index) * weights[1] +
|
defvert_find_weight(&dvert[v2], defgrp_index) * weights[1] +
|
||||||
defvert_find_weight(&dvert[v3], defgrp_index) * weights[2];
|
defvert_find_weight(&dvert[v3], defgrp_index) * weights[2];
|
||||||
|
@ -3194,7 +3194,7 @@ static void interpolate_exciter(Object *ob, int timescale, int time)
|
|||||||
- xxxx_to_softbody(Object *ob) : a full (new) copy, creates SB geometry
|
- xxxx_to_softbody(Object *ob) : a full (new) copy, creates SB geometry
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void get_scalar_from_vertexgroup(Object *ob, int vertID, short groupindex, float *target)
|
static void get_scalar_from_vertexgroup(Object *ob, int vertID, int groupindex, float *target)
|
||||||
/* result 0 on success, else indicates error number
|
/* result 0 on success, else indicates error number
|
||||||
-- kind of *inverse* result defintion,
|
-- kind of *inverse* result defintion,
|
||||||
-- but this way we can signal error condition to caller
|
-- but this way we can signal error condition to caller
|
||||||
@ -3297,7 +3297,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
|||||||
if ((ob->softflag & OB_SB_GOAL) && sb->vertgroup) { /* even this is a deprecated evil hack */
|
if ((ob->softflag & OB_SB_GOAL) && sb->vertgroup) { /* even this is a deprecated evil hack */
|
||||||
/* I'd like to have it .. if (sb->namedVG_Goal[0]) */
|
/* I'd like to have it .. if (sb->namedVG_Goal[0]) */
|
||||||
|
|
||||||
get_scalar_from_vertexgroup(ob, a, (short) (sb->vertgroup-1), &bp->goal);
|
get_scalar_from_vertexgroup(ob, a, sb->vertgroup - 1, &bp->goal);
|
||||||
/* do this always, regardless successful read from vertex group */
|
/* do this always, regardless successful read from vertex group */
|
||||||
/* this is where '2.5 every thing is animatable' goes wrong in the first place jow_go_for2_5 */
|
/* this is where '2.5 every thing is animatable' goes wrong in the first place jow_go_for2_5 */
|
||||||
/* 1st coding action to take : move this to frame level */
|
/* 1st coding action to take : move this to frame level */
|
||||||
@ -3316,10 +3316,10 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (sb->namedVG_Mass[0]) {
|
if (sb->namedVG_Mass[0]) {
|
||||||
int grp= defgroup_name_index (ob, sb->namedVG_Mass);
|
int defgrp_index = defgroup_name_index (ob, sb->namedVG_Mass);
|
||||||
/* printf("VGN %s %d\n", sb->namedVG_Mass, grp); */
|
/* printf("VGN %s %d\n", sb->namedVG_Mass, defgrp_index); */
|
||||||
if (grp > -1) {
|
if (defgrp_index != -1) {
|
||||||
get_scalar_from_vertexgroup(ob, a, (short) (grp), &bp->mass);
|
get_scalar_from_vertexgroup(ob, a, defgrp_index, &bp->mass);
|
||||||
/* 2.5 bp->mass = bp->mass * sb->nodemass; */
|
/* 2.5 bp->mass = bp->mass * sb->nodemass; */
|
||||||
/* printf("bp->mass %f\n", bp->mass); */
|
/* printf("bp->mass %f\n", bp->mass); */
|
||||||
|
|
||||||
@ -3329,10 +3329,10 @@ static void mesh_to_softbody(Scene *scene, Object *ob)
|
|||||||
bp->springweight = 1.0f;
|
bp->springweight = 1.0f;
|
||||||
|
|
||||||
if (sb->namedVG_Spring_K[0]) {
|
if (sb->namedVG_Spring_K[0]) {
|
||||||
int grp= defgroup_name_index (ob, sb->namedVG_Spring_K);
|
int defgrp_index = defgroup_name_index (ob, sb->namedVG_Spring_K);
|
||||||
//printf("VGN %s %d\n", sb->namedVG_Spring_K, grp);
|
//printf("VGN %s %d\n", sb->namedVG_Spring_K, defgrp_index);
|
||||||
if (grp > -1) {
|
if (defgrp_index != -1) {
|
||||||
get_scalar_from_vertexgroup(ob, a, (short) (grp), &bp->springweight);
|
get_scalar_from_vertexgroup(ob, a, defgrp_index , &bp->springweight);
|
||||||
//printf("bp->springweight %f\n", bp->springweight);
|
//printf("bp->springweight %f\n", bp->springweight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ enum {
|
|||||||
BM_ELEM_DRAW = (1 << 5), /* edge display */
|
BM_ELEM_DRAW = (1 << 5), /* edge display */
|
||||||
|
|
||||||
/* spare tag, assumed dirty, use define in each function to name based on use */
|
/* spare tag, assumed dirty, use define in each function to name based on use */
|
||||||
_BM_ELEM_TAG_ALT = (1 << 6),
|
// _BM_ELEM_TAG_ALT = (1 << 6), // UNUSED
|
||||||
|
|
||||||
BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
|
BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
|
||||||
* since tools may want to tag verts and
|
* since tools may want to tag verts and
|
||||||
|
@ -45,19 +45,12 @@
|
|||||||
/* defines for testing */
|
/* defines for testing */
|
||||||
#define USE_CUSTOMDATA
|
#define USE_CUSTOMDATA
|
||||||
#define USE_TRIANGULATE
|
#define USE_TRIANGULATE
|
||||||
// #define USE_PRESERVE_BOUNDARY /* could disable but its nicer not to mix boundary/non-boundry verts */
|
|
||||||
|
|
||||||
/* these checks are for rare cases that we can't avoid since they are valid meshes still */
|
/* these checks are for rare cases that we can't avoid since they are valid meshes still */
|
||||||
#define USE_SAFETY_CHECKS
|
#define USE_SAFETY_CHECKS
|
||||||
|
|
||||||
#define BOUNDARY_PRESERVE_WEIGHT 100.0f
|
#define BOUNDARY_PRESERVE_WEIGHT 100.0f
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_PRESERVE_BOUNDARY
|
|
||||||
/* re-use smooth for tagging boundary edges, not totally great */
|
|
||||||
#define BM_ELEM_IS_BOUNDARY _BM_ELEM_TAG_ALT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum CD_UseFlag {
|
typedef enum CD_UseFlag {
|
||||||
CD_DO_VERT,
|
CD_DO_VERT,
|
||||||
CD_DO_EDGE,
|
CD_DO_EDGE,
|
||||||
@ -112,12 +105,6 @@ static void bm_decim_build_quadrics(BMesh *bm, Quadric *vquadrics)
|
|||||||
BLI_quadric_add_qu_qu(&vquadrics[BM_elem_index_get(e->v2)], &q);
|
BLI_quadric_add_qu_qu(&vquadrics[BM_elem_index_get(e->v2)], &q);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_PRESERVE_BOUNDARY
|
|
||||||
/* init: runs first! */
|
|
||||||
/* unrelated, but do on an edge loop before we start collapsing */
|
|
||||||
BM_elem_flag_disable(e->v1, BM_ELEM_IS_BOUNDARY);
|
|
||||||
BM_elem_flag_disable(e->v2, BM_ELEM_IS_BOUNDARY);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,15 +209,6 @@ static void bm_decim_build_edge_cost(BMesh *bm,
|
|||||||
BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
|
BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
|
||||||
eheap_table[i] = NULL; /* keep sanity check happy */
|
eheap_table[i] = NULL; /* keep sanity check happy */
|
||||||
bm_decim_build_edge_cost_single(e, vquadrics, vweights, eheap, eheap_table);
|
bm_decim_build_edge_cost_single(e, vquadrics, vweights, eheap, eheap_table);
|
||||||
|
|
||||||
#ifdef USE_PRESERVE_BOUNDARY
|
|
||||||
/* init: runs second! */
|
|
||||||
if (BM_edge_is_boundary(e)) {
|
|
||||||
/* unrelated, but do on an edge loop before we start collapsing */
|
|
||||||
BM_elem_flag_enable(e->v1, BM_ELEM_IS_BOUNDARY);
|
|
||||||
BM_elem_flag_enable(e->v2, BM_ELEM_IS_BOUNDARY);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,29 +503,6 @@ static int bm_edge_collapse_is_degenerate(BMEdge *e_first)
|
|||||||
|
|
||||||
BMEdge *e_iter;
|
BMEdge *e_iter;
|
||||||
|
|
||||||
#ifdef USE_PRESERVE_BOUNDARY
|
|
||||||
const int is_boundary = BM_edge_is_boundary(e_first);
|
|
||||||
|
|
||||||
if (BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) !=
|
|
||||||
BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY))
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
if ((is_boundary == FALSE) &&
|
|
||||||
(BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) ||
|
|
||||||
BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY)))
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* sanity */
|
|
||||||
if (is_boundary == TRUE) {
|
|
||||||
BLI_assert(BM_elem_flag_test(e_first->v1, BM_ELEM_IS_BOUNDARY) != FALSE);
|
|
||||||
BLI_assert(BM_elem_flag_test(e_first->v2, BM_ELEM_IS_BOUNDARY) != FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* USE_PRESERVE_BOUNDARY */
|
|
||||||
|
|
||||||
/* clear flags on both disks */
|
/* clear flags on both disks */
|
||||||
e_iter = e_first;
|
e_iter = e_first;
|
||||||
do {
|
do {
|
||||||
|
@ -823,12 +823,12 @@ static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int i
|
|||||||
psys->vgroup[index] = 0;
|
psys->vgroup[index] = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int vgroup_num = defgroup_name_index(ob, value);
|
int defgrp_index = defgroup_name_index(ob, value);
|
||||||
|
|
||||||
if (vgroup_num == -1)
|
if (defgrp_index == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
psys->vgroup[index] = vgroup_num + 1;
|
psys->vgroup[index] = defgrp_index + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob),
|
|||||||
#if 0
|
#if 0
|
||||||
if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) {
|
if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) {
|
||||||
defgrp_index = defgroup_name_index(ob, bmd->defgrp_name);
|
defgrp_index = defgroup_name_index(ob, bmd->defgrp_name);
|
||||||
if (defgrp_index < 0) {
|
if (defgrp_index == -1) {
|
||||||
options &= ~BME_BEVEL_VWEIGHT;
|
options &= ~BME_BEVEL_VWEIGHT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,11 +226,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
|
|||||||
int defgrp_index = defgroup_name_index(ob, mmd->vgroup);
|
int defgrp_index = defgroup_name_index(ob, mmd->vgroup);
|
||||||
|
|
||||||
/* get dverts */
|
/* get dverts */
|
||||||
if (defgrp_index >= 0)
|
if (defgrp_index != -1)
|
||||||
dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
|
dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
|
||||||
|
|
||||||
/* if no vgroup (i.e. dverts) found, return the initial mesh */
|
/* if no vgroup (i.e. dverts) found, return the initial mesh */
|
||||||
if ((defgrp_index < 0) || (dvert == NULL))
|
if ((defgrp_index == -1) || (dvert == NULL))
|
||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
/* hashes for quickly providing a mapping from old to new - use key=oldindex, value=newindex */
|
/* hashes for quickly providing a mapping from old to new - use key=oldindex, value=newindex */
|
||||||
|
@ -222,7 +222,7 @@ void modifier_get_vgroup(Object *ob, DerivedMesh *dm, const char *name, MDeformV
|
|||||||
*defgrp_index = defgroup_name_index(ob, name);
|
*defgrp_index = defgroup_name_index(ob, name);
|
||||||
*dvert = NULL;
|
*dvert = NULL;
|
||||||
|
|
||||||
if (*defgrp_index >= 0) {
|
if (*defgrp_index != -1) {
|
||||||
if (ob->type == OB_LATTICE)
|
if (ob->type == OB_LATTICE)
|
||||||
*dvert = BKE_lattice_deform_verts_get(ob);
|
*dvert = BKE_lattice_deform_verts_get(ob);
|
||||||
else if (dm)
|
else if (dm)
|
||||||
|
@ -238,7 +238,7 @@ static void warpModifier_do(WarpModifierData *wmd, Object *ob,
|
|||||||
(fac = (wmd->falloff_radius - fac) / wmd->falloff_radius)))
|
(fac = (wmd->falloff_radius - fac) / wmd->falloff_radius)))
|
||||||
{
|
{
|
||||||
/* skip if no vert group found */
|
/* skip if no vert group found */
|
||||||
if (dvert && defgrp_index >= 0) {
|
if (dvert && defgrp_index != -1) {
|
||||||
dv = &dvert[i];
|
dv = &dvert[i];
|
||||||
|
|
||||||
if (dv) {
|
if (dv) {
|
||||||
|
@ -185,7 +185,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
float *org_w; /* Array original weights. */
|
float *org_w; /* Array original weights. */
|
||||||
float *new_w; /* Array new weights. */
|
float *new_w; /* Array new weights. */
|
||||||
int numVerts;
|
int numVerts;
|
||||||
int defgrp_idx;
|
int defgrp_index;
|
||||||
int i;
|
int i;
|
||||||
/* Flags. */
|
/* Flags. */
|
||||||
int do_add = (wmd->edit_flags & MOD_WVG_EDIT_ADD2VG) != 0;
|
int do_add = (wmd->edit_flags & MOD_WVG_EDIT_ADD2VG) != 0;
|
||||||
@ -205,8 +205,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
/* Get vgroup idx from its name. */
|
/* Get vgroup idx from its name. */
|
||||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name);
|
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name);
|
||||||
if (defgrp_idx < 0)
|
if (defgrp_index == -1)
|
||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
||||||
@ -228,7 +228,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
new_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, new_w");
|
new_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, new_w");
|
||||||
dw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGEdit Modifier, dw");
|
dw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGEdit Modifier, dw");
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
dw[i] = defvert_find_index(&dvert[i], defgrp_idx);
|
dw[i] = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
if (dw[i]) {
|
if (dw[i]) {
|
||||||
org_w[i] = new_w[i] = dw[i]->weight;
|
org_w[i] = new_w[i] = dw[i]->weight;
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
||||||
|
|
||||||
/* Update/add/remove from vgroup. */
|
/* Update/add/remove from vgroup. */
|
||||||
weightvg_update_vg(dvert, defgrp_idx, dw, numVerts, NULL, org_w, do_add, wmd->add_threshold,
|
weightvg_update_vg(dvert, defgrp_index, dw, numVerts, NULL, org_w, do_add, wmd->add_threshold,
|
||||||
do_rem, wmd->rem_threshold);
|
do_rem, wmd->rem_threshold);
|
||||||
|
|
||||||
/* If weight preview enabled... */
|
/* If weight preview enabled... */
|
||||||
|
@ -225,7 +225,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
MDeformVert *dvert = NULL;
|
MDeformVert *dvert = NULL;
|
||||||
MDeformWeight **dw1, **tdw1, **dw2, **tdw2;
|
MDeformWeight **dw1, **tdw1, **dw2, **tdw2;
|
||||||
int numVerts;
|
int numVerts;
|
||||||
int defgrp_idx, defgrp_idx2 = -1;
|
int defgrp_index, defgrp_index_other = -1;
|
||||||
float *org_w;
|
float *org_w;
|
||||||
float *new_w;
|
float *new_w;
|
||||||
int *tidx, *indices = NULL;
|
int *tidx, *indices = NULL;
|
||||||
@ -246,13 +246,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
/* Get vgroup idx from its name. */
|
/* Get vgroup idx from its name. */
|
||||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name_a);
|
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name_a);
|
||||||
if (defgrp_idx < 0)
|
if (defgrp_index == -1)
|
||||||
return dm;
|
return dm;
|
||||||
/* Get seconf vgroup idx from its name, if given. */
|
/* Get seconf vgroup idx from its name, if given. */
|
||||||
if (wmd->defgrp_name_b[0] != (char)0) {
|
if (wmd->defgrp_name_b[0] != (char)0) {
|
||||||
defgrp_idx2 = defgroup_name_index(ob, wmd->defgrp_name_b);
|
defgrp_index_other = defgroup_name_index(ob, wmd->defgrp_name_b);
|
||||||
if (defgrp_idx2 < 0)
|
if (defgrp_index_other == -1)
|
||||||
return dm;
|
return dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,10 +277,10 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
case MOD_WVG_SET_A:
|
case MOD_WVG_SET_A:
|
||||||
/* All vertices in first vgroup. */
|
/* All vertices in first vgroup. */
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_idx);
|
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
if (dw) {
|
if (dw) {
|
||||||
tdw1[numIdx] = dw;
|
tdw1[numIdx] = dw;
|
||||||
tdw2[numIdx] = defvert_find_index(&dvert[i], defgrp_idx2);
|
tdw2[numIdx] = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||||
tidx[numIdx++] = i;
|
tidx[numIdx++] = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,9 +288,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
case MOD_WVG_SET_B:
|
case MOD_WVG_SET_B:
|
||||||
/* All vertices in second vgroup. */
|
/* All vertices in second vgroup. */
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_idx2);
|
MDeformWeight *dw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||||
if (dw) {
|
if (dw) {
|
||||||
tdw1[numIdx] = defvert_find_index(&dvert[i], defgrp_idx);
|
tdw1[numIdx] = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
tdw2[numIdx] = dw;
|
tdw2[numIdx] = dw;
|
||||||
tidx[numIdx++] = i;
|
tidx[numIdx++] = i;
|
||||||
}
|
}
|
||||||
@ -299,8 +299,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
case MOD_WVG_SET_OR:
|
case MOD_WVG_SET_OR:
|
||||||
/* All vertices in one vgroup or the other. */
|
/* All vertices in one vgroup or the other. */
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_idx);
|
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_idx2);
|
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||||
if (adw || bdw) {
|
if (adw || bdw) {
|
||||||
tdw1[numIdx] = adw;
|
tdw1[numIdx] = adw;
|
||||||
tdw2[numIdx] = bdw;
|
tdw2[numIdx] = bdw;
|
||||||
@ -311,8 +311,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
case MOD_WVG_SET_AND:
|
case MOD_WVG_SET_AND:
|
||||||
/* All vertices in both vgroups. */
|
/* All vertices in both vgroups. */
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_idx);
|
MDeformWeight *adw = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_idx2);
|
MDeformWeight *bdw = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||||
if (adw && bdw) {
|
if (adw && bdw) {
|
||||||
tdw1[numIdx] = adw;
|
tdw1[numIdx] = adw;
|
||||||
tdw2[numIdx] = bdw;
|
tdw2[numIdx] = bdw;
|
||||||
@ -324,8 +324,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
default:
|
default:
|
||||||
/* Use all vertices. */
|
/* Use all vertices. */
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
tdw1[i] = defvert_find_index(&dvert[i], defgrp_idx);
|
tdw1[i] = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
tdw2[i] = defvert_find_index(&dvert[i], defgrp_idx2);
|
tdw2[i] = defvert_find_index(&dvert[i], defgrp_index_other);
|
||||||
}
|
}
|
||||||
numIdx = -1;
|
numIdx = -1;
|
||||||
break;
|
break;
|
||||||
@ -377,7 +377,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
/* Update (add to) vgroup.
|
/* Update (add to) vgroup.
|
||||||
* XXX Depending on the MOD_WVG_SET_xxx option chosen, we might have to add vertices to vgroup.
|
* XXX Depending on the MOD_WVG_SET_xxx option chosen, we might have to add vertices to vgroup.
|
||||||
*/
|
*/
|
||||||
weightvg_update_vg(dvert, defgrp_idx, dw1, numIdx, indices, org_w, TRUE, -FLT_MAX, FALSE, 0.0f);
|
weightvg_update_vg(dvert, defgrp_index, dw1, numIdx, indices, org_w, TRUE, -FLT_MAX, FALSE, 0.0f);
|
||||||
|
|
||||||
/* If weight preview enabled... */
|
/* If weight preview enabled... */
|
||||||
#if 0 /* XXX Currently done in mod stack :/ */
|
#if 0 /* XXX Currently done in mod stack :/ */
|
||||||
|
@ -347,7 +347,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
int numVerts;
|
int numVerts;
|
||||||
float (*v_cos)[3] = NULL; /* The vertices coordinates. */
|
float (*v_cos)[3] = NULL; /* The vertices coordinates. */
|
||||||
Object *obr = NULL; /* Our target object. */
|
Object *obr = NULL; /* Our target object. */
|
||||||
int defgrp_idx;
|
int defgrp_index;
|
||||||
float *tw = NULL;
|
float *tw = NULL;
|
||||||
float *org_w = NULL;
|
float *org_w = NULL;
|
||||||
float *new_w = NULL;
|
float *new_w = NULL;
|
||||||
@ -378,8 +378,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
/* Get vgroup idx from its name. */
|
/* Get vgroup idx from its name. */
|
||||||
defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name);
|
defgrp_index = defgroup_name_index(ob, wmd->defgrp_name);
|
||||||
if (defgrp_idx < 0)
|
if (defgrp_index == -1)
|
||||||
return dm;
|
return dm;
|
||||||
|
|
||||||
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
|
||||||
@ -394,7 +394,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
tw = MEM_mallocN(sizeof(float) * numVerts, "WeightVGProximity Modifier, tw");
|
tw = MEM_mallocN(sizeof(float) * numVerts, "WeightVGProximity Modifier, tw");
|
||||||
tdw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGProximity Modifier, tdw");
|
tdw = MEM_mallocN(sizeof(MDeformWeight *) * numVerts, "WeightVGProximity Modifier, tdw");
|
||||||
for (i = 0; i < numVerts; i++) {
|
for (i = 0; i < numVerts; i++) {
|
||||||
MDeformWeight *_dw = defvert_find_index(&dvert[i], defgrp_idx);
|
MDeformWeight *_dw = defvert_find_index(&dvert[i], defgrp_index);
|
||||||
if (_dw) {
|
if (_dw) {
|
||||||
tidx[numIdx] = i;
|
tidx[numIdx] = i;
|
||||||
tw[numIdx] = _dw->weight;
|
tw[numIdx] = _dw->weight;
|
||||||
@ -509,7 +509,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
|||||||
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
||||||
|
|
||||||
/* Update vgroup. Note we never add nor remove vertices from vgroup here. */
|
/* Update vgroup. Note we never add nor remove vertices from vgroup here. */
|
||||||
weightvg_update_vg(dvert, defgrp_idx, dw, numIdx, indices, org_w, FALSE, 0.0f, FALSE, 0.0f);
|
weightvg_update_vg(dvert, defgrp_index, dw, numIdx, indices, org_w, FALSE, 0.0f, FALSE, 0.0f);
|
||||||
|
|
||||||
/* If weight preview enabled... */
|
/* If weight preview enabled... */
|
||||||
#if 0 /* XXX Currently done in mod stack :/ */
|
#if 0 /* XXX Currently done in mod stack :/ */
|
||||||
|
Loading…
Reference in New Issue
Block a user