[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54431] trunk/blender: add option not to calculate tessellation faces when converting an object to a mesh .

Campbell Barton ideasman42 at gmail.com
Sun Feb 10 14:44:19 CET 2013


Revision: 54431
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54431
Author:   campbellbarton
Date:     2013-02-10 13:44:18 +0000 (Sun, 10 Feb 2013)
Log Message:
-----------
add option not to calculate tessellation faces when converting an object to a mesh. (OBJ export no longer needs, so save some CPU cycles and skip tessellation)

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_util.h
    trunk/blender/source/blender/makesrna/intern/rna_internal.h
    trunk/blender/source/blender/makesrna/intern/rna_main_api.c
    trunk/blender/source/blender/makesrna/intern/rna_object_api.c

Modified: trunk/blender/intern/cycles/blender/blender_util.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_util.h	2013-02-10 13:14:51 UTC (rev 54430)
+++ trunk/blender/intern/cycles/blender/blender_util.h	2013-02-10 13:44:18 UTC (rev 54431)
@@ -41,7 +41,7 @@
 
 static inline BL::Mesh object_to_mesh(BL::BlendData data, BL::Object object, BL::Scene scene, bool apply_modifiers, bool render)
 {
-	return data.meshes.new_from_object(scene, object, apply_modifiers, (render)? 2: 1);
+	return data.meshes.new_from_object(scene, object, apply_modifiers, (render)? 2: 1, true);
 }
 
 static inline void colorramp_to_array(BL::ColorRamp ramp, float4 *data, int size)

Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h	2013-02-10 13:14:51 UTC (rev 54430)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h	2013-02-10 13:44:18 UTC (rev 54431)
@@ -398,7 +398,9 @@
 int rna_parameter_size(struct PropertyRNA *parm);
 int rna_parameter_size_alloc(struct PropertyRNA *parm);
 
-struct Mesh *rna_Main_meshes_new_from_object(struct Main *bmain, struct ReportList *reports, struct Scene *sce, struct Object *ob, int apply_modifiers, int settings);
+struct Mesh *rna_Main_meshes_new_from_object(
+        struct Main *bmain, struct ReportList *reports, struct Scene *sce,
+        struct Object *ob, int apply_modifiers, int settings, int calc_tessface);
 
 /* XXX, these should not need to be defined here~! */
 struct MTex *rna_mtex_texture_slots_add(struct ID *self, struct bContext *C, struct ReportList *reports);

Modified: trunk/blender/source/blender/makesrna/intern/rna_main_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2013-02-10 13:14:51 UTC (rev 54430)
+++ trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2013-02-10 13:44:18 UTC (rev 54431)
@@ -37,6 +37,7 @@
 #include "DNA_modifier_types.h"
 
 #include "BLI_path_util.h"
+#include "BLI_utildefines.h"
 
 #include "RNA_define.h"
 #include "RNA_access.h"
@@ -263,7 +264,9 @@
 
 /* copied from Mesh_getFromObject and adapted to RNA interface */
 /* settings: 1 - preview, 2 - render */
-Mesh *rna_Main_meshes_new_from_object(Main *bmain, ReportList *reports, Scene *sce, Object *ob, int apply_modifiers, int settings)
+Mesh *rna_Main_meshes_new_from_object(
+        Main *bmain, ReportList *reports, Scene *sce,
+        Object *ob, int apply_modifiers, int settings, int calc_tessface)
 {
 	Mesh *tmpmesh;
 	Curve *tmpcu = NULL, *copycu;
@@ -446,8 +449,10 @@
 			break;
 	} /* end copy materials */
 
-	/* cycles and exporters rely on this still */
-	BKE_mesh_tessface_ensure(tmpmesh);
+	if (calc_tessface) {
+		/* cycles and exporters rely on this still */
+		BKE_mesh_tessface_ensure(tmpmesh);
+	}
 
 	/* make sure materials get updated in objects */
 	test_object_materials(&tmpmesh->id);
@@ -1138,6 +1143,7 @@
 	RNA_def_property_flag(parm, PROP_REQUIRED);
 	parm = RNA_def_enum(func, "settings", mesh_type_items, 0, "", "Modifier settings to apply");
 	RNA_def_property_flag(parm, PROP_REQUIRED);
+	RNA_def_boolean(func, "calc_tessface", true, "Calculate Tessellation", "Calculate tessellation faces");
 	parm = RNA_def_pointer(func, "mesh", "Mesh", "",
 	                       "Mesh created from object, remove it if it is only used for export");
 	RNA_def_function_return(func, parm);

Modified: trunk/blender/source/blender/makesrna/intern/rna_object_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object_api.c	2013-02-10 13:14:51 UTC (rev 54430)
+++ trunk/blender/source/blender/makesrna/intern/rna_object_api.c	2013-02-10 13:44:18 UTC (rev 54431)
@@ -34,6 +34,8 @@
 #include <string.h>
 #include <time.h>
 
+#include "BLI_utildefines.h"
+
 #include "RNA_define.h"
 
 #include "DNA_constraint_types.h"
@@ -109,9 +111,11 @@
 
 /* copied from Mesh_getFromObject and adapted to RNA interface */
 /* settings: 0 - preview, 1 - render */
-static Mesh *rna_Object_to_mesh(Object *ob, ReportList *reports, Scene *sce, int apply_modifiers, int settings)
+static Mesh *rna_Object_to_mesh(
+        Object *ob, ReportList *reports, Scene *sce,
+        int apply_modifiers, int settings, int calc_tessface)
 {
-	return rna_Main_meshes_new_from_object(G.main, reports, sce, ob, apply_modifiers, settings);
+	return rna_Main_meshes_new_from_object(G.main, reports, sce, ob, apply_modifiers, settings, calc_tessface);
 }
 
 /* mostly a copy from convertblender.c */
@@ -442,6 +446,7 @@
 	RNA_def_property_flag(parm, PROP_REQUIRED);
 	parm = RNA_def_enum(func, "settings", mesh_type_items, 0, "", "Modifier settings to apply");
 	RNA_def_property_flag(parm, PROP_REQUIRED);
+	RNA_def_boolean(func, "calc_tessface", true, "Calculate Tessellation", "Calculate tessellation faces");
 	parm = RNA_def_pointer(func, "mesh", "Mesh", "",
 	                       "Mesh created from object, remove it if it is only used for export");
 	RNA_def_function_return(func, parm);




More information about the Bf-blender-cvs mailing list