diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-11-18 19:52:00 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-11-18 19:52:00 +0400 |
commit | 539c94a0511fb98fdbae0ce78c815c45a805e36e (patch) | |
tree | 2ac8ef459046ea530af7d802d1381953ff7b6c87 /source/blender/blenkernel/intern/constraint.c | |
parent | 02ce6fd59ca237f0bbaebfb50be9f74039d99e93 (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.c | 27 |
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(¶ms); + camera_params_from_object(¶ms, 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; |