forked from bartvdbraak/blender
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.
This commit is contained in:
parent
5fe5a8c283
commit
b5a6be37f1
@ -838,6 +838,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
if md.mode == 'SHARP':
|
||||
layout.prop(md, "sharpness")
|
||||
|
||||
layout.prop(md, "smooth_shading")
|
||||
layout.prop(md, "remove_disconnected_pieces")
|
||||
row = layout.row()
|
||||
row.active = md.remove_disconnected_pieces
|
||||
|
@ -1032,6 +1032,7 @@ typedef struct DynamicPaintModifierData {
|
||||
|
||||
typedef enum RemeshModifierFlags {
|
||||
MOD_REMESH_FLOOD_FILL = 1,
|
||||
MOD_REMESH_SMOOTH_SHADING = 2,
|
||||
} RemeshModifierFlags;
|
||||
|
||||
typedef enum RemeshModifierMode {
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user