[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