[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