[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42087] trunk/blender/source/blender: Fixed some glitches with WeightVG modifiers:
Bastien Montagne
montagne29 at wanadoo.fr
Wed Nov 23 15:40:16 CET 2011
Revision: 42087
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42087
Author: mont29
Date: 2011-11-23 14:40:15 +0000 (Wed, 23 Nov 2011)
Log Message:
-----------
Fixed some glitches with WeightVG modifiers:
* Added some RNA tooltips, now that they are supported by dropdown lists.
* Fixed some RNA num properties UI steps.
* Fixed a memory leak in Proximity modifier (when dm of "target" object had to be created, it wasn?\226?\128?\153t freed...).
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c
Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2011-11-23 07:39:59 UTC (rev 42086)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2011-11-23 14:40:15 UTC (rev 42087)
@@ -2571,10 +2571,10 @@
static void rna_def_modifier_weightvg_mask(BlenderRNA *brna, StructRNA *srna)
{
static EnumPropertyItem weightvg_mask_tex_map_items[] = {
- {MOD_DISP_MAP_LOCAL, "LOCAL", 0, "Local", ""},
- {MOD_DISP_MAP_GLOBAL, "GLOBAL", 0, "Global", ""},
- {MOD_DISP_MAP_OBJECT, "OBJECT", 0, "Object", ""},
- {MOD_DISP_MAP_UV, "UV", 0, "UV", ""},
+ {MOD_DISP_MAP_LOCAL, "LOCAL", 0, "Local", "Use local generated coordinates"},
+ {MOD_DISP_MAP_GLOBAL, "GLOBAL", 0, "Global", "Use global coordinates"},
+ {MOD_DISP_MAP_OBJECT, "OBJECT", 0, "Object", "Use local generated coordinates of another object"},
+ {MOD_DISP_MAP_UV, "UV", 0, "UV", "Use coordinates from an UV layer"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem weightvg_mask_tex_used_items[] = {
@@ -2592,7 +2592,7 @@
prop= RNA_def_property(srna, "mask_constant", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Influence", "Global influence of current modifications on vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2635,14 +2635,15 @@
static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
{
static EnumPropertyItem weightvg_edit_falloff_type_items[] = {
- {MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", ""},
+ {MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", "Null action"},
{MOD_WVG_MAPPING_CURVE, "CURVE", ICON_RNDCURVE, "Custom Curve", ""},
{MOD_WVG_MAPPING_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
{MOD_WVG_MAPPING_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
{MOD_WVG_MAPPING_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""},
{MOD_WVG_MAPPING_SPHERE, "ICON_SPHERECURVE", ICON_SPHERECURVE, "Sphere", ""},
{MOD_WVG_MAPPING_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""},
- {MOD_WVG_MAPPING_STEP, "STEP", ICON_NOCURVE, "Median Step", ""}, /* Would need a better icon... */
+ {MOD_WVG_MAPPING_STEP, "STEP", ICON_NOCURVE /* Would need a better icon... */, "Median Step",
+ "Map all values below 0.5 to 0.0, and all others to 1.0"},
{0, NULL, 0, NULL, NULL}};
StructRNA *srna;
@@ -2679,7 +2680,7 @@
prop= RNA_def_property(srna, "default_weight", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 1.0f);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Default Weight", "Default weight a vertex will have if "
"it is not in the vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2692,7 +2693,7 @@
prop= RNA_def_property(srna, "add_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "add_threshold");
RNA_def_property_range(prop, 0.0, 1.0);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Add Threshold", "Lower bound for a vertex's weight "
"to be added to the vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2700,7 +2701,7 @@
prop= RNA_def_property(srna, "remove_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rem_threshold");
RNA_def_property_range(prop, 0.0, 1.0);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Rem Threshold", "Upper bound for a vertex's weight "
"to be removed from the vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2712,21 +2713,21 @@
static void rna_def_modifier_weightvgmix(BlenderRNA *brna)
{
static EnumPropertyItem weightvg_mix_modes_items[] = {
- {MOD_WVG_MIX_SET, "SET", 0, "Replace weights", ""},
- {MOD_WVG_MIX_ADD, "ADD", 0, "Add to weights", ""},
- {MOD_WVG_MIX_SUB, "SUB", 0, "Subtract from weights", ""},
- {MOD_WVG_MIX_MUL, "MUL", 0, "Multiply weights", ""},
- {MOD_WVG_MIX_DIV, "DIV", 0, "Divide weights", ""},
- {MOD_WVG_MIX_DIF, "DIF", 0, "Difference", ""},
- {MOD_WVG_MIX_AVG, "AVG", 0, "Average", ""},
+ {MOD_WVG_MIX_SET, "SET", 0, "Replace", "Replace VGroup A's weights by VGroup b's ones"},
+ {MOD_WVG_MIX_ADD, "ADD", 0, "Add", "Add VGroup B's weights to VGroup A's ones"},
+ {MOD_WVG_MIX_SUB, "SUB", 0, "Subtract", "Subtract VGroup B's weights from VGroup A's ones"},
+ {MOD_WVG_MIX_MUL, "MUL", 0, "Multiply", "Multiply VGroup A's weights by VGroup B's ones"},
+ {MOD_WVG_MIX_DIV, "DIV", 0, "Divide", "Divide VGroup A's weights by VGroup B's ones"},
+ {MOD_WVG_MIX_DIF, "DIF", 0, "Difference", "Difference between VGroup A's and VGroup B's weigths"},
+ {MOD_WVG_MIX_AVG, "AVG", 0, "Average", "Average value of VGroup A's and VGroup B's weigths"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem weightvg_mix_set_items[] = {
- {MOD_WVG_SET_ALL, "ALL", 0, "All vertices", ""},
- {MOD_WVG_SET_A, "A", 0, "Vertices from group A", ""},
- {MOD_WVG_SET_B, "B", 0, "Vertices from group B", ""},
- {MOD_WVG_SET_OR, "OR", 0, "Vertices from one group", ""},
- {MOD_WVG_SET_AND, "AND", 0, "Vertices from both groups", ""},
+ {MOD_WVG_SET_ALL, "ALL", 0, "All", "Affect all vertices (might add some to VGroup A)"},
+ {MOD_WVG_SET_A, "A", 0, "VGroup A", "Affect vertices in VGroup A"},
+ {MOD_WVG_SET_B, "B", 0, "VGroup B", "Affect vertices in VGroup B (might add some to VGroup A)"},
+ {MOD_WVG_SET_OR, "OR", 0, "VGroup A or B", "Affect vertices in at least one of both VGroups (might add some to VGroup A)"},
+ {MOD_WVG_SET_AND, "AND", 0, "VGroup A and B", "Affect vertices in both groups"},
{0, NULL, 0, NULL, NULL}};
StructRNA *srna;
@@ -2752,14 +2753,14 @@
prop= RNA_def_property(srna, "default_weight_a", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 1.0f);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Default Weight A", "Default weight a vertex will have if "
"it is not in the first vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "default_weight_b", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 1.0f);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 0);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 0);
RNA_def_property_ui_text(prop, "Default Weight B", "Default weight a vertex will have if "
"it is not in the second vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2796,14 +2797,15 @@
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem weightvg_proximity_falloff_type_items[] = {
- {MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", ""},
+ {MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", "Null action"},
/* No curve mapping here! */
{MOD_WVG_MAPPING_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
{MOD_WVG_MAPPING_SMOOTH, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
{MOD_WVG_MAPPING_ROOT, "ROOT", ICON_ROOTCURVE, "Root", ""},
{MOD_WVG_MAPPING_SPHERE, "ICON_SPHERECURVE", ICON_SPHERECURVE, "Sphere", ""},
{MOD_WVG_MAPPING_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", ""},
- {MOD_WVG_MAPPING_STEP, "STEP", ICON_NOCURVE, "Median Step", ""}, /* Would need a better icon... */
+ {MOD_WVG_MAPPING_STEP, "STEP", ICON_NOCURVE /* Would need a better icon... */, "Median Step",
+ "Map all values below 0.5 to 0.0, and all others to 1.0"},
{0, NULL, 0, NULL, NULL}};
StructRNA *srna;
Modified: trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c 2011-11-23 07:39:59 UTC (rev 42086)
+++ trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c 2011-11-23 14:40:15 UTC (rev 42087)
@@ -466,6 +466,7 @@
if (use_trgt_verts || use_trgt_edges || use_trgt_faces) {
DerivedMesh *target_dm = obr->derivedFinal;
+ short free_target_dm = FALSE;
if (!target_dm) {
if (ELEM3(obr->type, OB_CURVE, OB_SURF, OB_FONT))
target_dm = CDDM_from_curve(obr);
@@ -476,6 +477,7 @@
else
target_dm = CDDM_from_mesh(me, obr);
}
+ free_target_dm = TRUE;
}
/* We must check that we do have a valid target_dm! */
@@ -495,6 +497,7 @@
if(dists_f)
new_w[i] = minf(dists_f[i], new_w[i]);
}
+ if(free_target_dm) target_dm->release(target_dm);
if(dists_v) MEM_freeN(dists_v);
if(dists_e) MEM_freeN(dists_e);
if(dists_f) MEM_freeN(dists_f);
More information about the Bf-blender-cvs
mailing list