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 */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to