[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42655] branches/soc-2011-tomato/source/ blender/blenkernel/intern/constraint.c: Camera tracking: follow track + 3d position now respects camera orientation and object offset
Sergey Sharybin
sergey.vfx at gmail.com
Thu Dec 15 21:38:47 CET 2011
Revision: 42655
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42655
Author: nazgul
Date: 2011-12-15 20:38:45 +0000 (Thu, 15 Dec 2011)
Log Message:
-----------
Camera tracking: follow track + 3d position now respects camera orientation and object offset
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/blenkernel/intern/constraint.c
Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/constraint.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/constraint.c 2011-12-15 20:38:23 UTC (rev 42654)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/constraint.c 2011-12-15 20:38:45 UTC (rev 42655)
@@ -3974,27 +3974,27 @@
if (data->flag & FOLLOWTRACK_USE_3D_POSITION) {
if (track->flag & TRACK_HAS_BUNDLE) {
MovieTracking *tracking= &clip->tracking;
- float pos[3], mat[4][4];
+ float obmat[4][4], mat[4][4];
+ copy_m4_m4(obmat, cob->matrix);
+
if((tracking_object->flag&TRACKING_OBJECT_CAMERA)==0) {
- float obmat[4][4], imat[4][4];
+ float imat[4][4];
copy_m4_m4(mat, camob->obmat);
- BKE_tracking_get_interpolated_camera(tracking, tracking_object, scene->r.cfra, obmat);
+ BKE_tracking_get_interpolated_camera(tracking, tracking_object, scene->r.cfra, imat);
+ invert_m4(imat);
- invert_m4_m4(imat, obmat);
- mul_m4_m4m4(mat, imat, mat);
+ mul_serie_m4(cob->matrix, obmat, mat, imat, NULL, NULL, NULL, NULL, NULL);
+ translate_m4(cob->matrix, track->bundle_pos[0], track->bundle_pos[1], track->bundle_pos[2]);
}
else {
- BKE_get_tracking_mat(cob->scene, NULL, mat);
+ BKE_get_tracking_mat(cob->scene, camob, mat);
+
+ mul_m4_m4m4(cob->matrix, mat, obmat);
+ translate_m4(cob->matrix, track->bundle_pos[0], track->bundle_pos[1], track->bundle_pos[2]);
}
-
- mul_v3_m4v3(pos, mat, track->bundle_pos);
-
- cob->matrix[3][0] = pos[0];
- cob->matrix[3][1] = pos[1];
- cob->matrix[3][2] = pos[2];
}
}
else {
More information about the Bf-blender-cvs
mailing list