forked from bartvdbraak/blender
interface + naming improvements to vertex wright modifier
- WeightVG -> Vertex Weight - mapping_mode -> falloff_type - nicer layout for VertexWeightModifiers add/remove options
This commit is contained in:
parent
6d18b1800a
commit
520778163d
@ -100,6 +100,22 @@ While this is not best practice - for testing you can extend the search path, th
|
||||
Don't Use Blender!
|
||||
==================
|
||||
|
||||
While developing your own scripts blenders interface can get in the way, manually reloading, running the scripts, opening file import etc is just overhead.
|
||||
|
||||
For scripts that are not interactive it can end up being easier not to use blender at all and run blender from a terminal, without opening a window and execute the script on the command line.
|
||||
|
||||
.. code-block::
|
||||
|
||||
blender --backgruond --python myscript.py
|
||||
|
||||
|
||||
You might want to run this with a blend file too.
|
||||
|
||||
.. code-block::
|
||||
|
||||
blender myscene.blend --backgruond --python myscript.py
|
||||
|
||||
|
||||
|
||||
Use External Tools
|
||||
==================
|
||||
|
@ -768,7 +768,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
elif md.mask_tex_mapping == 'UV' and ob.type == 'MESH':
|
||||
layout.prop_search(md, "mask_tex_uv_layer", ob.data, "uv_textures")
|
||||
|
||||
def WEIGHT_VGEDIT(self, layout, ob, md):
|
||||
def VERTEX_WEIGHT_EDIT(self, layout, ob, md):
|
||||
if ob.type == 'MESH':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@ -779,25 +779,28 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.label(text="Default Weight:")
|
||||
col.prop(md, "default_weight", text="")
|
||||
|
||||
layout.prop(md, "mapping_mode")
|
||||
if md.mapping_mode == 'CURVE':
|
||||
layout.prop(md, "falloff_type")
|
||||
if md.falloff_type == 'CURVE':
|
||||
col = layout.column()
|
||||
col.template_curve_mapping(md, "map_curve")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(md, "use_add")
|
||||
row.prop(md, "use_remove")
|
||||
row = layout.row()
|
||||
if md.use_add:
|
||||
row.prop(md, "add_threshold")
|
||||
if md.use_remove:
|
||||
row.prop(md, "remove_threshold")
|
||||
split = layout.split(percentage=0.4)
|
||||
split.prop(md, "use_add")
|
||||
row = split.row()
|
||||
row.active = md.use_add
|
||||
row.prop(md, "add_threshold")
|
||||
|
||||
split = layout.split(percentage=0.4)
|
||||
split.prop(md, "use_remove")
|
||||
row = split.row()
|
||||
row.active = md.use_remove
|
||||
row.prop(md, "remove_threshold")
|
||||
|
||||
# Common mask options…
|
||||
layout.separator()
|
||||
self.weight_vg_mask(layout, ob, md)
|
||||
|
||||
def WEIGHT_VGMIX(self, layout, ob, md):
|
||||
def VERTEX_WEIGHT_MIX(self, layout, ob, md):
|
||||
if ob.type == 'MESH':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@ -822,7 +825,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
layout.separator()
|
||||
self.weight_vg_mask(layout, ob, md)
|
||||
|
||||
def WEIGHT_VGPROXIMITY(self, layout, ob, md):
|
||||
def VERTEX_WEIGHT_PROXIMITY(self, layout, ob, md):
|
||||
if ob.type == 'MESH':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@ -843,7 +846,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
row.prop(md, "min_dist")
|
||||
row.prop(md, "max_dist")
|
||||
|
||||
layout.prop(md, "mapping_mode")
|
||||
layout.prop(md, "falloff_type")
|
||||
|
||||
# Common mask options…
|
||||
layout.separator()
|
||||
|
@ -589,7 +589,7 @@ DEF_ICON(MOD_MULTIRES)
|
||||
DEF_ICON(MOD_SMOKE)
|
||||
DEF_ICON(MOD_SOLIDIFY)
|
||||
DEF_ICON(MOD_SCREW)
|
||||
DEF_ICON(MOD_WEIGHTVG)
|
||||
DEF_ICON(MOD_VERTEX_WEIGHT)
|
||||
#ifndef DEF_ICON_BLANK_SKIP
|
||||
DEF_ICON(BLANK161)
|
||||
DEF_ICON(BLANK162)
|
||||
|
@ -796,7 +796,7 @@ typedef struct WeightVGEditModifierData {
|
||||
char defgrp_name[32]; /* Name of vertex group to edit. */
|
||||
|
||||
short edit_flags; /* Using MOD_WVG_EDIT_* flags. */
|
||||
short mapping_mode; /* Using MOD_WVG_MAPPING_* defines. */
|
||||
short falloff_type; /* Using MOD_WVG_MAPPING_* defines. */
|
||||
float default_weight; /* Weight for vertices not in vgroup. */
|
||||
|
||||
/* Mapping stuff. */
|
||||
@ -913,7 +913,7 @@ typedef struct WeightVGProximityModifierData {
|
||||
float min_dist, max_dist; /* Distances mapping to 0.0/1.0 weights. */
|
||||
|
||||
/* Put here to avoid breaking existing struct... */
|
||||
short mapping_mode; /* Using MOD_WVG_MAPPING_* defines. */
|
||||
short falloff_type; /* Using MOD_WVG_MAPPING_* defines. */
|
||||
|
||||
/* Padding... */
|
||||
short pad_s1;
|
||||
|
@ -69,9 +69,9 @@ EnumPropertyItem modifier_type_items[] ={
|
||||
{eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""},
|
||||
{eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""},
|
||||
{eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""},
|
||||
{eModifierType_WeightVGEdit, "WEIGHT_VGEDIT", ICON_MOD_WEIGHTVG, "WeightVG Edit", ""},
|
||||
{eModifierType_WeightVGMix, "WEIGHT_VGMIX", ICON_MOD_WEIGHTVG, "WeightVG Mix", ""},
|
||||
{eModifierType_WeightVGProximity, "WEIGHT_VGPROXIMITY", ICON_MOD_WEIGHTVG, "WeightVG Proximity", ""},
|
||||
{eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""},
|
||||
{eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""},
|
||||
{eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Proximity", ""},
|
||||
{0, "", 0, "Deform", ""},
|
||||
{eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""},
|
||||
{eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""},
|
||||
@ -188,11 +188,11 @@ static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr)
|
||||
case eModifierType_Warp:
|
||||
return &RNA_WarpModifier;
|
||||
case eModifierType_WeightVGEdit:
|
||||
return &RNA_WeightVGEditModifier;
|
||||
return &RNA_VertexWeightEditModifier;
|
||||
case eModifierType_WeightVGMix:
|
||||
return &RNA_WeightVGMixModifier;
|
||||
return &RNA_VertexWeightMixModifier;
|
||||
case eModifierType_WeightVGProximity:
|
||||
return &RNA_WeightVGProximityModifier;
|
||||
return &RNA_VertexWeightProximityModifier;
|
||||
default:
|
||||
return &RNA_Modifier;
|
||||
}
|
||||
@ -2552,7 +2552,7 @@ static void rna_def_modifier_weightvg_mask(BlenderRNA *brna, StructRNA *srna)
|
||||
|
||||
static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
|
||||
{
|
||||
static EnumPropertyItem weightvg_edit_mapping_mode_items[] = {
|
||||
static EnumPropertyItem weightvg_edit_falloff_type_items[] = {
|
||||
{MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", ""},
|
||||
{MOD_WVG_MAPPING_CURVE, "CURVE", ICON_RNDCURVE, "Custom Curve", ""},
|
||||
{MOD_WVG_MAPPING_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
|
||||
@ -2566,11 +2566,11 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna= RNA_def_struct(brna, "WeightVGEditModifier", "Modifier");
|
||||
srna= RNA_def_struct(brna, "VertexWeightEditModifier", "Modifier");
|
||||
RNA_def_struct_ui_text(srna, "WeightVG Edit Modifier",
|
||||
"Edit the weights of vertices in a group.");
|
||||
RNA_def_struct_sdna(srna, "WeightVGEditModifierData");
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_WEIGHTVG);
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_VERTEX_WEIGHT);
|
||||
|
||||
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
|
||||
@ -2578,9 +2578,9 @@ 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, "mapping_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, weightvg_edit_mapping_mode_items);
|
||||
RNA_def_property_ui_text(prop, "Mapping Mode", "How weights are mapped to there new values.");
|
||||
prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, weightvg_edit_falloff_type_items);
|
||||
RNA_def_property_ui_text(prop, "Falloff Type", "How weights are mapped to there new values.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "use_add", PROP_BOOLEAN, PROP_NONE);
|
||||
@ -2650,11 +2650,11 @@ static void rna_def_modifier_weightvgmix(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna= RNA_def_struct(brna, "WeightVGMixModifier", "Modifier");
|
||||
srna= RNA_def_struct(brna, "VertexWeightMixModifier", "Modifier");
|
||||
RNA_def_struct_ui_text(srna, "WeightVG Mix Modifier",
|
||||
"Mix the weights of two vertex groups.");
|
||||
RNA_def_struct_sdna(srna, "WeightVGMixModifierData");
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_WEIGHTVG);
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_VERTEX_WEIGHT);
|
||||
|
||||
prop= RNA_def_property(srna, "vertex_group_a", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "defgrp_name_a");
|
||||
@ -2712,7 +2712,7 @@ static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
|
||||
{MOD_WVG_PROXIMITY_GEOM_FACES, "FACE", ICON_FACESEL, "Face", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static EnumPropertyItem weightvg_proximity_mapping_mode_items[] = {
|
||||
static EnumPropertyItem weightvg_proximity_falloff_type_items[] = {
|
||||
{MOD_WVG_MAPPING_NONE, "LINEAR", ICON_LINCURVE, "Linear", ""},
|
||||
/* No curve mapping here! */
|
||||
{MOD_WVG_MAPPING_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
|
||||
@ -2726,12 +2726,12 @@ static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna= RNA_def_struct(brna, "WeightVGProximityModifier", "Modifier");
|
||||
srna= RNA_def_struct(brna, "VertexWeightProximityModifier", "Modifier");
|
||||
RNA_def_struct_ui_text(srna, "WeightVG Proximity Modifier",
|
||||
"Set the weights of vertices in a group from a target object's "
|
||||
"distance.");
|
||||
RNA_def_struct_sdna(srna, "WeightVGProximityModifierData");
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_WEIGHTVG);
|
||||
RNA_def_struct_ui_icon(srna, ICON_MOD_VERTEX_WEIGHT);
|
||||
|
||||
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
|
||||
@ -2769,9 +2769,9 @@ static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Highest Dist", "Distance mapping to weight 1.0.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
prop= RNA_def_property(srna, "mapping_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, weightvg_proximity_mapping_mode_items);
|
||||
RNA_def_property_ui_text(prop, "Mapping Mode", "How weights are mapped to there new values.");
|
||||
prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, weightvg_proximity_falloff_type_items);
|
||||
RNA_def_property_ui_text(prop, "Falloff Type", "How weights are mapped to there new values.");
|
||||
RNA_def_property_update(prop, 0, "rna_Modifier_update");
|
||||
|
||||
/* Common masking properties. */
|
||||
|
@ -63,16 +63,16 @@
|
||||
* vertex index (in case the weight tables do not cover the whole vertices...).
|
||||
* cmap might be NULL, in which case curve mapping mode will return unmodified data.
|
||||
*/
|
||||
void weightvg_do_map(int num, float *new_w, short mode, CurveMapping *cmap)
|
||||
void weightvg_do_map(int num, float *new_w, short falloff_type, CurveMapping *cmap)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Return immediately, if we have nothing to do! */
|
||||
/* Also security checks... */
|
||||
if(((mode == MOD_WVG_MAPPING_CURVE) && (cmap == NULL))
|
||||
|| !ELEM7(mode, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_SHARP, MOD_WVG_MAPPING_SMOOTH,
|
||||
MOD_WVG_MAPPING_ROOT, MOD_WVG_MAPPING_SPHERE, MOD_WVG_MAPPING_RANDOM,
|
||||
MOD_WVG_MAPPING_STEP))
|
||||
if(((falloff_type == MOD_WVG_MAPPING_CURVE) && (cmap == NULL))
|
||||
|| !ELEM7(falloff_type, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_SHARP, MOD_WVG_MAPPING_SMOOTH,
|
||||
MOD_WVG_MAPPING_ROOT, MOD_WVG_MAPPING_SPHERE, MOD_WVG_MAPPING_RANDOM,
|
||||
MOD_WVG_MAPPING_STEP))
|
||||
return;
|
||||
|
||||
/* Map each weight (vertex) to its new value, accordingly to the chosen mode. */
|
||||
@ -81,7 +81,7 @@ void weightvg_do_map(int num, float *new_w, short mode, CurveMapping *cmap)
|
||||
|
||||
/* Code borrowed from the warp modifier. */
|
||||
/* Closely matches PROP_SMOOTH and similar. */
|
||||
switch(mode) {
|
||||
switch(falloff_type) {
|
||||
case MOD_WVG_MAPPING_CURVE:
|
||||
fac = curvemapping_evaluateF(cmap, 0, fac);
|
||||
break;
|
||||
|
@ -62,7 +62,7 @@ static void initData(ModifierData *md)
|
||||
{
|
||||
WeightVGEditModifierData *wmd = (WeightVGEditModifierData*) md;
|
||||
wmd->edit_flags = 0;
|
||||
wmd->mapping_mode = MOD_WVG_MAPPING_NONE;
|
||||
wmd->falloff_type = MOD_WVG_MAPPING_NONE;
|
||||
wmd->default_weight = 0.0f;
|
||||
|
||||
wmd->cmap_curve = curvemapping_add(1, 0.0, 0.0, 1.0, 1.0);
|
||||
@ -90,7 +90,7 @@ static void copyData(ModifierData *md, ModifierData *target)
|
||||
BLI_strncpy(twmd->defgrp_name, wmd->defgrp_name, sizeof(twmd->defgrp_name));
|
||||
|
||||
twmd->edit_flags = wmd->edit_flags;
|
||||
twmd->mapping_mode = wmd->mapping_mode;
|
||||
twmd->falloff_type = wmd->falloff_type;
|
||||
twmd->default_weight = wmd->default_weight;
|
||||
|
||||
twmd->cmap_curve = curvemapping_copy(wmd->cmap_curve);
|
||||
@ -268,8 +268,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
}
|
||||
|
||||
/* Do mapping. */
|
||||
if (wmd->mapping_mode != MOD_WVG_MAPPING_NONE) {
|
||||
weightvg_do_map(numVerts, new_w, wmd->mapping_mode, wmd->cmap_curve);
|
||||
if (wmd->falloff_type != MOD_WVG_MAPPING_NONE) {
|
||||
weightvg_do_map(numVerts, new_w, wmd->falloff_type, wmd->cmap_curve);
|
||||
}
|
||||
|
||||
/* Do masking. */
|
||||
@ -298,7 +298,7 @@ static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
|
||||
|
||||
|
||||
ModifierTypeInfo modifierType_WeightVGEdit = {
|
||||
/* name */ "WeightVGEdit",
|
||||
/* name */ "VertexWeightEdit",
|
||||
/* structName */ "WeightVGEditModifierData",
|
||||
/* structSize */ sizeof(WeightVGEditModifierData),
|
||||
/* type */ eModifierTypeType_Nonconstructive,
|
||||
|
@ -438,7 +438,7 @@ static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
|
||||
|
||||
|
||||
ModifierTypeInfo modifierType_WeightVGMix = {
|
||||
/* name */ "WeightVGMix",
|
||||
/* name */ "VertexWeightMix",
|
||||
/* structName */ "WeightVGMixModifierData",
|
||||
/* structSize */ sizeof(WeightVGMixModifierData),
|
||||
/* type */ eModifierTypeType_Nonconstructive,
|
||||
|
@ -220,7 +220,7 @@ static void initData(ModifierData *md)
|
||||
wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJECT;
|
||||
wmd->proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS;
|
||||
|
||||
wmd->mapping_mode = MOD_WVG_MAPPING_NONE;
|
||||
wmd->falloff_type = MOD_WVG_MAPPING_NONE;
|
||||
|
||||
wmd->mask_constant = 1.0f;
|
||||
wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */
|
||||
@ -238,7 +238,7 @@ static void copyData(ModifierData *md, ModifierData *target)
|
||||
twmd->proximity_flags = wmd->proximity_flags;
|
||||
twmd->proximity_ob_target = wmd->proximity_ob_target;
|
||||
|
||||
twmd->mapping_mode = wmd->mapping_mode;
|
||||
twmd->falloff_type = wmd->falloff_type;
|
||||
|
||||
twmd->mask_constant = wmd->mask_constant;
|
||||
BLI_strncpy(twmd->mask_defgrp_name, wmd->mask_defgrp_name, sizeof(twmd->mask_defgrp_name));
|
||||
@ -498,7 +498,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
|
||||
wmd->mask_tex_mapping, wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
|
||||
|
||||
/* Map distances to weights. */
|
||||
do_map(org_w, numIdx, wmd->min_dist, wmd->max_dist, wmd->mapping_mode);
|
||||
do_map(org_w, numIdx, wmd->min_dist, wmd->max_dist, wmd->falloff_type);
|
||||
|
||||
/* Update vgroup. Note we never add nor remove vertices from vgroup here. */
|
||||
weightvg_update_vg(dvert, defgrp_idx, numIdx, indices, org_w, 0, 0.0f, 0, 0.0f);
|
||||
@ -522,7 +522,7 @@ static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
|
||||
|
||||
|
||||
ModifierTypeInfo modifierType_WeightVGProximity = {
|
||||
/* name */ "WeightVGProximity",
|
||||
/* name */ "VertexWeightProximity",
|
||||
/* structName */ "WeightVGProximityModifierData",
|
||||
/* structSize */ sizeof(WeightVGProximityModifierData),
|
||||
/* type */ eModifierTypeType_Nonconstructive,
|
||||
|
Loading…
Reference in New Issue
Block a user