diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-23 04:23:11 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-23 04:23:11 +0400 |
commit | 40449b1994301081f96d014df626a5375e020c76 (patch) | |
tree | 20220d8b071310fda8a0ab851c7a8f7bcc3ed8a2 /source/blender/blenkernel/intern/object.c | |
parent | fa0211df269a3398dd70467982f9e129c79e501b (diff) | |
parent | 3ca00cbf541d0283e91dc454866a5f24576271be (diff) |
Merged changes in the trunk up to revision 53280.
Diffstat (limited to 'source/blender/blenkernel/intern/object.c')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index f0819d426fb..d13d456a183 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1853,12 +1853,19 @@ static void ob_parbone(Object *ob, Object *par, float mat[4][4]) } /* get bone transform */ - copy_m4_m4(mat, pchan->pose_mat); + if (pchan->bone->flag & BONE_RELATIVE_PARENTING) { + /* the new option uses the root - expected bahaviour, but differs from old... */ + /* XXX check on version patching? */ + copy_m4_m4(mat, pchan->chan_mat); + } + else { + copy_m4_m4(mat, pchan->pose_mat); - /* but for backwards compatibility, the child has to move to the tail */ - copy_v3_v3(vec, mat[1]); - mul_v3_fl(vec, pchan->bone->length); - add_v3_v3(mat[3], vec); + /* but for backwards compatibility, the child has to move to the tail */ + copy_v3_v3(vec, mat[1]); + mul_v3_fl(vec, pchan->bone->length); + add_v3_v3(mat[3], vec); + } } static void give_parvert(Object *par, int nr, float vec[3]) @@ -1936,7 +1943,7 @@ static void give_parvert(Object *par, int nr, float vec[3]) } else if (ELEM(par->type, OB_CURVE, OB_SURF)) { Curve *cu = par->data; - ListBase *nurb = BKE_curve_nurbs_get(cu);; + ListBase *nurb = BKE_curve_nurbs_get(cu); BKE_nurbList_index_get_co(nurb, nr, vec); } |