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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-11-18 19:52:00 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-11-18 19:52:00 +0400
commit539c94a0511fb98fdbae0ce78c815c45a805e36e (patch)
tree2ac8ef459046ea530af7d802d1381953ff7b6c87 /source/blender/blenkernel/intern/constraint.c
parent02ce6fd59ca237f0bbaebfb50be9f74039d99e93 (diff)
Camera: some code refactoring, use an intermediate CameraParams struct instead
of long list of variables everywhere. Intention is to also let 3d view use this eventually, instead of duplicating code.
Diffstat (limited to 'source/blender/blenkernel/intern/constraint.c')
-rw-r--r--source/blender/blenkernel/intern/constraint.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index abcd6903686..6f29594f811 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -3988,7 +3988,7 @@ static void followtrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
MovieTrackingMarker *marker;
float vec[3], disp[3], axis[3], mat[4][4];
float aspect= (scene->r.xsch*scene->r.xasp) / (scene->r.ysch*scene->r.yasp);
- float sensor_x, sensor_y, lens, len, d, ortho_scale= 1.0f;
+ float len, d;
where_is_object_mat(scene, camob, mat);
@@ -4006,23 +4006,20 @@ static void followtrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
len= len_v3(disp);
if (len > FLT_EPSILON) {
- float pos[2], rmat[4][4], shiftx= 0.0f, shifty= 0.0f, clipsta= 0.0f, clipend= 0.0f;
- short is_ortho= 0, sensor_fit= CAMERA_SENSOR_FIT_AUTO;
- Camera *cam= NULL;
+ CameraParams params;
+ float pos[2], rmat[4][4];
user.framenr= scene->r.cfra;
marker= BKE_tracking_get_marker(track, user.framenr);
add_v2_v2v2(pos, marker->pos, track->offset);
- object_camera_intrinsics(camob, &cam, &is_ortho, &shiftx, &shifty, &clipsta, &clipend, &lens, &sensor_x, &sensor_y, &sensor_fit);
-
- if (is_ortho) {
- if (cam)
- ortho_scale= cam->ortho_scale;
-
- vec[0]= ortho_scale * (pos[0]-0.5f+shiftx);
- vec[1]= ortho_scale * (pos[1]-0.5f+shifty);
+ camera_params_init(&params);
+ camera_params_from_object(&params, camob);
+
+ if (params.is_ortho) {
+ vec[0]= params.ortho_scale * (pos[0]-0.5f+params.shiftx);
+ vec[1]= params.ortho_scale * (pos[1]-0.5f+params.shifty);
vec[2]= -len;
if (aspect > 1.0f) vec[1] /= aspect;
@@ -4037,10 +4034,10 @@ static void followtrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
copy_v3_v3(cob->matrix[3], disp);
}
else {
- d= (len*sensor_x) / (2.0f*lens);
+ d= (len*params.sensor_x) / (2.0f*params.lens);
- vec[0]= d*(2.0f*(pos[0]+shiftx)-1.0f);
- vec[1]= d*(2.0f*(pos[1]+shifty)-1.0f);
+ vec[0]= d*(2.0f*(pos[0]+params.shiftx)-1.0f);
+ vec[1]= d*(2.0f*(pos[1]+params.shifty)-1.0f);
vec[2]= -len;
if (aspect > 1.0f) vec[1] /= aspect;