Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-02-01 18:27:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-01 19:24:47 +0400
commit798e684c7c4d8b7c0c31a5f892ae43189e8d1b8c (patch)
tree9c24c491b0344b87b54c0690ea047ba6d4efa1e4 /source
parent5fce3457b79bccbbcfe9fad0ed6f1a04643cf71b (diff)
Math lib: simplify size_to_mat4 and use in b_bone_spline_setup
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/armature.c12
-rw-r--r--source/blender/blenlib/intern/math_matrix.c21
2 files changed, 20 insertions, 13 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 829c0c7dd00..c44479a4b08 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -431,21 +431,17 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
float h1[3], h2[3], scale[3], length, hlength1, hlength2, roll1 = 0.0f, roll2;
float mat3[3][3], imat[4][4], posemat[4][4], scalemat[4][4], iscalemat[4][4];
float data[MAX_BBONE_SUBDIV + 1][4], *fp;
- int a, do_scale = 0;
+ int a;
+ bool do_scale = false;
length = bone->length;
if (!rest) {
/* check if we need to take non-uniform bone scaling into account */
- scale[0] = len_v3(pchan->pose_mat[0]);
- scale[1] = len_v3(pchan->pose_mat[1]);
- scale[2] = len_v3(pchan->pose_mat[2]);
+ mat4_to_size(scale, pchan->pose_mat);
if (fabsf(scale[0] - scale[1]) > 1e-6f || fabsf(scale[1] - scale[2]) > 1e-6f) {
- unit_m4(scalemat);
- scalemat[0][0] = scale[0];
- scalemat[1][1] = scale[1];
- scalemat[2][2] = scale[2];
+ size_to_mat4(scalemat, scale);
invert_m4_m4(iscalemat, scalemat);
length *= scale[1];
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index c185fe1a16d..eb5c5f4aab4 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -1236,11 +1236,22 @@ void size_to_mat3(float mat[3][3], const float size[3])
void size_to_mat4(float mat[4][4], const float size[3])
{
- float tmat[3][3];
-
- size_to_mat3(tmat, size);
- unit_m4(mat);
- copy_m4_m3(mat, tmat);
+ mat[0][0] = size[0];
+ mat[0][1] = 0.0f;
+ mat[0][2] = 0.0f;
+ mat[0][3] = 0.0f;
+ mat[1][0] = 0.0f;
+ mat[1][1] = size[1];
+ mat[1][2] = 0.0f;
+ mat[1][3] = 0.0f;
+ mat[2][0] = 0.0f;
+ mat[2][1] = 0.0f;
+ mat[2][2] = size[2];
+ mat[2][3] = 0.0f;
+ mat[3][0] = 0.0f;
+ mat[3][1] = 0.0f;
+ mat[3][2] = 0.0f;
+ mat[3][3] = 1.0f;
}
void mat3_to_size(float size[3], float mat[3][3])