diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-05-18 10:10:47 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-05-18 10:10:47 +0400 |
commit | b5a6be37f1f3ab7bd3d9e27f1bc88657296c4f5c (patch) | |
tree | 9b3a545b40cfcc4607900781a39849cbf61123e9 /source | |
parent | 5fe5a8c2838edc62585e0ed72da23fbeb08ae5e1 (diff) |
Add smooth-shading option for remesh modifier.
The remesh modifier doesn't currently get any data from original
faces, so even if the input mesh was entirely smooth none of the
output faces would be. Solved by adding a new
dna-flag/rna-bool/UI-checkbox to smooth shade the output.
Requested by Daniel Salazar.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_modifier.c | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_remesh.c | 10 |
3 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 30280e95646..8e39ded84d5 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -1032,6 +1032,7 @@ typedef struct DynamicPaintModifierData { typedef enum RemeshModifierFlags { MOD_REMESH_FLOOD_FILL = 1, + MOD_REMESH_SMOOTH_SHADING = 2, } RemeshModifierFlags; typedef enum RemeshModifierMode { diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 07ea69fc260..38a0147b07c 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -3000,6 +3000,11 @@ static void rna_def_modifier_remesh(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_REMESH_FLOOD_FILL); RNA_def_property_ui_text(prop, "Remove Disconnected Pieces", ""); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "smooth_shading", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_REMESH_SMOOTH_SHADING); + RNA_def_property_ui_text(prop, "Smooth Shading", "Output faces with smooth shading rather than flat shaded"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); } static void rna_def_modifier_ocean(BlenderRNA *brna) diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c index 517791e3e73..57966b5824b 100644 --- a/source/blender/modifiers/intern/MOD_remesh.c +++ b/source/blender/modifiers/intern/MOD_remesh.c @@ -190,6 +190,16 @@ static DerivedMesh *applyModifier(ModifierData *md, result = output->dm; MEM_freeN(output); + if (rmd->flag & MOD_REMESH_SMOOTH_SHADING) { + MPoly *mpoly = CDDM_get_polys(result); + int i, totpoly = result->getNumPolys(result); + + /* Apply smooth shading to output faces */ + for (i = 0; i < totpoly; i++) { + mpoly[i].flag |= ME_SMOOTH; + } + } + CDDM_calc_edges(result); CDDM_calc_normals(result); return result; |