diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-12-22 00:08:35 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-12-22 00:13:48 +0400 |
commit | d5263c37faf73d0f6cc2466ac0806fef972119fb (patch) | |
tree | 9d5c86e3cd3a39301a6d40586324bda0155241dc /source/blender/makesrna/intern/rna_modifier.c | |
parent | 01acc2a7dcb3ba3bd99f75aac77c14619b10c539 (diff) |
Modifier: New Wireframe Modifier
Based on patch originally by Thomas Beck,
uses options similar to solidify.
Diffstat (limited to 'source/blender/makesrna/intern/rna_modifier.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_modifier.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 7427d8d54cf..04055bf0a53 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -80,6 +80,7 @@ EnumPropertyItem modifier_type_items[] = { {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""}, {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, {eModifierType_Triangulate, "TRIANGULATE", ICON_MOD_TRIANGULATE, "Triangulate", ""}, + {eModifierType_Wireframe, "WIREFRAME", ICON_MOD_WIREFRAME, "Wireframe", "Generates a wireframe on the edges of a mesh"}, {0, "", 0, N_("Deform"), ""}, {eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""}, {eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""}, @@ -241,6 +242,8 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr) return &RNA_MeshCacheModifier; case eModifierType_LaplacianDeform: return &RNA_LaplacianDeformModifier; + case eModifierType_Wireframe: + return &RNA_WireframeModifier; /* Default */ case eModifierType_None: case eModifierType_ShapeKey: @@ -486,6 +489,12 @@ static void RNA_WarpModifier_vgroup_set(PointerRNA *ptr, const char *value) rna_object_vgroup_name_set(ptr, value, tmd->defgrp_name, sizeof(tmd->defgrp_name)); } +static void RNA_WireframeModifier_vgroup_set(PointerRNA *ptr, const char *value) +{ + WireframeModifierData *wmd = (WireframeModifierData *)ptr->data; + rna_object_vgroup_name_set(ptr, value, wmd->defgrp_name, sizeof(wmd->defgrp_name)); +} + static void rna_WeightVGModifier_mask_uvlayer_set(PointerRNA *ptr, const char *value) { ModifierData *md = (ModifierData *)ptr->data; @@ -3700,6 +3709,90 @@ static void rna_def_modifier_laplaciandeform(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Modifier_update"); } +static void rna_def_modifier_wireframe(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "WireframeModifier", "Modifier"); + RNA_def_struct_ui_text(srna, "Wireframe Modifier", "Wireframe effect modifier"); + RNA_def_struct_sdna(srna, "WireframeModifierData"); + RNA_def_struct_ui_icon(srna, ICON_MOD_WIREFRAME); + + + prop = RNA_def_property(srna, "thickness", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "offset"); + RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); + RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01, 4); + RNA_def_property_ui_text(prop, "Thickness", "Thickness factor"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "thickness_vertex_group", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "offset_fac_vg"); + RNA_def_property_range(prop, 0.0, 1.0); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Vertex Group Factor", + "Thickness factor to use for zero vertex group influence"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "offset_fac"); + RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); + RNA_def_property_ui_range(prop, -1, 1, 0.1, 4); + RNA_def_property_ui_text(prop, "Offset", "Offset the thickness from the center"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "use_replace", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WIREFRAME_REPLACE); + RNA_def_property_ui_text(prop, "Replace", "Remove original geometry"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "use_boundary", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WIREFRAME_BOUNDARY); + RNA_def_property_ui_text(prop, "Boundary", "Support face boundaries"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "use_even_offset", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MESHCACHE_OFS_EVEN); + RNA_def_property_ui_text(prop, "Offset Even", "Scale the offset to give more even thickness"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MESHCACHE_OFS_RELATIVE); + RNA_def_property_ui_text(prop, "Offset Relative", "Scale the offset by surrounding geometry"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "use_crease", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MESHCACHE_CREASE); + RNA_def_property_ui_text(prop, "Offset Relative", "Crease hub edges for improved subsurf"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "crease_weight", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "crease_weight"); + RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); + RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.1, 1); + RNA_def_property_ui_text(prop, "Weigth", "Crease weight (if active)"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "material_offset", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "mat_ofs"); + RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX); + RNA_def_property_ui_text(prop, "Material Offset", "Offset material index of generated faces"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + + 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", "Vertex group name for selecting the affected areas"); + RNA_def_property_string_funcs(prop, NULL, NULL, "RNA_WireframeModifier_vgroup_set"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WIREFRAME_INVERT_VGROUP); + RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); +} + void RNA_def_modifier(BlenderRNA *brna) { StructRNA *srna; @@ -3811,6 +3904,7 @@ void RNA_def_modifier(BlenderRNA *brna) rna_def_modifier_triangulate(brna); rna_def_modifier_meshcache(brna); rna_def_modifier_laplaciandeform(brna); + rna_def_modifier_wireframe(brna); } #endif |