Blender
V3.3
|
#include <limits.h>
#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_movieclip_types.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_fcurve.h"
#include "BKE_movieclip.h"
#include "BKE_tracking.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "libmv-capi.h"
#include "tracking_private.h"
Go to the source code of this file.
Classes | |
struct | MovieReconstructContext |
struct | ReconstructProgressData |
Typedefs | |
typedef struct MovieReconstructContext | MovieReconstructContext |
typedef struct ReconstructProgressData | ReconstructProgressData |
This file contains blender-side implementation of camera solver.
Definition in file tracking_solver.c.
typedef struct MovieReconstructContext MovieReconstructContext |
typedef struct ReconstructProgressData ReconstructProgressData |
bool BKE_tracking_reconstruction_check | ( | struct MovieTracking * | tracking, |
struct MovieTrackingObject * | object, | ||
char * | error_msg, | ||
int | error_size | ||
) |
Perform early check on whether everything is fine to start reconstruction.
Definition at line 313 of file tracking_solver.c.
References BLI_strncpy(), MovieTrackingSettings::motion_flag, N_, reconstruct_count_tracks_on_both_keyframes(), MovieTrackingSettings::reconstruction_flag, MovieTracking::settings, TRACKING_MOTION_MODAL, and TRACKING_USE_KEYFRAME_SELECTION.
Referenced by solve_camera_initjob().
void BKE_tracking_reconstruction_context_free | ( | struct MovieReconstructContext * | context | ) |
Free memory used by a reconstruction process.
Definition at line 428 of file tracking_solver.c.
References blender::compositor::context, libmv_reconstructionDestroy(), libmv_tracksDestroy(), MEM_freeN, NULL, and tracks_map_free().
Referenced by solve_camera_freejob().
MovieReconstructContext* BKE_tracking_reconstruction_context_new | ( | struct MovieClip * | clip, |
struct MovieTrackingObject * | object, | ||
int | keyframe1, | ||
int | keyframe2, | ||
int | width, | ||
int | height | ||
) |
Create context for camera/object motion reconstruction. Copies all data needed for reconstruction from movie clip datablock, so editing this clip is safe during reconstruction job is in progress.
Definition at line 341 of file tracking_solver.c.
References BKE_tracking_object_get_tracks(), BLI_listbase_count(), BLI_strncpy(), MovieTracking::camera, blender::compositor::context, ListBase::first, MovieTrackingMarker::flag, MovieTrackingMarker::framenr, height, libmv_tracks_new(), MARKER_DISABLED, MovieTrackingTrack::markers, MovieTrackingTrack::markersnr, max_ii(), MEM_callocN, min_ii(), MovieTrackingSettings::motion_flag, MovieTrackingObject::name, MovieTrackingTrack::next, NULL, MovieTrackingCamera::pixel_aspect, reconstruct_refine_intrinsics_get_flags(), MovieTrackingSettings::reconstruction_flag, MovieTracking::settings, MovieClip::tracking, tracking_cameraIntrinscisOptionsFromTracking(), TRACKING_OBJECT_CAMERA, TRACKING_USE_KEYFRAME_SELECTION, tracks_map_insert(), tracks_map_new(), and width.
Referenced by solve_camera_initjob().
const char* BKE_tracking_reconstruction_error_message_get | ( | const MovieReconstructContext * | context | ) |
Definition at line 423 of file tracking_solver.c.
References blender::compositor::context.
bool BKE_tracking_reconstruction_finish | ( | struct MovieReconstructContext * | context, |
struct MovieTracking * | tracking | ||
) |
Finish reconstruction process by copying reconstructed data to an actual movie clip data-block.
Definition at line 514 of file tracking_solver.c.
References BKE_tracking_dopesheet_tag_update(), BKE_tracking_object_get_named(), BKE_tracking_reconstruction_report_error_message(), blender::compositor::context, libmv_reconstructionIsValid(), reconstruct_retrieve_libmv(), reconstruction, MovieTracking::reconstruction, TRACKING_RECONSTRUCTED, and tracks_map_merge().
Referenced by solve_camera_freejob().
void BKE_tracking_reconstruction_report_error_message | ( | MovieReconstructContext * | context, |
const char * | error_message | ||
) |
Definition at line 413 of file tracking_solver.c.
References BLI_strncpy(), and blender::compositor::context.
Referenced by BKE_tracking_reconstruction_finish().
void BKE_tracking_reconstruction_scale | ( | struct MovieTracking * | tracking, |
float | scale[3] | ||
) |
Apply scale on all reconstructed cameras and bundles, used by camera scale apply operator.
Definition at line 577 of file tracking_solver.c.
References BKE_tracking_object_get_reconstruction(), BKE_tracking_object_get_tracks(), LISTBASE_FOREACH, MovieTracking::objects, reconstruction, and tracking_scale_reconstruction().
Referenced by apply_objects_internal().
void BKE_tracking_reconstruction_solve | ( | struct MovieReconstructContext * | context, |
short * | stop, | ||
short * | do_update, | ||
float * | progress, | ||
char * | stats_message, | ||
int | message_size | ||
) |
Solve camera/object motion and reconstruct 3D markers position from a prepared reconstruction context.
stop is not actually used at this moment, so reconstruction job could not be stopped.
do_update, progress and stat_message are set by reconstruction callback in libmv side and passing to an interface.
Definition at line 467 of file tracking_solver.c.
References blender::compositor::context, ReconstructProgressData::do_update, error(), libmv_ReconstructionOptions::keyframe1, libmv_ReconstructionOptions::keyframe2, libmv_reprojectionError(), libmv_solveModal(), libmv_solveReconstruction(), ReconstructProgressData::message_size, ReconstructProgressData::progress, reconstruct_update_solve_cb(), reconstructionOptionsFromContext(), ReconstructProgressData::stats_message, ReconstructProgressData::stop, and TRACKING_MOTION_MODAL.
Referenced by solve_camera_startjob().
|
static |
Definition at line 67 of file tracking_solver.c.
References Freestyle::a, BKE_movieclip_remap_clip_to_scene_frame(), evaluate_fcurve(), ListBase::first, MovieTrackingMarker::flag, MovieTrackingMarker::framenr, height, MovieClip::id, id_data_find_fcurve(), libmv_tracksInsert(), libmv_tracksNew(), MARKER_DISABLED, MovieTrackingTrack::markers, MovieTrackingTrack::markersnr, MovieTrackingTrack::next, NULL, MovieTrackingTrack::offset, MovieTrackingMarker::pos, tracks, MovieTrackingTrack::weight, and width.
Referenced by BKE_tracking_reconstruction_context_new().
|
static |
Definition at line 291 of file tracking_solver.c.
References BKE_tracking_object_get_tracks(), BKE_tracking_track_has_enabled_marker_at_frame(), ListBase::first, and MovieTrackingTrack::next.
Referenced by BKE_tracking_reconstruction_check().
|
static |
Definition at line 261 of file tracking_solver.c.
References MovieTrackingObject::flag, LIBMV_REFINE_FOCAL_LENGTH, LIBMV_REFINE_PRINCIPAL_POINT, LIBMV_REFINE_RADIAL_DISTORTION, LIBMV_REFINE_TANGENTIAL_DISTORTION, MovieTrackingSettings::refine_camera_intrinsics, REFINE_FOCAL_LENGTH, REFINE_PRINCIPAL_POINT, REFINE_RADIAL_DISTORTION, REFINE_TANGENTIAL_DISTORTION, MovieTracking::settings, and TRACKING_OBJECT_CAMERA.
Referenced by BKE_tracking_reconstruction_context_new().
|
static |
Definition at line 252 of file tracking_solver.c.
References blender::compositor::context, reconstruct_retrieve_libmv_intrinsics(), and reconstruct_retrieve_libmv_tracks().
Referenced by BKE_tracking_reconstruction_finish().
|
static |
Definition at line 109 of file tracking_solver.c.
References blender::compositor::context, libmv_cameraIntrinsicsExtractOptions(), libmv_reconstructionExtractIntrinsics(), and tracking_trackingCameraFromIntrinscisOptions().
Referenced by reconstruct_retrieve_libmv().
|
static |
Definition at line 126 of file tracking_solver.c.
References Freestyle::a, BKE_tracking_object_get_named(), MovieTrackingTrack::bundle_pos, blender::compositor::context, copy_m4_m4(), error(), MovieReconstructedCamera::error, MovieTrackingTrack::error, ListBase::first, MovieTrackingTrack::flag, MovieReconstructedCamera::framenr, invert_m4_m4(), libmv_reprojectionCameraForImage(), libmv_reprojectionErrorForImage(), libmv_reprojectionErrorForTrack(), libmv_reprojectionPointForTrack(), MovieReconstructedCamera::mat, MEM_callocN, MEM_freeN, MEM_mallocN, mul_m4_m4m4(), mul_v3_m4v3(), MovieTrackingTrack::name, MovieTrackingTrack::next, NULL, pos, reconstruction, MovieTracking::reconstruction, size(), TRACK_HAS_BUNDLE, MovieTracking::tracks, and unit_m4().
Referenced by reconstruct_retrieve_libmv().
|
static |
Definition at line 442 of file tracking_solver.c.
References BLI_snprintf(), ReconstructProgressData::do_update, ReconstructProgressData::message_size, ReconstructProgressData::progress, and ReconstructProgressData::stats_message.
Referenced by BKE_tracking_reconstruction_solve().
|
static |
Definition at line 456 of file tracking_solver.c.
References blender::compositor::context, libmv_ReconstructionOptions::keyframe1, libmv_ReconstructionOptions::keyframe2, libmv_ReconstructionOptions::refine_intrinsics, and libmv_ReconstructionOptions::select_keyframes.
Referenced by BKE_tracking_reconstruction_solve().
|
static |
Definition at line 553 of file tracking_solver.c.
References camera, LISTBASE_FOREACH, mul_v3_v3(), mul_v3_v3v3(), reconstruction, sub_v3_v3(), and TRACK_HAS_BUNDLE.
Referenced by BKE_tracking_reconstruction_scale().