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
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2011-12-19 19:12:33 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2011-12-19 19:12:33 +0400
commit1dc74acc123721d366e3628663ed029db5761e4d (patch)
tree46b71ffd884917dd96445990f61003feed60f201 /source/blender/blenkernel/intern/tracking.c
parent737648a0bf6aa38707adf0d444902cab981f86cf (diff)
Object tracking: configurable scale for object solution
Added slider to define scale of object solution which is used to define "depth" of object relative to camera position. This slider effects on all "users" of object solution such as bundles display, constrained objects and so. Added new operator called "Set Solution Scale" to set real scale for object solution based on real distance between two bundles reconstructed for this object. New slider and operator can be found on "Object" panel in toolbox when in reconstruction mode and active tracking object isn't a camera.
Diffstat (limited to 'source/blender/blenkernel/intern/tracking.c')
-rw-r--r--source/blender/blenkernel/intern/tracking.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index 06680dc9da4..0b58d1562fa 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -86,6 +86,7 @@ void BKE_tracking_init_settings(MovieTracking *tracking)
tracking->settings.keyframe1= 1;
tracking->settings.keyframe2= 30;
tracking->settings.dist= 1;
+ tracking->settings.object_distance= 1;
tracking->stabilization.scaleinf= 1.0f;
tracking->stabilization.locinf= 1.0f;
@@ -1920,6 +1921,16 @@ static int reconstruction_camera_index(MovieTrackingReconstruction *reconstructi
return -1;
}
+static void scale_reconstructed_camera(MovieTrackingObject *object, float mat[4][4])
+{
+ if((object->flag&TRACKING_OBJECT_CAMERA)==0) {
+ float smat[4][4];
+
+ scale_m4_fl(smat, 1.0f/object->scale);
+ mult_m4_m4m4(mat, mat, smat);
+ }
+}
+
MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(MovieTracking *tracking,
MovieTrackingObject *object, int framenr)
{
@@ -1958,6 +1969,8 @@ void BKE_tracking_get_interpolated_camera(MovieTracking *tracking, MovieTracking
} else {
copy_m4_m4(mat, cameras[a].mat);
}
+
+ scale_reconstructed_camera(object, mat);
}
void BKE_get_tracking_mat(Scene *scene, Object *ob, float mat[4][4])