diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/movieclip.c | 12 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking_util.c | 18 |
2 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 3ea0f800178..364e6c9bfe4 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -687,6 +687,8 @@ typedef struct MovieClipCache { float polynomial_k[3]; float division_k[2]; float nuke_k[2]; + float brown_k[4]; + float brown_p[2]; short distortion_model; bool undistortion_used; @@ -1134,10 +1136,18 @@ static bool check_undistortion_cache_flags(const MovieClip *clip) if (!equals_v2v2(&camera->division_k1, cache->postprocessed.division_k)) { return false; } + if (!equals_v2v2(&camera->nuke_k1, cache->postprocessed.nuke_k)) { return false; } + if (!equals_v4v4(&camera->brown_k1, cache->postprocessed.brown_k)) { + return false; + } + if (!equals_v2v2(&camera->brown_p1, cache->postprocessed.brown_p)) { + return false; + } + return true; } @@ -1240,6 +1250,8 @@ static void put_postprocessed_frame_to_cache( copy_v3_v3(cache->postprocessed.polynomial_k, &camera->k1); copy_v2_v2(cache->postprocessed.division_k, &camera->division_k1); copy_v2_v2(cache->postprocessed.nuke_k, &camera->nuke_k1); + copy_v4_v4(cache->postprocessed.brown_k, &camera->brown_k1); + copy_v2_v2(cache->postprocessed.brown_p, &camera->brown_p1); cache->postprocessed.undistortion_used = true; } else { diff --git a/source/blender/blenkernel/intern/tracking_util.c b/source/blender/blenkernel/intern/tracking_util.c index dcaa9082026..bc6c94343b5 100644 --- a/source/blender/blenkernel/intern/tracking_util.c +++ b/source/blender/blenkernel/intern/tracking_util.c @@ -457,6 +457,15 @@ static void distortion_model_parameters_from_tracking( camera_intrinsics_options->nuke_k1 = camera->nuke_k1; camera_intrinsics_options->nuke_k2 = camera->nuke_k2; return; + case TRACKING_DISTORTION_MODEL_BROWN: + camera_intrinsics_options->distortion_model = LIBMV_DISTORTION_MODEL_BROWN; + camera_intrinsics_options->brown_k1 = camera->brown_k1; + camera_intrinsics_options->brown_k2 = camera->brown_k2; + camera_intrinsics_options->brown_k3 = camera->brown_k3; + camera_intrinsics_options->brown_k4 = camera->brown_k4; + camera_intrinsics_options->brown_p1 = camera->brown_p1; + camera_intrinsics_options->brown_p2 = camera->brown_p2; + return; } /* Unknown distortion model, which might be due to opening newer file in older Blender. @@ -491,6 +500,15 @@ static void distortion_model_parameters_from_options( camera->nuke_k1 = camera_intrinsics_options->nuke_k1; camera->nuke_k2 = camera_intrinsics_options->nuke_k2; return; + case LIBMV_DISTORTION_MODEL_BROWN: + camera->distortion_model = TRACKING_DISTORTION_MODEL_BROWN; + camera->brown_k1 = camera_intrinsics_options->brown_k1; + camera->brown_k2 = camera_intrinsics_options->brown_k2; + camera->brown_k3 = camera_intrinsics_options->brown_k3; + camera->brown_k4 = camera_intrinsics_options->brown_k4; + camera->brown_p1 = camera_intrinsics_options->brown_p1; + camera->brown_p2 = camera_intrinsics_options->brown_p2; + return; } /* Libmv returned distortion model which is not known to Blender. This is a logical error in code |