Revision: 39000
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39000
Author:   nazgul
Date:     2011-08-03 18:28:40 +0000 (Wed, 03 Aug 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Made naming in libmv-api more uniform.
- Move aspect ration detection of clip to movieclip.c.
- Remove unused width and height from camera intrinsics function.
- Reconstruction should now deal correct with aspect ratio.

Modified Paths:
--------------
    branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
    branches/soc-2011-tomato/extern/libmv/libmv-capi.h
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/editors/include/ED_clip.h
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_editor.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c

Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp        2011-08-03 
18:17:33 UTC (rev 38999)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp        2011-08-03 
18:28:40 UTC (rev 39000)
@@ -261,7 +261,7 @@
 }
 #endif
 
-int libmv_regionTrackerTrack(libmv_RegionTracker *tracker, const float *ima1, 
const float *ima2,
+int libmv_regionTrackerTrack(libmv_RegionTracker *libmv_tracker, const float 
*ima1, const float *ima2,
                         int width, int height, int half_window_size,
                         double x1, double y1, double *x2, double *y2)
 {
@@ -269,8 +269,8 @@
        libmv::TrkltRegionTracker *trklt_region_tracker;
        libmv::FloatImage old_patch, new_patch;
 
-       trklt_region_tracker = tracker->trklt_region_tracker;
-       region_tracker = tracker->region_tracker;
+       trklt_region_tracker = libmv_tracker->trklt_region_tracker;
+       region_tracker = libmv_tracker->region_tracker;
 
        trklt_region_tracker->half_window_size = half_window_size;
 
@@ -294,29 +294,29 @@
 #endif
 }
 
-void libmv_regionTrackerDestroy(libmv_RegionTracker *tracker)
+void libmv_regionTrackerDestroy(libmv_RegionTracker *libmv_tracker)
 {
-       delete tracker->region_tracker;
-       delete tracker;
+       delete libmv_tracker->region_tracker;
+       delete libmv_tracker;
 }
 
 /* ************ Tracks ************ */
 
 libmv_Tracks *libmv_tracksNew(void)
 {
-       libmv::Tracks *tracks = new libmv::Tracks();
+       libmv::Tracks *libmv_tracks = new libmv::Tracks();
 
-       return (libmv_Tracks *)tracks;
+       return (libmv_Tracks *)libmv_tracks;
 }
 
-void libmv_tracksInsert(struct libmv_Tracks *tracks, int image, int track, 
double x, double y)
+void libmv_tracksInsert(struct libmv_Tracks *libmv_tracks, int image, int 
track, double x, double y)
 {
-       ((libmv::Tracks*)tracks)->Insert(image, track, x, y);
+       ((libmv::Tracks*)libmv_tracks)->Insert(image, track, x, y);
 }
 
-void libmv_tracksDestroy(libmv_Tracks *tracks)
+void libmv_tracksDestroy(libmv_Tracks *libmv_tracks)
 {
-       delete (libmv::Tracks*)tracks;
+       delete (libmv::Tracks*)libmv_tracks;
 }
 
 /* ************ Reconstruction solver ************ */
@@ -406,7 +406,7 @@
        return 0;
 }
 
-float libmv_reprojectionError(libmv_Reconstruction *libmv_reconstruction)
+double libmv_reprojectionError(libmv_Reconstruction *libmv_reconstruction)
 {
        return libmv_reconstruction->error;
 }
@@ -421,21 +421,21 @@
 struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int 
height, int stride)
 {
        std::vector<libmv::Corner> detect= libmv::Detect(data, width, height, 
stride);
-       std::vector<libmv::Corner> *corners= new std::vector<libmv::Corner>();
+       std::vector<libmv::Corner> *libmv_corners= new 
std::vector<libmv::Corner>();
 
-       corners->insert(corners->begin(), detect.begin(), detect.end());
+       libmv_corners->insert(libmv_corners->begin(), detect.begin(), 
detect.end());
 
-       return (libmv_Corners *)corners;
+       return (libmv_Corners *)libmv_corners;
 }
 
-int libmv_countCorners(struct libmv_Corners *corners)
+int libmv_countCorners(struct libmv_Corners *libmv_corners)
 {
-       return ((std::vector<libmv::Corner> *)corners)->size();
+       return ((std::vector<libmv::Corner> *)libmv_corners)->size();
 }
 
-void libmv_getCorner(struct libmv_Corners *corners, int number, float *x, 
float *y, float *score, float *size)
+void libmv_getCorner(struct libmv_Corners *libmv_corners, int number, double 
*x, double *y, double *score, double *size)
 {
-       libmv::Corner corner = ((std::vector<libmv::Corner> 
*)corners)->at(number);
+       libmv::Corner corner = ((std::vector<libmv::Corner> 
*)libmv_corners)->at(number);
 
        *x = corner.x;
        *y = corner.y;
@@ -443,9 +443,9 @@
        *size = corner.size;
 }
 
-void libmv_destroyCorners(struct libmv_Corners *corners)
+void libmv_destroyCorners(struct libmv_Corners *libmv_corners)
 {
-       delete (std::vector<libmv::Corner> *)corners;
+       delete (std::vector<libmv::Corner> *)libmv_corners;
 }
 
 /* ************ utils ************ */

Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.h
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.h  2011-08-03 18:17:33 UTC 
(rev 38999)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.h  2011-08-03 18:28:40 UTC 
(rev 39000)
@@ -45,30 +45,29 @@
 
 /* RegionTracker */
 struct libmv_RegionTracker *libmv_regionTrackerNew(int max_iterations, int 
pyramid_level, double tolerance);
-int libmv_regionTrackerTrack(struct libmv_RegionTracker *tracker, const float 
*ima1, const float *ima2,
+int libmv_regionTrackerTrack(struct libmv_RegionTracker *libmv_tracker, const 
float *ima1, const float *ima2,
                        int width, int height, int half_window_size,
                        double  x1, double  y1, double *x2, double *y2);
-void libmv_regionTrackerDestroy(struct libmv_RegionTracker *tracker);
+void libmv_regionTrackerDestroy(struct libmv_RegionTracker *libmv_tracker);
 
 /* Tracks */
 struct libmv_Tracks *libmv_tracksNew(void);
-void libmv_tracksInsert(struct libmv_Tracks *tracks, int image, int track, 
double x, double y);
-void libmv_tracksDestroy(struct libmv_Tracks *tracks);
+void libmv_tracksInsert(struct libmv_Tracks *libmv_tracks, int image, int 
track, double x, double y);
+void libmv_tracksDestroy(struct libmv_Tracks *libmv_tracks);
 
 /* Reconstruction solver */
 struct libmv_Reconstruction *libmv_solveReconstruction(struct libmv_Tracks 
*tracks, int keyframe1, int keyframe2,
                        double focal_length, double principal_x, double 
principal_y, double k1, double k2, double k3);
 int libmv_reporojectionPointForTrack(struct libmv_Reconstruction 
*libmv_reconstruction, int track, double pos[3]);
 int libmv_reporojectionCameraForImage(struct libmv_Reconstruction 
*libmv_reconstruction, int image, double mat[4][4]);
-float libmv_reprojectionError(struct libmv_Reconstruction 
*libmv_reconstruction);
+double libmv_reprojectionError(struct libmv_Reconstruction 
*libmv_reconstruction);
 void libmv_destroyReconstruction(struct libmv_Reconstruction 
*libmv_reconstruction);
 
 /* feature detector */
-
 struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int 
height, int stride);
-int libmv_countCorners(struct libmv_Corners *corners);
-void libmv_getCorner(struct libmv_Corners *corners, int number, float *x, 
float *y, float *score, float *size);
-void libmv_destroyCorners(struct libmv_Corners *corners);
+int libmv_countCorners(struct libmv_Corners *libmv_corners);
+void libmv_getCorner(struct libmv_Corners *libmv_corners, int number, double 
*x, double *y, double *score, double *size);
+void libmv_destroyCorners(struct libmv_Corners *libmv_corners);
 
 /* utils */
 void libmv_applyCameraIntrinsics(double focal_length, double principal_x, 
double principal_y, double k1, double k2, double k3,

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h  
2011-08-03 18:17:33 UTC (rev 38999)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h  
2011-08-03 18:28:40 UTC (rev 39000)
@@ -50,6 +50,7 @@
 struct ImBuf *BKE_movieclip_acquire_ibuf(struct MovieClip *clip, struct 
MovieClipUser *user);
 struct ImBuf *BKE_movieclip_acquire_stable_ibuf(struct MovieClip *clip, struct 
MovieClipUser *user, float loc[2], float *scale);
 void BKE_movieclip_acquire_size(struct MovieClip *clip, struct MovieClipUser 
*user, int *width, int *height);
+void BKE_movieclip_aspect(struct MovieClip *clip, float *aspx, float *aspy);
 int BKE_movieclip_has_frame(struct MovieClip *clip, struct MovieClipUser 
*user);
 void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr);
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h   
2011-08-03 18:17:33 UTC (rev 38999)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h   
2011-08-03 18:28:40 UTC (rev 39000)
@@ -71,7 +71,7 @@
 void BKE_tracking_sync_user(struct MovieClipUser *user, struct 
MovieTrackingContext *context);
 int BKE_tracking_next(struct MovieTrackingContext *context);
 
-float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int 
width, int height);
+float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int 
width, int height, float aspx, float aspy);
 
 void BKE_track_unique_name(struct MovieTracking *tracking, struct 
MovieTrackingTrack *track);
 struct MovieTrackingTrack *BKE_find_track_by_name(struct MovieTracking 
*tracking, const char *name);
@@ -80,8 +80,8 @@
 
 void BKE_get_tracking_mat(struct Scene *scene, float mat[4][4]);
 void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int 
framenr, int winx, int winy, float mat[4][4]);
-void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float 
co[2], float width, float height, float nco[2]);
-void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float 
co[2], float width, float height, float nco[2]);
+void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float 
co[2], float nco[2]);
+void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float 
co[2], float nco[2]);
 
 void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, 
int framenr);
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c       
2011-08-03 18:17:33 UTC (rev 38999)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c       
2011-08-03 18:28:40 UTC (rev 39000)
@@ -422,6 +422,14 @@
        }
 }
 
+void BKE_movieclip_aspect(MovieClip *clip, float *aspx, float *aspy)
+{
+       *aspx= *aspy= 1.0;
+
+       /* x is always 1 */
+       *aspy = clip->aspy/clip->aspx;
+}
+
 /* get segments of cached frames. useful for debugging cache policies */
 void BKE_movieclip_get_cache_segments(MovieClip *clip, int *totseg_r, int 
**points_r)
 {

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c        
2011-08-03 18:17:33 UTC (rev 38999)

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to