[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46757] trunk/blender: Add smooth-shading option for remesh modifier.

Nicholas Bishop nicholasbishop at gmail.com
Fri May 18 08:10:48 CEST 2012


Revision: 46757
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46757
Author:   nicholasbishop
Date:     2012-05-18 06:10:47 +0000 (Fri, 18 May 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_remesh.c

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2012-05-18 02:12:47 UTC (rev 46756)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2012-05-18 06:10:47 UTC (rev 46757)
@@ -838,6 +838,7 @@
         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

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-05-18 02:12:47 UTC (rev 46756)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-05-18 06:10:47 UTC (rev 46757)
@@ -1032,6 +1032,7 @@
 
 typedef enum RemeshModifierFlags {
 	MOD_REMESH_FLOOD_FILL = 1,
+	MOD_REMESH_SMOOTH_SHADING = 2,
 } RemeshModifierFlags;
 
 typedef enum RemeshModifierMode {

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-05-18 02:12:47 UTC (rev 46756)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-05-18 06:10:47 UTC (rev 46757)
@@ -3000,6 +3000,11 @@
 	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)

Modified: trunk/blender/source/blender/modifiers/intern/MOD_remesh.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_remesh.c	2012-05-18 02:12:47 UTC (rev 46756)
+++ trunk/blender/source/blender/modifiers/intern/MOD_remesh.c	2012-05-18 06:10:47 UTC (rev 46757)
@@ -190,6 +190,16 @@
 	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;




More information about the Bf-blender-cvs mailing list