diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2013-02-15 19:36:02 +0400 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2013-02-15 19:36:02 +0400 |
commit | 9fe4dbb9f10e611d2c24eccbfbcbb9260370b8bd (patch) | |
tree | b551c97cc153d3dc76e9d307255b1cc6d0040211 /source/blender/collada/collada_internal.cpp | |
parent | 313dfbe35daaba41d6410042b12d1a1b63cb31a1 (diff) |
Fix: Collada Import files with X_UP and Y_UP axis where imported with wrong orientation
Diffstat (limited to 'source/blender/collada/collada_internal.cpp')
-rw-r--r-- | source/blender/collada/collada_internal.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/source/blender/collada/collada_internal.cpp b/source/blender/collada/collada_internal.cpp index 64c567384a1..85f98dad437 100644 --- a/source/blender/collada/collada_internal.cpp +++ b/source/blender/collada/collada_internal.cpp @@ -33,7 +33,14 @@ UnitConverter::UnitConverter() : unit(), up_axis(COLLADAFW::FileInfo::Z_UP) { - /* pass */ + unit_m4(x_up_mat4); + rotate_m4(x_up_mat4, 'Y', -0.5 * M_PI); + + unit_m4(y_up_mat4); + rotate_m4(y_up_mat4, 'X', 0.5 * M_PI); + + unit_m4(z_up_mat4); + } void UnitConverter::read_asset(const COLLADAFW::FileInfo *asset) @@ -102,6 +109,21 @@ void UnitConverter::mat4_to_dae_double(double out[4][4], float in[4][4]) out[i][j] = mat[i][j]; } +float(&UnitConverter::get_rotation())[4][4] +{ + switch(up_axis) { + case COLLADAFW::FileInfo::X_UP: + return x_up_mat4; + break; + case COLLADAFW::FileInfo::Y_UP: + return y_up_mat4; + break; + default: + return z_up_mat4; + break; + } +} + void TransformBase::decompose(float mat[4][4], float *loc, float eul[3], float quat[4], float *size) { mat4_to_size(size, mat); |