[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