[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56715] trunk/blender: Documentation for functions inside tracking.c
Sergey Sharybin
sergey.vfx at gmail.com
Sun May 12 18:04:08 CEST 2013
Revision: 56715
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56715
Author: nazgul
Date: 2013-05-12 16:04:08 +0000 (Sun, 12 May 2013)
Log Message:
-----------
Documentation for functions inside tracking.c
Additional changes:
- Cleaned up sources to reduce mess in some
big functions.
- Removed unused function from libmv c-api.
- Made functions naming more consistent.
- Use bool for internal stuff in tracking.c.
Shall be no functional changes :)
Modified Paths:
--------------
trunk/blender/extern/libmv/libmv-capi.cpp
trunk/blender/extern/libmv/libmv-capi.h
trunk/blender/source/blender/blenkernel/intern/tracking.c
Modified: trunk/blender/extern/libmv/libmv-capi.cpp
===================================================================
--- trunk/blender/extern/libmv/libmv-capi.cpp 2013-05-12 15:52:05 UTC (rev 56714)
+++ trunk/blender/extern/libmv/libmv-capi.cpp 2013-05-12 16:04:08 UTC (rev 56715)
@@ -419,23 +419,6 @@
void *callback_customdata_;
};
-int libmv_refineParametersAreValid(int parameters) {
- return (parameters == (LIBMV_REFINE_FOCAL_LENGTH)) ||
- (parameters == (LIBMV_REFINE_FOCAL_LENGTH |
- LIBMV_REFINE_PRINCIPAL_POINT)) ||
- (parameters == (LIBMV_REFINE_FOCAL_LENGTH |
- LIBMV_REFINE_PRINCIPAL_POINT |
- LIBMV_REFINE_RADIAL_DISTORTION_K1 |
- LIBMV_REFINE_RADIAL_DISTORTION_K2)) ||
- (parameters == (LIBMV_REFINE_FOCAL_LENGTH |
- LIBMV_REFINE_RADIAL_DISTORTION_K1 |
- LIBMV_REFINE_RADIAL_DISTORTION_K2)) ||
- (parameters == (LIBMV_REFINE_FOCAL_LENGTH |
- LIBMV_REFINE_RADIAL_DISTORTION_K1)) ||
- (parameters == (LIBMV_REFINE_RADIAL_DISTORTION_K1 |
- LIBMV_REFINE_RADIAL_DISTORTION_K2));
-}
-
static void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntrinsics *intrinsics,
libmv::EuclideanReconstruction *reconstruction, int refine_intrinsics,
reconstruct_progress_update_cb progress_update_callback, void *callback_customdata,
@@ -952,7 +935,7 @@
/* ************ utils ************ */
-void libmv_applyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+void libmv_ApplyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
double x, double y, double *x1, double *y1)
{
libmv::CameraIntrinsics camera_intrinsics;
@@ -966,8 +949,8 @@
}
}
-void libmv_InvertIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
- double x, double y, double *x1, double *y1)
+void libmv_InvertCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+ double x, double y, double *x1, double *y1)
{
libmv::CameraIntrinsics camera_intrinsics;
Modified: trunk/blender/extern/libmv/libmv-capi.h
===================================================================
--- trunk/blender/extern/libmv/libmv-capi.h 2013-05-12 15:52:05 UTC (rev 56714)
+++ trunk/blender/extern/libmv/libmv-capi.h 2013-05-12 16:04:08 UTC (rev 56715)
@@ -101,8 +101,6 @@
typedef void (*reconstruct_progress_update_cb) (void *customdata, double progress, const char *message);
-int libmv_refineParametersAreValid(int parameters);
-
struct libmv_Reconstruction *libmv_solveReconstruction(struct libmv_Tracks *libmv_tracks,
libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
libmv_reconstructionOptions *libmv_reconstruction_options,
@@ -161,9 +159,9 @@
float *src, float *dst, int width, int height, float overscan, int channels);
/* utils */
-void libmv_applyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+void libmv_ApplyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
double x, double y, double *x1, double *y1);
-void libmv_InvertIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+void libmv_InvertCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
double x, double y, double *x1, double *y1);
#ifdef __cplusplus
Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c 2013-05-12 15:52:05 UTC (rev 56714)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c 2013-05-12 16:04:08 UTC (rev 56715)
@@ -78,13 +78,14 @@
ListBase tracks;
} tracking_clipboard;
-/*********************** Common functions *************************/
+/*********************** Common functions *************************/
+/* Duplicate the specified track, result will no belong to any list. */
static MovieTrackingTrack *tracking_track_duplicate(MovieTrackingTrack *track)
{
MovieTrackingTrack *new_track;
- new_track = MEM_callocN(sizeof(MovieTrackingTrack), "tracksMapMerge new_track");
+ new_track = MEM_callocN(sizeof(MovieTrackingTrack), "tracking_track_duplicate new_track");
*new_track = *track;
new_track->next = new_track->prev = NULL;
@@ -94,6 +95,7 @@
return new_track;
}
+/* Free the whole list of tracks, list's head and tail are set to NULL. */
static void tracking_tracks_free(ListBase *tracks)
{
MovieTrackingTrack *track;
@@ -105,32 +107,49 @@
BLI_freelistN(tracks);
}
+/* Free reconstruction structures, only frees contents of a structure,
+ * (if structure is allocated in heap, it shall be handled outside).
+ *
+ * All the pointers inside structure becomes invalid after this call.
+ */
static void tracking_reconstruction_free(MovieTrackingReconstruction *reconstruction)
{
if (reconstruction->cameras)
MEM_freeN(reconstruction->cameras);
}
+/* Free memory used by tracking object, only frees contents of the structure,
+ * (if structure is allocated in heap, it shall be handled outside).
+ *
+ * All the pointers inside structure becomes invalid after this call.
+ */
static void tracking_object_free(MovieTrackingObject *object)
{
tracking_tracks_free(&object->tracks);
tracking_reconstruction_free(&object->reconstruction);
}
+/* Free list of tracking objects, list's head and tail is set to NULL. */
static void tracking_objects_free(ListBase *objects)
{
MovieTrackingObject *object;
+ /* Free objects contents. */
for (object = objects->first; object; object = object->next)
tracking_object_free(object);
+ /* Free objects themselves. */
BLI_freelistN(objects);
}
+/* Free memory used by a dopesheet, only frees dopesheet contents.
+ * leaving dopesheet crystal clean for further usage.
+ */
static void tracking_dopesheet_free(MovieTrackingDopesheet *dopesheet)
{
MovieTrackingDopesheetChannel *channel;
+ /* Free channel's sergments. */
channel = dopesheet->channels.first;
while (channel) {
if (channel->segments) {
@@ -140,14 +159,21 @@
channel = channel->next;
}
+ /* Free lists themselves. */
BLI_freelistN(&dopesheet->channels);
BLI_freelistN(&dopesheet->coverage_segments);
+ /* Ensure lists are clean. */
dopesheet->channels.first = dopesheet->channels.last = NULL;
dopesheet->coverage_segments.first = dopesheet->coverage_segments.last = NULL;
dopesheet->tot_channel = 0;
}
+/* Free tracking structure, only frees structure contents
+ * (if structure is allocated in heap, it shall be handled outside).
+ *
+ * All the pointers inside structure becomes invalid after this call.
+ */
void BKE_tracking_free(MovieTracking *tracking)
{
tracking_tracks_free(&tracking->tracks);
@@ -160,6 +186,9 @@
tracking_dopesheet_free(&tracking->dopesheet);
}
+/* Initialize motion tracking settings to default values,
+ * used when new movie clip datablock is creating.
+ */
void BKE_tracking_settings_init(MovieTracking *tracking)
{
tracking->camera.sensor_width = 35.0f;
@@ -184,6 +213,7 @@
BKE_tracking_object_add(tracking, "Camera");
}
+/* Get list base of active object's tracks. */
ListBase *BKE_tracking_get_active_tracks(MovieTracking *tracking)
{
MovieTrackingObject *object = BKE_tracking_object_get_active(tracking);
@@ -195,6 +225,7 @@
return &tracking->tracks;
}
+/* Get reconstruction data of active object. */
MovieTrackingReconstruction *BKE_tracking_get_active_reconstruction(MovieTracking *tracking)
{
MovieTrackingObject *object = BKE_tracking_object_get_active(tracking);
@@ -202,6 +233,9 @@
return BKE_tracking_object_get_reconstruction(tracking, object);
}
+/* Get transformation matrix for a given object which is used
+ * for parenting motion tracker reconstruction to 3D world.
+ */
void BKE_tracking_get_camera_object_matrix(Scene *scene, Object *ob, float mat[4][4])
{
if (!ob) {
@@ -217,6 +251,11 @@
unit_m4(mat);
}
+/* Get projection matrix for camera specified by given tracking object
+ * and frame number.
+ *
+ * NOTE: frame number should be in clip space, not scene space
+ */
void BKE_tracking_get_projection_matrix(MovieTracking *tracking, MovieTrackingObject *object,
int framenr, int winx, int winy, float mat[4][4])
{
@@ -264,7 +303,7 @@
}
}
-/* **** space transformation functions **** */
+/* **** space transformation functions **** */
/* Three coordinate frames: Frame, Search, and Marker
* Two units: Pixels, Unified
@@ -403,6 +442,7 @@
/*********************** clipboard *************************/
+/* Free clipboard by freeing memory used by all tracks in it. */
void BKE_tracking_clipboard_free(void)
{
MovieTrackingTrack *track = tracking_clipboard.tracks.first, *next_track;
@@ -419,13 +459,16 @@
tracking_clipboard.tracks.first = tracking_clipboard.tracks.last = NULL;
}
+/* Copy selected tracks from specified object to the clipboard. */
void BKE_tracking_clipboard_copy_tracks(MovieTracking *tracking, MovieTrackingObject *object)
{
ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object);
MovieTrackingTrack *track = tracksbase->first;
+ /* First drop all tracks from current clipboard. */
BKE_tracking_clipboard_free();
+ /* Then copy all selected visible tracks to it. */
while (track) {
if (TRACK_SELECTED(track) && (track->flag & TRACK_HIDDEN) == 0) {
MovieTrackingTrack *new_track = tracking_track_duplicate(track);
@@ -437,11 +480,17 @@
}
}
+/* Check whether there're any tracks in the clipboard. */
int BKE_tracking_clipboard_has_tracks(void)
{
return tracking_clipboard.tracks.first != NULL;
}
+/* Paste tracks from clipboard to specified object.
+ *
+ * Names of new tracks in object are guaranteed to
+ * be unique here.
+ */
void BKE_tracking_clipboard_paste_tracks(MovieTracking *tracking, MovieTrackingObject *object)
{
ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object);
@@ -457,10 +506,19 @@
}
}
-/*********************** Tracks *************************/
+/*********************** Tracks *************************/
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list