[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54459] trunk/blender/source/blender: Collada Importer: Some code cleanup and optimization of the rescale function

Gaia Clary gaia.clary at machinimatrix.org
Mon Feb 11 12:12:44 CET 2013


Revision: 54459
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54459
Author:   gaiaclary
Date:     2013-02-11 11:12:44 +0000 (Mon, 11 Feb 2013)
Log Message:
-----------
Collada Importer: Some code cleanup and optimization of the rescale function

Modified Paths:
--------------
    trunk/blender/source/blender/collada/collada_utils.cpp
    trunk/blender/source/blender/editors/io/io_collada.c

Modified: trunk/blender/source/blender/collada/collada_utils.cpp
===================================================================
--- trunk/blender/source/blender/collada/collada_utils.cpp	2013-02-11 10:56:21 UTC (rev 54458)
+++ trunk/blender/source/blender/collada/collada_utils.cpp	2013-02-11 11:12:44 UTC (rev 54459)
@@ -307,13 +307,13 @@
 /**
 	Calculate a rescale factor such that the imported scene's scale
 	is preserved. I.e. 1 meter in the import will also be
-	1 meter in the curretn scene.
+	1 meter in the current scene.
 	XXX : I am not sure if it is correct to map 1 Blender Unit
 	to 1 Meter for unit type NONE. But it looks reasonable to me.
 */
 void bc_match_scale(std::vector<Object *> *objects_done, 
 					Scene &sce, 
-					UnitConverter &unit_converter) {
+					UnitConverter &bc_unit) {
 
 	Object *ob = NULL;
 
@@ -333,34 +333,33 @@
 		case USER_UNIT_NONE:
 			bl_scale = 1.0; // map 1 Blender unit to 1 Meter
 			break;
+
 		case USER_UNIT_METRIC:
 			bl_scale = RNA_property_float_get(&unit_settings, scale_ptr);
 			break;
-		default:
+
+		default :
 			bl_scale = RNA_property_float_get(&unit_settings, scale_ptr);
 			// it looks like the conversion to Imperial is done implicitly.
 			// So nothing to do here.
 			break;
 	}
 	
-	float size_mat3[3][3];
-	float size_mat4[4][4];
+	float scale_conv = bc_unit.getLinearMeter() / bl_scale;
 
-	float scale_conv = unit_converter.getLinearMeter() / bl_scale;
-
 	float rescale[3];
 	rescale[0] = rescale[1] = rescale[2] = scale_conv;
 
-	size_to_mat3(size_mat3, rescale);
-	copy_m4_m3(size_mat4, size_mat3);
+	float size_mat4[4][4];
+	size_to_mat4(size_mat4, rescale);
 
-	for (std::vector<Object *>::iterator it = objects_done->begin(); it != objects_done->end(); ++it) {
+	for (std::vector<Object *>::iterator it = objects_done->begin();
+			it != objects_done->end();
+			++it) 
+	{
 		ob = *it;
-		mult_m4_m4m4(ob->obmat, ob->obmat, size_mat4);
-		ob->obmat[3][0] = ob->loc[0] * rescale[0];
-		ob->obmat[3][1] = ob->loc[1] * rescale[1];
-		ob->obmat[3][2] = ob->loc[2] * rescale[2];
+		mult_m4_m4m4(ob->obmat, size_mat4, ob->obmat);
 		BKE_object_apply_mat4(ob, ob->obmat, 0, 0);
 	}
 
-}
+}
\ No newline at end of file

Modified: trunk/blender/source/blender/editors/io/io_collada.c
===================================================================
--- trunk/blender/source/blender/editors/io/io_collada.c	2013-02-11 10:56:21 UTC (rev 54458)
+++ trunk/blender/source/blender/editors/io/io_collada.c	2013-02-11 11:12:44 UTC (rev 54459)
@@ -319,7 +319,7 @@
 	import_units = RNA_boolean_get(op->ptr, "import_units");
 
 	RNA_string_get(op->ptr, "filepath", filename);
-	if (collada_import( C, filename, import_units)) {
+	if (collada_import(C, filename, import_units)) {
 		return OPERATOR_FINISHED;
 	}
 	else {




More information about the Bf-blender-cvs mailing list