[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38434] branches/soc-2011-tomato/source/ blender: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Sat Jul 16 12:30:52 CEST 2011


Revision: 38434
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38434
Author:   nazgul
Date:     2011-07-16 10:30:51 +0000 (Sat, 16 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Silent compilator's warning about possible uninitialized
  variable usage in set floor operator.
- Check tracks cound on both of keyframes before reconstruction.
- Refresh 3d viewport when deleting track with bundle.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-16 10:30:51 UTC (rev 38434)
@@ -307,7 +307,7 @@
 
 int BKE_tracking_has_marker(MovieTrackingTrack *track, int framenr)
 {
-	return BKE_tracking_get_marker(track, framenr) != 0;
+	return BKE_tracking_exact_marker(track, framenr) != 0;
 }
 
 void BKE_tracking_free_track(MovieTrackingTrack *track)

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c	2011-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c	2011-07-16 10:30:51 UTC (rev 38434)
@@ -260,7 +260,7 @@
 	if(type!=MCLIP_SEL_TRACK)
 		return 0;
 
-	return BKE_tracking_has_marker(track, sc->user.framenr);
+	return 1;
 }
 
 static void clip_panel_marker(const bContext *C, Panel *pa)

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-16 10:30:51 UTC (rev 38434)
@@ -214,11 +214,15 @@
 	SpaceClip *sc= CTX_wm_space_clip(C);
 	MovieClip *clip= ED_space_clip(sc);
 	MovieTrackingTrack *track= clip->tracking.tracks.first, *next;
+	int has_bundle= 0;
 
 	while(track) {
 		next= track->next;
 
 		if(TRACK_VIEW_SELECTED(track)) {
+			if(track->flag&TRACK_HAS_BUNDLE)
+				has_bundle= 1;
+
 			BKE_tracking_free_track(track);
 			BLI_freelinkN(&clip->tracking.tracks, track);
 		}
@@ -229,6 +233,9 @@
 	BKE_movieclip_set_selection(clip, MCLIP_SEL_NONE, NULL);
 	WM_event_add_notifier(C, NC_MOVIECLIP|NA_EDITED, clip);
 
+	if(has_bundle)
+		WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
 	return OPERATOR_FINISHED;
 }
 
@@ -646,11 +653,9 @@
 		action= SEL_SELECT;
 		track= clip->tracking.tracks.first;
 		while(track) {
-			if(BKE_tracking_has_marker(track, framenr)) {
-				if(TRACK_VIEW_SELECTED(track)) {
-					action= SEL_DESELECT;
-					break;
-				}
+			if(TRACK_VIEW_SELECTED(track)) {
+				action= SEL_DESELECT;
+				break;
 			}
 
 			track= track->next;
@@ -981,14 +986,33 @@
 
 /********************** solve camera operator *********************/
 
+static int check_solve_tarck_count(MovieTracking *tracking)
+{
+	int tot= 0;
+	int frame1= tracking->settings.keyframe1, frame2= tracking->settings.keyframe2;
+	MovieTrackingTrack *track;
+
+	track= tracking->tracks.first;
+	while(track) {
+		if(BKE_tracking_has_marker(track, frame1))
+			if(BKE_tracking_has_marker(track, frame2))
+				tot++;
+
+		track= track->next;
+	}
+
+	return tot>=10;
+}
+
 static int solve_camera_exec(bContext *C, wmOperator *op)
 {
 	SpaceClip *sc= CTX_wm_space_clip(C);
 	MovieClip *clip= ED_space_clip(sc);
 	Scene *scene= CTX_data_scene(C);
 
-	if(BLI_countlist(&clip->tracking.tracks)<10) {
-		BKE_report(op->reports, RPT_ERROR, "At least 10 tracks are needed for reconstruction");
+	if(!check_solve_tarck_count(&clip->tracking)) {
+		BKE_report(op->reports, RPT_ERROR, "At least 10 tracks on both of keyframes are needed for reconstruction");
+		return OPERATOR_CANCELLED;
 	}
 
 	BKE_tracking_solve_reconstruction(clip);
@@ -1318,7 +1342,7 @@
 	Object *camera= scene->camera;
 	Object *parent= camera;
 	int tot= 0, sel_type;
-	float vec[3][3], mat[4][4], obmat[4][4], newmat[4][4], orig[3];
+	float vec[3][3], mat[4][4], obmat[4][4], newmat[4][4], orig[3]= {0.f, 0.f, 0.f};
 	float rot[4][4]={{0.f, 0.f, -1.f, 0.f},
 	                 {0.f, 1.f, 0.f, 0.f},
 	                 {1.f, 0.f, 0.f, 0.f},




More information about the Bf-blender-cvs mailing list