minor cleanup of rna
- use an rna enum-set for proximity vert/edge/face options. - rename some flags. - better conform to rna naming conventions.
This commit is contained in:
@@ -777,8 +777,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
||||
col.label(text="Default Weight:")
|
||||
col.prop(md, "default_weight", text="")
|
||||
|
||||
layout.prop(md, "flag_map")
|
||||
if md.flag_map:
|
||||
layout.prop(md, "use_map")
|
||||
if md.use_map:
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label("Input:")
|
||||
@@ -790,27 +790,27 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
||||
col.prop(md, "map_input_high", text="Max")
|
||||
col.prop(md, "map_output_high", text="Max")
|
||||
|
||||
layout.prop(md, "flag_curve_map")
|
||||
if md.flag_curve_map:
|
||||
row = layout.row()
|
||||
row.template_curve_mapping(md, "cmap_curve")
|
||||
layout.prop(md, "use_map_curve")
|
||||
if md.use_map_curve:
|
||||
col = layout.column()
|
||||
col.template_curve_mapping(md, "map_curve")
|
||||
|
||||
layout.prop(md, "flag_reverse")
|
||||
layout.prop(md, "use_reverse")
|
||||
|
||||
layout.prop(md, "flag_clamp")
|
||||
if md.flag_clamp:
|
||||
layout.prop(md, "use_clamp")
|
||||
if md.use_clamp:
|
||||
row = layout.row()
|
||||
row.prop(md, "clamp_min_weight")
|
||||
row.prop(md, "clamp_max_weight")
|
||||
row.prop(md, "clamp_weight_min")
|
||||
row.prop(md, "clamp_weight_max")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(md, "flag_add2vg")
|
||||
row.prop(md, "flag_remfvg")
|
||||
row.prop(md, "use_add")
|
||||
row.prop(md, "use_remove")
|
||||
row = layout.row()
|
||||
if md.flag_add2vg:
|
||||
if md.use_add:
|
||||
row.prop(md, "add_threshold")
|
||||
if md.flag_remfvg:
|
||||
row.prop(md, "rem_threshold")
|
||||
if md.use_remove:
|
||||
row.prop(md, "remove_threshold")
|
||||
|
||||
# Common mask options…
|
||||
layout.separator()
|
||||
@@ -850,15 +850,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Target Object:")
|
||||
col.prop(md, "ob_target", text="")
|
||||
col.prop(md, "target", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(md, "proximity_mode", expand=True)
|
||||
if md.proximity_mode == 'OBJ2VERTDIST':
|
||||
if md.proximity_mode == 'GEOMETRY':
|
||||
row = layout.row()
|
||||
row.prop(md, "obj2vert_verts")
|
||||
row.prop(md, "obj2vert_edges")
|
||||
row.prop(md, "obj2vert_faces")
|
||||
row.prop(md, "proximity_geometry", expand=True)
|
||||
|
||||
# Common mask options…
|
||||
layout.separator()
|
||||
|
||||
@@ -810,7 +810,7 @@ typedef struct WeightVGEditModifierData {
|
||||
float add_threshold, rem_threshold;
|
||||
|
||||
/* Clamping options. */
|
||||
float clamp_min_weight, clamp_max_weight;
|
||||
float clamp_weight_min, clamp_weight_max;
|
||||
|
||||
/* Masking options. */
|
||||
float mask_constant; /* The global “influence”, if no vgroup nor tex is used as mask. */
|
||||
@@ -846,7 +846,7 @@ typedef struct WeightVGEditModifierData {
|
||||
typedef struct WeightVGMixModifierData {
|
||||
ModifierData modifier;
|
||||
|
||||
/* XXX Note: I tried to keep everything logically ordered – provided the
|
||||
/* XXX Note: I tried to keep everything logically ordered – provided the
|
||||
* alignment constraints…
|
||||
*/
|
||||
|
||||
@@ -926,17 +926,17 @@ typedef struct WeightVGProximityModifierData {
|
||||
|
||||
/* Modes of proximity weighting. */
|
||||
/* Dist from target object to affected object. */
|
||||
#define MOD_WVG_PROXIMITY_OBJ2OBJDIST 1
|
||||
#define MOD_WVG_PROXIMITY_OBJECT 1 /* source vertex to other location */
|
||||
/* Dist from target object to vertex. */
|
||||
#define MOD_WVG_PROXIMITY_OBJ2VERTDIST 2
|
||||
#define MOD_WVG_PROXIMITY_GEOMETRY 2 /* source vertex to other geometry */
|
||||
|
||||
/* Flags options for proximity weighting. */
|
||||
/* Use nearest vertices of target obj, in OVJ2VERTDIST mode. */
|
||||
#define MOD_WVG_PROXIMITY_O2VD_VERTS (1 << 0)
|
||||
/* Use nearest edges of target obj, in OVJ2VERTDIST mode. */
|
||||
#define MOD_WVG_PROXIMITY_O2VD_EDGES (1 << 1)
|
||||
/* Use nearest faces of target obj, in OVJ2VERTDIST mode. */
|
||||
#define MOD_WVG_PROXIMITY_O2VD_FACES (1 << 2)
|
||||
/* Use nearest vertices of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
|
||||
#define MOD_WVG_PROXIMITY_GEOM_VERTS (1 << 0)
|
||||
/* Use nearest edges of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
|
||||
#define MOD_WVG_PROXIMITY_GEOM_EDGES (1 << 1)
|
||||
/* Use nearest faces of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
|
||||
#define MOD_WVG_PROXIMITY_GEOM_FACES (1 << 2)
|
||||
|
||||
/* Defines common to all WeightVG modifiers. */
|
||||
/* Tex channel to be used as mask. */
|
||||
|
||||
@@ -2553,34 +2553,34 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
|
||||
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WeightVGModifier_vgroup_set");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_map", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_map", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_MAP);
|
||||
RNA_def_property_ui_text(prop, "Map", "Map vertex group weights.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_curve_map", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_map_curve", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_CMAP);
|
||||
RNA_def_property_ui_text(prop, "Curve Map", "Map vertex group weights with a curve.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_reverse", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_reverse", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_REVERSE_WEIGHTS);
|
||||
RNA_def_property_ui_text(prop, "Reverse", "Reverse vertex group weights.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_add2vg", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_add", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_ADD2VG);
|
||||
RNA_def_property_ui_text(prop, "Add to VG", "Add vertices with weight over threshold "
|
||||
"to vgroup.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_remfvg", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_remove", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_REMFVG);
|
||||
RNA_def_property_ui_text(prop, "Rem from VG", "Remove vertices with weight below threshold "
|
||||
"from vgroup.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "flag_clamp", PROP_BOOLEAN, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_CLAMP);
|
||||
RNA_def_property_ui_text(prop, "Clamp", "Clamp vertex group weights.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
@@ -2620,32 +2620,34 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Output High Weight", "High output mapping value.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "cmap_curve", PROP_POINTER, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "map_curve", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "cmap_curve");
|
||||
RNA_def_property_ui_text(prop, "Mapping Curve", "Custom mapping curve.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
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, -FLT_MAX, FLT_MAX);
|
||||
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 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");
|
||||
|
||||
prop= RNA_def_property(srna, "rem_threshold", PROP_FLOAT, PROP_NONE);
|
||||
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, -FLT_MAX, FLT_MAX);
|
||||
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 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");
|
||||
|
||||
prop= RNA_def_property(srna, "clamp_min_weight", PROP_FLOAT, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "clamp_weight_min", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
|
||||
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
|
||||
RNA_def_property_ui_text(prop, "Min Weight", "Lowest weight a vertex can get.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "clamp_max_weight", PROP_FLOAT, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "clamp_weight_max", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
|
||||
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
|
||||
RNA_def_property_ui_text(prop, "Max Weight", "Highest weight a vertex can get.");
|
||||
@@ -2728,12 +2730,18 @@ static void rna_def_modifier_weightvgmix(BlenderRNA *brna)
|
||||
static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
|
||||
{
|
||||
static EnumPropertyItem weightvg_proximity_modes_items[] = {
|
||||
{MOD_WVG_PROXIMITY_OBJ2OBJDIST, "OBJ2OBJDIST", 0, "Object Distance",
|
||||
{MOD_WVG_PROXIMITY_OBJECT, "OBJECT", 0, "Object Distance",
|
||||
"Use distance between affected and target objects."},
|
||||
{MOD_WVG_PROXIMITY_OBJ2VERTDIST, "OBJ2VERTDIST", 0, "Verts Distance",
|
||||
{MOD_WVG_PROXIMITY_GEOMETRY, "GEOMETRY", 0, "Geometry Distance",
|
||||
"Use distance between affected object’s vertices and target object, or target object’s geometry."},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static EnumPropertyItem proximity_geometry_items[] = {
|
||||
{MOD_WVG_PROXIMITY_GEOM_VERTS, "VERTEX", ICON_VERTEXSEL, "Vertex", ""},
|
||||
{MOD_WVG_PROXIMITY_GEOM_EDGES, "EDGE", ICON_EDGESEL, "Edge", ""},
|
||||
{MOD_WVG_PROXIMITY_GEOM_FACES, "FACE", ICON_FACESEL, "Face", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
@@ -2755,25 +2763,14 @@ static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Proximity Mode", "Which distances to target object to use.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "obj2vert_verts", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_VERTS);
|
||||
RNA_def_property_ui_text(prop, "Verts as Target",
|
||||
"Use shortest distance to target object’s vertices as weight.");
|
||||
prop= RNA_def_property(srna, "proximity_geometry", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "proximity_flags");
|
||||
RNA_def_property_enum_items(prop, proximity_geometry_items);
|
||||
RNA_def_property_flag(prop, PROP_ENUM_FLAG); /* important to run before default set */
|
||||
RNA_def_property_ui_text(prop, "Proximity Geometry", "Use shortest distance to target object’s geometry as weight");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "obj2vert_edges", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_EDGES);
|
||||
RNA_def_property_ui_text(prop, "Edges as Target",
|
||||
"Use shortest distance to target object’s edges as weight.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "obj2vert_faces", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_FACES);
|
||||
RNA_def_property_ui_text(prop, "Faces as Target",
|
||||
"Use shortest distance to target object’s faces as weight.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "ob_target", PROP_POINTER, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "proximity_ob_target");
|
||||
RNA_def_property_ui_text(prop, "Target Object", "Object to calculate vertices’ distances from.");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
|
||||
|
||||
@@ -71,8 +71,8 @@ static void initData(ModifierData *md)
|
||||
wmd->cmap_curve = curvemapping_add(1, 0.0, 0.0, 1.0, 1.0);
|
||||
curvemapping_initialize(wmd->cmap_curve);
|
||||
|
||||
wmd->clamp_min_weight = 0.0f;
|
||||
wmd->clamp_max_weight = 1.0f;
|
||||
wmd->clamp_weight_min = 0.0f;
|
||||
wmd->clamp_weight_max = 1.0f;
|
||||
|
||||
wmd->add_threshold = 0.01f;
|
||||
wmd->rem_threshold = 0.01f;
|
||||
@@ -104,8 +104,8 @@ static void copyData(ModifierData *md, ModifierData *target)
|
||||
twmd->map_new_max = wmd->map_new_max;
|
||||
twmd->cmap_curve = curvemapping_copy(wmd->cmap_curve);
|
||||
|
||||
twmd->clamp_min_weight = wmd->clamp_min_weight;
|
||||
twmd->clamp_max_weight = wmd->clamp_max_weight;
|
||||
twmd->clamp_weight_min = wmd->clamp_weight_min;
|
||||
twmd->clamp_weight_max = wmd->clamp_weight_max;
|
||||
|
||||
twmd->add_threshold = wmd->add_threshold;
|
||||
twmd->rem_threshold = wmd->rem_threshold;
|
||||
@@ -311,7 +311,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
/* Do clamping. */
|
||||
if (do_clamp) {
|
||||
for (i = 0; i < numVerts; i++)
|
||||
CLAMP(org_w[i], wmd->clamp_min_weight, wmd->clamp_max_weight);
|
||||
CLAMP(org_w[i], wmd->clamp_weight_min, wmd->clamp_weight_max);
|
||||
}
|
||||
|
||||
/* Update/add/remove from vgroup. */
|
||||
|
||||
@@ -207,8 +207,8 @@ static void initData(ModifierData *md)
|
||||
{
|
||||
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData*) md;
|
||||
|
||||
wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJ2OBJDIST;
|
||||
wmd->proximity_flags = MOD_WVG_PROXIMITY_O2VD_VERTS;
|
||||
wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJECT;
|
||||
wmd->proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS;
|
||||
|
||||
wmd->mask_constant = 1.0f;
|
||||
wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */
|
||||
@@ -315,7 +315,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
{
|
||||
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData*) md;
|
||||
DerivedMesh *dm = derivedData, *ret = NULL;
|
||||
#if 0
|
||||
Mesh *ob_m = NULL;
|
||||
#endif
|
||||
MDeformVert *dvert = NULL;
|
||||
int numVerts;
|
||||
float (*v_cos)[3] = NULL; /* The vertices coordinates. */
|
||||
@@ -419,15 +421,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
ret->getVertCo(ret, indices[i], v_cos[i]);
|
||||
|
||||
/* Compute wanted distances. */
|
||||
if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJ2OBJDIST) {
|
||||
if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJECT) {
|
||||
float dist = get_ob2ob_distance(ob, obr);
|
||||
for(i = 0; i < numIdx; i++)
|
||||
new_w[i] = dist;
|
||||
}
|
||||
else if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJ2VERTDIST) {
|
||||
char use_trgt_verts = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_VERTS);
|
||||
char use_trgt_edges = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_EDGES);
|
||||
char use_trgt_faces = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_FACES);
|
||||
else if (wmd->proximity_mode == MOD_WVG_PROXIMITY_GEOMETRY) {
|
||||
const short use_trgt_verts = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_VERTS);
|
||||
const short use_trgt_edges = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_EDGES);
|
||||
const short use_trgt_faces = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_FACES);
|
||||
|
||||
if (use_trgt_verts || use_trgt_edges || use_trgt_faces) {
|
||||
DerivedMesh *target_dm = obr->derivedFinal;
|
||||
@@ -460,11 +462,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
}
|
||||
}
|
||||
/* Else, fall back to default obj2vert behavior. */
|
||||
else
|
||||
else {
|
||||
get_vert2ob_distance(numIdx, v_cos, new_w, ob, obr);
|
||||
}
|
||||
}
|
||||
else
|
||||
else {
|
||||
get_vert2ob_distance(numIdx, v_cos, new_w, ob, obr);
|
||||
}
|
||||
}
|
||||
|
||||
/* Do masking. */
|
||||
|
||||
Reference in New Issue
Block a user