diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 16 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_modifier.c | 54 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_weightvgmix.c | 68 |
3 files changed, 70 insertions, 68 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index d3c3ba2f93b..1714ae2a018 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -841,10 +841,10 @@ typedef struct WeightVGMixModifierData { /* XXX Note: I tried to keep everything logically ordered – provided the * alignment constraints... */ - char defgrp_name[32]; /* Name of vertex group to modify/weight. */ - char defgrp_name2[32]; /* Name of other vertex group to mix in. */ - float default_weight; /* Default weight value for first vgroup. */ - float default_weight2; /* Default weight value to mix in. */ + char defgrp_name_a[32]; /* Name of vertex group to modify/weight. */ + char defgrp_name_b[32]; /* Name of other vertex group to mix in. */ + float default_weight_a; /* Default weight value for first vgroup. */ + float default_weight_b; /* Default weight value to mix in. */ char mix_mode; /* How second vgroups weights affect first ones */ char mix_set; /* What vertices to affect. */ @@ -876,10 +876,10 @@ typedef struct WeightVGMixModifierData { /* What vertices to affect. */ #define MOD_WVG_SET_ALL 1 /* Affect all vertices. */ -#define MOD_WVG_SET_ORG 2 /* Affect only vertices in first vgroup. */ -#define MOD_WVG_SET_NEW 3 /* Affect only vertices in second vgroup. */ -#define MOD_WVG_SET_UNION 4 /* Affect only vertices in one vgroup or the other. */ -#define MOD_WVG_SET_INTER 5 /* Affect only vertices in both vgroups. */ +#define MOD_WVG_SET_A 2 /* Affect only vertices in first vgroup. */ +#define MOD_WVG_SET_B 3 /* Affect only vertices in second vgroup. */ +#define MOD_WVG_SET_OR 4 /* Affect only vertices in one vgroup or the other. */ +#define MOD_WVG_SET_AND 5 /* Affect only vertices in both vgroups. */ typedef struct WeightVGProximityModifierData { ModifierData modifier; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index a071284467b..169288cfed3 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -394,7 +394,7 @@ static void rna_WeightVGModifier_vgroup_set(PointerRNA *ptr, const char *value) } else if (md->type == eModifierType_WeightVGMix) { WeightVGMixModifierData *wmd= (WeightVGMixModifierData*)md; - rna_object_vgroup_name_set(ptr, value, wmd->defgrp_name, sizeof(wmd->defgrp_name)); + rna_object_vgroup_name_set(ptr, value, wmd->defgrp_name_a, sizeof(wmd->defgrp_name_a)); } else if (md->type == eModifierType_WeightVGProximity) { WeightVGProximityModifierData *wmd= (WeightVGProximityModifierData*)md; @@ -422,7 +422,7 @@ static void rna_WeightVGModifier_mask_vgroup_set(PointerRNA *ptr, const char *va static void rna_WeightVGMixModifier_vgroup2_set(PointerRNA *ptr, const char *value) { WeightVGMixModifierData *wmd= (WeightVGMixModifierData*)ptr->data; - rna_object_vgroup_name_set(ptr, value, wmd->defgrp_name2, sizeof(wmd->defgrp_name2)); + rna_object_vgroup_name_set(ptr, value, wmd->defgrp_name_b, sizeof(wmd->defgrp_name_b)); } static void rna_MappingInfo_uvlayer_set(PointerRNA *ptr, const char *value) @@ -2510,7 +2510,7 @@ static void rna_def_modifier_weightvg_mask(BlenderRNA *brna, StructRNA *srna) 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, -100000.0, 100000.0, 10, 0); + RNA_def_property_ui_range(prop, -1.0, 1.0, 10, 0); RNA_def_property_ui_text(prop, "Influence", "Global influence of current modifications on vgroup."); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -2600,8 +2600,8 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna) /* RNA_def_property_update(prop, 0, "rna_Modifier_update");*/ prop= RNA_def_property(srna, "default_weight", 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_range(prop, 0.0, 1.0f); + RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 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"); @@ -2641,16 +2641,16 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna) 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_range(prop, 0.0, 1.0); + RNA_def_property_ui_range(prop, 0.0, 1.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, "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_range(prop, 0.0, 1.0); + RNA_def_property_ui_range(prop, 0.0, 1.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"); @@ -2685,10 +2685,10 @@ static void rna_def_modifier_weightvgmix(BlenderRNA *brna) static EnumPropertyItem weightvg_mix_set_items[] = { {MOD_WVG_SET_ALL, "ALL", 0, "All vertices", ""}, - {MOD_WVG_SET_ORG, "ORG", 0, "Vertices from vgroup 1", ""}, - {MOD_WVG_SET_NEW, "NEW", 0, "Vertices from vgroup 2", ""}, - {MOD_WVG_SET_UNION, "UNION", 0, "Vertices from one group", ""}, - {MOD_WVG_SET_INTER, "INTER", 0, "Vertices from both groups", ""}, + {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", ""}, {0, NULL, 0, NULL, NULL}}; StructRNA *srna; @@ -2700,29 +2700,29 @@ static void rna_def_modifier_weightvgmix(BlenderRNA *brna) RNA_def_struct_sdna(srna, "WeightVGMixModifierData"); RNA_def_struct_ui_icon(srna, ICON_MOD_WEIGHTVG); - prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); - RNA_def_property_string_sdna(prop, NULL, "defgrp_name"); - RNA_def_property_ui_text(prop, "Vertex Group", "First vertex group name."); + prop= RNA_def_property(srna, "vertex_group_a", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "defgrp_name_a"); + RNA_def_property_ui_text(prop, "Vertex Group A", "First vertex group name."); 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, "vertex_group2", PROP_STRING, PROP_NONE); - RNA_def_property_string_sdna(prop, NULL, "defgrp_name2"); - RNA_def_property_ui_text(prop, "Vertex Group 2", "Second vertex group name."); + prop= RNA_def_property(srna, "vertex_group_b", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "defgrp_name_b"); + RNA_def_property_ui_text(prop, "Vertex Group B", "Second vertex group name."); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WeightVGMixModifier_vgroup2_set"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "default_weight", 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, "Default Weight", "Default weight a vertex will have if " + 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_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_weight2", 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, "Default Weight 2", "Default weight a vertex will have if " + 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_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"); diff --git a/source/blender/modifiers/intern/MOD_weightvgmix.c b/source/blender/modifiers/intern/MOD_weightvgmix.c index a26a3d1e7f4..ad70e8ab55c 100644 --- a/source/blender/modifiers/intern/MOD_weightvgmix.c +++ b/source/blender/modifiers/intern/MOD_weightvgmix.c @@ -118,10 +118,10 @@ static void initData(ModifierData *md) { WeightVGMixModifierData *wmd = (WeightVGMixModifierData*) md; - wmd->default_weight = 0.0; - wmd->default_weight2 = 0.0; + wmd->default_weight_a = 0.0f; + wmd->default_weight_b = 0.0f; wmd->mix_mode = MOD_WVG_MIX_SET; - wmd->mix_set = MOD_WVG_SET_INTER; + wmd->mix_set = MOD_WVG_SET_AND; wmd->mask_constant = 1.0f; wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */ @@ -133,10 +133,10 @@ static void copyData(ModifierData *md, ModifierData *target) WeightVGMixModifierData *wmd = (WeightVGMixModifierData*) md; WeightVGMixModifierData *twmd = (WeightVGMixModifierData*) target; - BLI_strncpy(twmd->defgrp_name, wmd->defgrp_name, sizeof(twmd->defgrp_name)); - BLI_strncpy(twmd->defgrp_name2, wmd->defgrp_name2, sizeof(twmd->defgrp_name2)); - twmd->default_weight = wmd->default_weight; - twmd->default_weight2 = wmd->default_weight2; + BLI_strncpy(twmd->defgrp_name_a, wmd->defgrp_name_a, sizeof(twmd->defgrp_name_a)); + BLI_strncpy(twmd->defgrp_name_b, wmd->defgrp_name_b, sizeof(twmd->defgrp_name_b)); + twmd->default_weight_a = wmd->default_weight_a; + twmd->default_weight_b = wmd->default_weight_b; twmd->mix_mode = wmd->mix_mode; twmd->mix_set = wmd->mix_set; @@ -217,7 +217,7 @@ static int isDisabled(ModifierData *md, int UNUSED(useRenderParams)) { WeightVGMixModifierData *wmd = (WeightVGMixModifierData*) md; /* If no vertex group, bypass. */ - return (wmd->defgrp_name == NULL); + return (wmd->defgrp_name_a == NULL); } static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *derivedData, @@ -248,12 +248,12 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der return dm; /* Get vgroup idx from its name. */ - defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name); + defgrp_idx = defgroup_name_index(ob, wmd->defgrp_name_a); if (defgrp_idx < 0) return dm; /* Get seconf vgroup idx from its name, if given. */ - if (wmd->defgrp_name2[0] != (char)0) { - defgrp_idx2 = defgroup_name_index(ob, wmd->defgrp_name2); + if (wmd->defgrp_name_b[0] != (char)0) { + defgrp_idx2 = defgroup_name_index(ob, wmd->defgrp_name_b); if (defgrp_idx2 < 0) return dm; } @@ -305,7 +305,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der /* Find out which vertices to work on. */ tidx = MEM_mallocN(sizeof(int) * numVerts, "WeightVGMix Modifier, tidx"); switch (wmd->mix_set) { - case MOD_WVG_SET_ORG: + case MOD_WVG_SET_A: /* All vertices in first vgroup. */ for (i = 0; i < numVerts; i++) { for (j = 0; j < dvert[i].totweight; j++) { @@ -316,7 +316,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der } } break; - case MOD_WVG_SET_NEW: + case MOD_WVG_SET_B: /* All vertices in second vgroup. */ for (i = 0; i < numVerts; i++) { for (j = 0; j < dvert[i].totweight; j++) { @@ -327,7 +327,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der } } break; - case MOD_WVG_SET_UNION: + case MOD_WVG_SET_OR: /* All vertices in one vgroup or the other. */ for (i = 0; i < numVerts; i++) { for (j = 0; j < dvert[i].totweight; j++) { @@ -338,27 +338,29 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der } } break; - case MOD_WVG_SET_INTER: + case MOD_WVG_SET_AND: /* All vertices in both vgroups. */ for (i = 0; i < numVerts; i++) { - char idx1 = 0; - char idx2 = 0; + int idx1 = FALSE; + int idx2 = FALSE; for (j = 0; j < dvert[i].totweight; j++) { if(dvert[i].dw[j].def_nr == defgrp_idx) { - if (idx2) { + if (idx2 == TRUE) { tidx[numIdx++] = i; break; } - else - idx1 = 1; + else { + idx1 = TRUE; + } } else if(dvert[i].dw[j].def_nr == defgrp_idx2) { - if (idx1) { + if (idx1 == TRUE) { tidx[numIdx++] = i; break; } - else - idx2 = 1; + else { + idx2 = TRUE; + } } } } @@ -382,27 +384,27 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der /* Mix weights. */ for (i = 0; i < numIdx; i++) { float weight2 = 0.0; - char w1 = 0; - char w2 = 0; + int w1 = FALSE; + int w2 = FALSE; int idx = indices ? indices[i] : i; for (j = 0; j < dvert[idx].totweight; j++) { if(dvert[idx].dw[j].def_nr == defgrp_idx) { org_w[i] = dvert[idx].dw[j].weight; - w1 = 1; - if (w2) + w1 = TRUE; + if (w2 == TRUE) break; } else if(dvert[idx].dw[j].def_nr == defgrp_idx2) { weight2 = dvert[idx].dw[j].weight; - w2 = 1; - if (w1) + w2 = TRUE; + if (w1 == TRUE) break; } } - if (w1 == 0) - org_w[i] = wmd->default_weight; - if (w2 == 0) - weight2 = wmd->default_weight2; + if (w1 == FALSE) + org_w[i] = wmd->default_weight_a; + if (w2 == FALSE) + weight2 = wmd->default_weight_b; new_w[i] = mix_weight(org_w[i], weight2, wmd->mix_mode); } |