Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/tracking_util.c
| Show First 20 Lines • Show All 367 Lines • ▼ Show 20 Lines | for (int i = 0; i < 4; i++) { | ||||
| marker->pattern_corners[i][0] -= marker_unified[0]; | marker->pattern_corners[i][0] -= marker_unified[0]; | ||||
| marker->pattern_corners[i][1] -= marker_unified[1]; | marker->pattern_corners[i][1] -= marker_unified[1]; | ||||
| } | } | ||||
| marker->pos[0] += marker_unified[0]; | marker->pos[0] += marker_unified[0]; | ||||
| marker->pos[1] += marker_unified[1]; | marker->pos[1] += marker_unified[1]; | ||||
| } | } | ||||
| void tracking_principal_point_normalized_to_pixel(const float principal_point_normalized[2], | |||||
| const int frame_width, | |||||
| const int frame_height, | |||||
| float r_principal_point_pixel[2]) | |||||
| { | |||||
| const float frame_center_x = ((float)frame_width) / 2; | |||||
| const float frame_center_y = ((float)frame_height) / 2; | |||||
| r_principal_point_pixel[0] = frame_center_x + principal_point_normalized[0] * frame_center_x; | |||||
| r_principal_point_pixel[1] = frame_center_y + principal_point_normalized[1] * frame_center_y; | |||||
| } | |||||
| void tracking_principal_point_pixel_to_normalized(const float principal_point_pixel[2], | |||||
| const int frame_width, | |||||
| const int frame_height, | |||||
| float r_principal_point_normalized[2]) | |||||
| { | |||||
| const float frame_center_x = ((float)frame_width) / 2; | |||||
| const float frame_center_y = ((float)frame_height) / 2; | |||||
| r_principal_point_normalized[0] = (principal_point_pixel[0] - frame_center_x) / frame_center_x; | |||||
| r_principal_point_normalized[1] = (principal_point_pixel[1] - frame_center_y) / frame_center_y; | |||||
| } | |||||
| /** \} */ | /** \} */ | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name General Purpose Utility Functions | /** \name General Purpose Utility Functions | ||||
| * \{ */ | * \{ */ | ||||
| void tracking_marker_insert_disabled(MovieTrackingTrack *track, | void tracking_marker_insert_disabled(MovieTrackingTrack *track, | ||||
| const MovieTrackingMarker *ref_marker, | const MovieTrackingMarker *ref_marker, | ||||
| ▲ Show 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | static void distortion_model_parameters_from_options( | ||||
| /* Libmv returned distortion model which is not known to Blender. This is a logical error in code | /* Libmv returned distortion model which is not known to Blender. This is a logical error in code | ||||
| * and Blender side is to be updated to match Libmv. */ | * and Blender side is to be updated to match Libmv. */ | ||||
| BLI_assert_msg(0, "Unknown distortion model"); | BLI_assert_msg(0, "Unknown distortion model"); | ||||
| } | } | ||||
| void tracking_cameraIntrinscisOptionsFromTracking( | void tracking_cameraIntrinscisOptionsFromTracking( | ||||
| MovieTracking *tracking, | MovieTracking *tracking, | ||||
| int calibration_width, | const int calibration_width, | ||||
| int calibration_height, | const int calibration_height, | ||||
| libmv_CameraIntrinsicsOptions *camera_intrinsics_options) | libmv_CameraIntrinsicsOptions *camera_intrinsics_options) | ||||
| { | { | ||||
| MovieTrackingCamera *camera = &tracking->camera; | MovieTrackingCamera *camera = &tracking->camera; | ||||
| float aspy = 1.0f / tracking->camera.pixel_aspect; | const float aspy = 1.0f / tracking->camera.pixel_aspect; | ||||
| float principal_px[2]; | |||||
| tracking_principal_point_normalized_to_pixel( | |||||
| camera->principal_point, calibration_width, calibration_height, principal_px); | |||||
| camera_intrinsics_options->num_threads = BLI_system_thread_count(); | camera_intrinsics_options->num_threads = BLI_system_thread_count(); | ||||
| camera_intrinsics_options->focal_length = camera->focal; | camera_intrinsics_options->focal_length = camera->focal; | ||||
| camera_intrinsics_options->principal_point_x = camera->principal[0]; | camera_intrinsics_options->principal_point_x = principal_px[0]; | ||||
| camera_intrinsics_options->principal_point_y = camera->principal[1] * aspy; | camera_intrinsics_options->principal_point_y = principal_px[1] * aspy; | ||||
| distortion_model_parameters_from_tracking(camera, camera_intrinsics_options); | distortion_model_parameters_from_tracking(camera, camera_intrinsics_options); | ||||
| camera_intrinsics_options->image_width = calibration_width; | camera_intrinsics_options->image_width = calibration_width; | ||||
| camera_intrinsics_options->image_height = (int)(calibration_height * aspy); | camera_intrinsics_options->image_height = (int)(calibration_height * aspy); | ||||
| } | } | ||||
| void tracking_trackingCameraFromIntrinscisOptions( | void tracking_trackingCameraFromIntrinscisOptions( | ||||
| MovieTracking *tracking, const libmv_CameraIntrinsicsOptions *camera_intrinsics_options) | MovieTracking *tracking, const libmv_CameraIntrinsicsOptions *camera_intrinsics_options) | ||||
| { | { | ||||
| float aspy = 1.0f / tracking->camera.pixel_aspect; | float aspy = 1.0f / tracking->camera.pixel_aspect; | ||||
| MovieTrackingCamera *camera = &tracking->camera; | MovieTrackingCamera *camera = &tracking->camera; | ||||
| camera->focal = camera_intrinsics_options->focal_length; | camera->focal = camera_intrinsics_options->focal_length; | ||||
| camera->principal[0] = camera_intrinsics_options->principal_point_x; | const float principal_px[2] = {camera_intrinsics_options->principal_point_x, | ||||
| camera->principal[1] = camera_intrinsics_options->principal_point_y / (double)aspy; | camera_intrinsics_options->principal_point_y / (double)aspy}; | ||||
| tracking_principal_point_pixel_to_normalized(principal_px, | |||||
| camera_intrinsics_options->image_width, | |||||
| camera_intrinsics_options->image_height, | |||||
| camera->principal_point); | |||||
| distortion_model_parameters_from_options(camera_intrinsics_options, camera); | distortion_model_parameters_from_options(camera_intrinsics_options, camera); | ||||
| } | } | ||||
| MovieTrackingMarker *tracking_get_keyframed_marker(MovieTrackingTrack *track, | MovieTrackingMarker *tracking_get_keyframed_marker(MovieTrackingTrack *track, | ||||
| int current_frame, | int current_frame, | ||||
| bool backwards) | bool backwards) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 384 Lines • Show Last 20 Lines | |||||