[Bf-blender-cvs] [ae358f92e6e] fracture_modifier: fix, anim bind rotation was calculated incorrectly

Martin Felke noreply at git.blender.org
Tue Feb 20 13:46:19 CET 2018


Commit: ae358f92e6ea9fd82ee9ec463fb31cae005952a9
Author: Martin Felke
Date:   Tue Feb 20 13:45:53 2018 +0100
Branches: fracture_modifier
https://developer.blender.org/rBae358f92e6ea9fd82ee9ec463fb31cae005952a9

fix, anim bind rotation was calculated incorrectly

===================================================================

M	source/blender/blenkernel/intern/fracture.c
M	source/blender/makesdna/DNA_modifier_types.h

===================================================================

diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 4777a831f50..68717b78466 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -4159,6 +4159,7 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
 					fmd->anim_bind[i].v = v1;
 					fmd->anim_bind[i].v1 = v2;
 					fmd->anim_bind[i].v2 = v3;
+					fmd->anim_bind[i].poly = n.index;
 					mi->rigidbody->flag |= RBO_FLAG_KINEMATIC_BOUND;
 				}
 				else {
@@ -4258,13 +4259,17 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
 							rotation_between_vecs_to_quat(quat, vec, no);
 						}
 						else {
-							float rot[4], iquat[4];
+							float rot[4], iquat[4], fno[3];
+							MPoly *mp = mpoly + fmd->anim_bind[i].poly;
+							MLoop *ml = mloop + mp->loopstart;
+							BKE_mesh_calc_poly_normal(mp, ml, mvert, fno);
+
 							tri_to_quat_ex(rot, mvert[fmd->anim_bind[i].v].co,
 											  mvert[fmd->anim_bind[i].v1].co,
 											  mvert[fmd->anim_bind[i].v2].co,
-											  fmd->anim_bind[i].no);
+											  fno);
 							invert_qt_qt(iquat, fmd->anim_bind[i].quat);
-							mul_qt_qtqt(quat, iquat, rot);
+							mul_qt_qtqt(quat, rot, iquat);
 						}
 					}
 				}
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index cd52b0757db..bed112b8761 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1703,6 +1703,7 @@ typedef struct AnimBind {
 	int v1;
 	int v2;
 	int mi;
+	int poly;
 	float offset[3];
 	float no[3];
 	float quat[4];



More information about the Bf-blender-cvs mailing list