Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-05-18 10:10:47 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-05-18 10:10:47 +0400
commitb5a6be37f1f3ab7bd3d9e27f1bc88657296c4f5c (patch)
tree9b3a545b40cfcc4607900781a39849cbf61123e9 /source
parent5fe5a8c2838edc62585e0ed72da23fbeb08ae5e1 (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.h1
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c5
-rw-r--r--source/blender/modifiers/intern/MOD_remesh.c10
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;