[Bf-blender-cvs] [368b74315a5] master: Collada - add flag to limit precision of exported data, mainly to simplify debugging

Gaia Clary noreply at git.blender.org
Mon Apr 3 10:48:30 CEST 2017


Commit: 368b74315a58f66187b924cbc646abd05ce6a2b7
Author: Gaia Clary
Date:   Mon Apr 3 10:48:00 2017 +0200
Branches: master
https://developer.blender.org/rB368b74315a58f66187b924cbc646abd05ce6a2b7

Collada - add flag to limit precision of exported data, mainly to simplify debugging

===================================================================

M	source/blender/collada/ArmatureExporter.cpp
M	source/blender/collada/ControllerExporter.cpp
M	source/blender/collada/ExportSettings.h
M	source/blender/collada/collada.cpp
M	source/blender/collada/collada.h
M	source/blender/editors/io/io_collada.c
M	source/blender/makesrna/intern/rna_scene_api.c

===================================================================

diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp
index 49722873a91..9348f3b3285 100644
--- a/source/blender/collada/ArmatureExporter.cpp
+++ b/source/blender/collada/ArmatureExporter.cpp
@@ -304,7 +304,9 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW:
 		}
 	}
 
-	bc_sanitize_mat(mat, 6); // XXX: Make this optional ?
+	if (this->export_settings->limit_precision)
+		bc_sanitize_mat(mat, 6);
+
 	TransformWriter::add_node_transform(node, mat, NULL);
 
 }
diff --git a/source/blender/collada/ControllerExporter.cpp b/source/blender/collada/ControllerExporter.cpp
index 5444c9dfa6b..1c2642e8313 100644
--- a/source/blender/collada/ControllerExporter.cpp
+++ b/source/blender/collada/ControllerExporter.cpp
@@ -533,7 +533,8 @@ std::string ControllerExporter::add_inv_bind_mats_source(Object *ob_arm, ListBas
 
 			invert_m4_m4(mat, world);
 			converter.mat4_to_dae(inv_bind_mat, mat);
-			bc_sanitize_mat(inv_bind_mat, 6); // XXX: Make this optional ?
+			if (this->export_settings->limit_precision)
+				bc_sanitize_mat(inv_bind_mat, 6);
 			source.appendValues(inv_bind_mat);
 		}
 	}
diff --git a/source/blender/collada/ExportSettings.h b/source/blender/collada/ExportSettings.h
index 03e380dc198..de91f68a492 100644
--- a/source/blender/collada/ExportSettings.h
+++ b/source/blender/collada/ExportSettings.h
@@ -53,6 +53,7 @@ public:
 	BC_export_transformation_type export_transformation_type;
 
 	bool open_sim;
+	bool limit_precision;
 	bool keep_bind_info;
 
 	char *filepath;
diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp
index bf3fcf0c3f0..bfe3180909b 100644
--- a/source/blender/collada/collada.cpp
+++ b/source/blender/collada/collada.cpp
@@ -90,7 +90,7 @@ int collada_export(Scene *sce,
 				   int sort_by_name,
 				   BC_export_transformation_type export_transformation_type,
 				   int open_sim,
-
+				   int limit_precision,
 				   int keep_bind_info)
 {
 	ExportSettings export_settings;
@@ -116,8 +116,8 @@ int collada_export(Scene *sce,
 	export_settings.sort_by_name               = sort_by_name != 0;
 	export_settings.export_transformation_type = export_transformation_type;
 	export_settings.open_sim                   = open_sim != 0;
-
-	export_settings.keep_bind_info = keep_bind_info;
+	export_settings.limit_precision = limit_precision != 0;
+	export_settings.keep_bind_info = keep_bind_info !=0;
 
 	int includeFilter = OB_REL_NONE;
 	if (export_settings.include_armatures) includeFilter |= OB_REL_MOD_ARMATURE;
diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h
index 09acc4a064b..8035af59c8b 100644
--- a/source/blender/collada/collada.h
+++ b/source/blender/collada/collada.h
@@ -85,6 +85,7 @@ int collada_export(struct Scene *sce,
                    BC_export_transformation_type export_transformation_type,
 
 				   int open_sim,
+				   int limit_precision,
 				   int keep_bind_info);
 
 #ifdef __cplusplus
diff --git a/source/blender/editors/io/io_collada.c b/source/blender/editors/io/io_collada.c
index b8794afbf85..139c9817437 100644
--- a/source/blender/editors/io/io_collada.c
+++ b/source/blender/editors/io/io_collada.c
@@ -99,6 +99,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
 	int export_transformation_type;
 
 	int open_sim;
+	int limit_precision;
 	int keep_bind_info;
 
 	int export_count;
@@ -150,6 +151,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
 	export_transformation_type = RNA_enum_get(op->ptr,    "export_transformation_type_selection");
 	open_sim                   = RNA_boolean_get(op->ptr, "open_sim");
 
+	limit_precision = RNA_boolean_get(op->ptr, "limit_precision");
 	keep_bind_info = RNA_boolean_get(op->ptr, "keep_bind_info");
 
 	/* get editmode results */
@@ -178,6 +180,7 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
 		export_transformation_type,
 
 		open_sim,
+		limit_precision,
 		keep_bind_info
 	);
 
@@ -276,9 +279,13 @@ static void uiCollada_exportSettings(uiLayout *layout, PointerRNA *imfptr)
 
 	row = uiLayoutRow(box, false);
 	uiItemR(row, imfptr, "sort_by_name", 0, NULL, ICON_NONE);
+
 	row = uiLayoutRow(box, false);
 	uiItemR(row, imfptr, "keep_bind_info", 0, NULL, ICON_NONE);
 
+	row = uiLayoutRow(box, false);
+	uiItemR(row, imfptr, "limit_precision", 0, NULL, ICON_NONE);
+
 }
 
 static void wm_collada_export_draw(bContext *UNUSED(C), wmOperator *op)
@@ -396,6 +403,9 @@ void WM_OT_collada_export(wmOperatorType *ot)
 	RNA_def_boolean(func, "open_sim", 0, "Export to SL/OpenSim",
 	                "Compatibility mode for SL, OpenSim and other compatible online worlds");
 
+	RNA_def_boolean(func, "limit_precision", 0,
+		"Limit Precision", "Reduce the precision of the exported data to 6 digits");
+
 	RNA_def_boolean(func, "keep_bind_info", 0,
 		"Keep Bind Info", "Store Bindpose information in custom bone properties for later use during Collada export");
 
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index f3146c9e6a8..9b202120b82 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -285,6 +285,7 @@ static void rna_Scene_collada_export(
         int sort_by_name,
         int export_transformation_type,
         int open_sim,
+        int limit_precision,
         int keep_bind_info)
 {
 	collada_export(scene,
@@ -311,6 +312,7 @@ static void rna_Scene_collada_export(
 
 		export_transformation_type,
 		open_sim,
+		limit_precision,
 		keep_bind_info);
 }
 
@@ -422,7 +424,12 @@ void RNA_api_scene(StructRNA *srna)
 	RNA_def_boolean(func, "open_sim", false,
 	                "Export to SL/OpenSim", "Compatibility mode for SL, OpenSim and other compatible online worlds");
 
-	RNA_def_boolean(func, "keep_bind_info", false, "Keep Bind Info",
+	RNA_def_boolean(func, "limit_precision", false,
+	                "Limit Precision",
+	                "Reduce the precision of the exported data to 6 digits");
+
+	RNA_def_boolean(func, "keep_bind_info", false,
+	                "Keep Bind Info",
 	                "Store bind pose information in custom bone properties for later use during Collada export");
 
 #endif




More information about the Bf-blender-cvs mailing list