diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-17 03:39:29 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-17 03:39:29 +0300 |
commit | f2453ecdcd179fb696494d03501c0dd149ee1ed2 (patch) | |
tree | 23fdd70d99c95b5efab3fb258db77b68501aa059 /source/blender/collada/AnimationImporter.cpp | |
parent | 09eb790f4bbc89ceac0dda949f2f42a3c94883a4 (diff) | |
parent | 5bc2c17161cfc23ca2d8c58e7e24458c277100ae (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/collada/AnimationImporter.cpp')
-rw-r--r-- | source/blender/collada/AnimationImporter.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index 65acce41046..e63b70edcf5 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -780,6 +780,9 @@ void AnimationImporter::apply_matrix_curves(Object *ob, std::vector<FCurve *>& a std::vector<float>::iterator it; + float qref[4]; + unit_qt(qref); + // sample values at each frame for (it = frames.begin(); it != frames.end(); it++) { float fra = *it; @@ -814,8 +817,11 @@ void AnimationImporter::apply_matrix_curves(Object *ob, std::vector<FCurve *>& a } float rot[4], loc[3], scale[3]; + transpose_m4(mat); + + bc_rotate_from_reference_quat(rot, qref, mat); + copy_qt_qt(qref, rot); - mat4_to_quat(rot, mat); #if 0 for (int i = 0 ; i < 4; i++) { rot[i] = RAD2DEGF(rot[i]); @@ -1190,6 +1196,9 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob, std::vector<FCurv std::sort(frames.begin(), frames.end()); + float qref[4]; + unit_qt(qref); + std::vector<float>::iterator it; // sample values at each frame @@ -1223,7 +1232,9 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob, std::vector<FCurv float rot[4], loc[3], scale[3]; - mat4_to_quat(rot, mat); + bc_rotate_from_reference_quat(rot, qref, mat); + copy_qt_qt(qref, rot); + copy_v3_v3(loc, mat[3]); mat4_to_size(scale, mat); |