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

Sergey Sharybin g.ulairi at gmail.com
Sat Nov 5 12:53:10 CET 2011


Revision: 41556
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41556
Author:   nazgul
Date:     2011-11-05 11:53:10 +0000 (Sat, 05 Nov 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Fix in rna description for pyramid level
- Unlock clip editor when deselecting all markers, deleting all marker
  or hiding them.
- Keep disabled marker when clearing upto/after so there'll be no
  estimated markers in this case which doesn't have much sense here.

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

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-11-05 11:50:40 UTC (rev 41555)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-11-05 11:53:10 UTC (rev 41556)
@@ -370,6 +370,21 @@
 	return new_track;
 }
 
+static void put_disabled_marker(MovieTrackingTrack *track, MovieTrackingMarker *ref_marker, int before, int overwrite)
+{
+	MovieTrackingMarker marker_new;
+
+	marker_new= *ref_marker;
+	marker_new.flag&= ~MARKER_TRACKED;
+	marker_new.flag|= MARKER_DISABLED;
+
+	if(before) marker_new.framenr--;
+	else marker_new.framenr++;
+
+	if(!BKE_tracking_has_marker(track, marker_new.framenr) || overwrite)
+		BKE_tracking_insert_marker(track, &marker_new);
+}
+
 void BKE_tracking_clear_path(MovieTrackingTrack *track, int ref_frame, int action)
 {
 	int a;
@@ -386,6 +401,9 @@
 
 			a++;
 		}
+
+		if(track->markersnr)
+			put_disabled_marker(track, &track->markers[track->markersnr-1], 0, 1);
 	} else if(action==TRACK_CLEAR_UPTO) {
 		a= track->markersnr-1;
 		while(a>=0) {
@@ -400,19 +418,23 @@
 
 			a--;
 		}
+
+		if(track->markersnr)
+			put_disabled_marker(track, &track->markers[0], 1, 1);
 	} else if(action==TRACK_CLEAR_ALL) {
 		MovieTrackingMarker *marker, marker_new;
 
 		marker= BKE_tracking_get_marker(track, ref_frame);
-		if(marker)
-			marker_new= *marker;
+		marker_new= *marker;
 
 		MEM_freeN(track->markers);
 		track->markers= NULL;
 		track->markersnr= 0;
 
-		if(marker)
-			BKE_tracking_insert_marker(track, &marker_new);
+		BKE_tracking_insert_marker(track, &marker_new);
+
+		put_disabled_marker(track, &marker_new, 1, 1);
+		put_disabled_marker(track, &marker_new, 0, 1);
 	}
 }
 
@@ -1153,24 +1175,11 @@
 			coords_correct= !isnan(x2) && !isnan(y2) && finite(x2) && finite(y2);
 			if(coords_correct && (tracked || !context->disable_failed)) {
 				if(context->first_time) {
-					int prevframe;
-
-					if(context->backwards) prevframe= curfra+1;
-					else prevframe= curfra-1;
-
-					/* check if there's no keyframe/tracked markers before tracking marker.
-					    if so -- create disabled marker before currently tracking "segment" */
-					if(!BKE_tracking_has_marker(track, prevframe)) {
-						marker_new= *marker;
-						marker_new.framenr= prevframe;
-
-						marker_new.flag&= ~MARKER_GRAPH_SEL;
-						marker_new.flag|= MARKER_DISABLED;
-
-						#pragma omp critical
-						{
-							BKE_tracking_insert_marker(track, &marker_new);
-						}
+					#pragma omp critical
+					{
+						/* check if there's no keyframe/tracked markers before tracking marker.
+						    if so -- create disabled marker before currently tracking "segment" */
+						put_disabled_marker(track, marker, 1, 0);
 					}
 				}
 
@@ -1191,19 +1200,10 @@
 					BKE_tracking_insert_marker(track, &marker_new);
 				}
 
-				if(context->backwards) nextfra--;
-				else nextfra++;
-
 				/* make currently tracked segment be finished with disabled marker */
-				if(!BKE_tracking_has_marker(track, nextfra)) {
-					marker_new.framenr= nextfra;
-					marker_new.flag|= MARKER_DISABLED;
-					marker_new.flag&= ~MARKER_TRACKED;
-
-					#pragma omp critical
-					{
-						BKE_tracking_insert_marker(track, &marker_new);
-					}
+				#pragma omp critical
+				{
+					put_disabled_marker(track, &marker_new, 0, 0);
 				}
 			} else {
 				marker_new= *marker;

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-11-05 11:50:40 UTC (rev 41555)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-11-05 11:53:10 UTC (rev 41556)
@@ -201,6 +201,9 @@
 		track= next;
 	}
 
+	/* nothing selected now, unlock view so it can be scrolled nice again */
+	sc->flag&= ~SC_LOCK_SELECTION;
+
 	return OPERATOR_FINISHED;
 }
 
@@ -228,6 +231,7 @@
 	MovieClip *clip= ED_space_clip(sc);
 	MovieTrackingTrack *track= clip->tracking.tracks.first, *next;
 	int framenr= sc->user.framenr;
+	int has_selection= 0;
 
 	while(track) {
 		next= track->next;
@@ -235,13 +239,21 @@
 		if(TRACK_VIEW_SELECTED(sc, track)) {
 			MovieTrackingMarker *marker= BKE_tracking_exact_marker(track, framenr);
 
-			if(marker)
+			if(marker) {
+				has_selection|= track->markersnr>1;
+
 				clip_delete_marker(C, clip, track, marker);
+			}
 		}
 
 		track= next;
 	}
 
+	if(!has_selection) {
+		/* nothing selected now, unlock view so it can be scrolled nice again */
+		sc->flag&= ~SC_LOCK_SELECTION;
+	}
+
 	return OPERATOR_FINISHED;
 }
 
@@ -1009,6 +1021,7 @@
 	MovieTrackingTrack *track= NULL;	/* selected track */
 	int action= RNA_enum_get(op->ptr, "action");
 	int framenr= sc->user.framenr;
+	int has_selection= 0;
 
 	if(action == SEL_TOGGLE){
 		action= SEL_SELECT;
@@ -1049,9 +1062,15 @@
 			}
 		}
 
+		if(TRACK_VIEW_SELECTED(sc, track))
+			has_selection= 1;
+
 		track= track->next;
 	}
 
+	if(!has_selection)
+		sc->flag&= ~SC_LOCK_SELECTION;
+
 	WM_event_add_notifier(C, NC_GEOM|ND_SELECT, NULL);
 
 	return OPERATOR_FINISHED;
@@ -2160,6 +2179,11 @@
 	if(clip->tracking.act_track && clip->tracking.act_track->flag&TRACK_HIDDEN)
 		clip->tracking.act_track= NULL;
 
+	if(unselected==0) {
+		/* no selection on screen now, unlock view so it can be scrolled nice again */
+		sc->flag&= ~SC_LOCK_SELECTION;
+	}
+
 	WM_event_add_notifier(C, NC_MOVIECLIP|ND_DISPLAY, NULL);
 
 	return OPERATOR_FINISHED;

Modified: branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c	2011-11-05 11:50:40 UTC (rev 41555)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c	2011-11-05 11:53:10 UTC (rev 41556)
@@ -484,7 +484,7 @@
 	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
 	RNA_def_property_int_sdna(prop, NULL, "pyramid_levels");
 	RNA_def_property_range(prop, 1, 16);
-	RNA_def_property_ui_text(prop, "Pyramid levels", "Number of pyramid levels for KLT tracking.");
+	RNA_def_property_ui_text(prop, "Pyramid levels", "Number of pyramid levels for KLT tracking");
 	RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPyramid_update");
 
 	/* minmal correlation - only used for SAD tracker */




More information about the Bf-blender-cvs mailing list