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

Sergey Sharybin g.ulairi at gmail.com
Fri Jul 22 18:18:52 CEST 2011


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

- Operator "Join Selected Tracks".
  This operator joins all selected tracks to active track.
  Hotkey is Ctrl-J.
- Operator "Select Grouped".
  Now it's easy to select all locked/keyframes/etc markers.
  Hotkey is Shit-G.
- Operator to jump to beginning/end of active path.
  Hotkeys are Shift+Ctrl+Arrow Left/Right.
- Operator to copy color from active track to all tracks.

Modified Paths:
--------------
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
    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/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-07-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-07-22 16:18:51 UTC (rev 38612)
@@ -161,6 +161,7 @@
             op = col.operator("clip.clear_track_path", text="Clear Track Path")
             op.action = 'ALL'
 
+            layout.operator("clip.join_tracks")
             layout.operator("clip.detect_features")
             layout.operator("clip.apply_follow_track")
 
@@ -217,8 +218,10 @@
         row = layout.row(align=True)
         label = bpy.types.CLIP_MT_track_color_presets.bl_label
         row.menu('CLIP_MT_track_color_presets', text=label)
+        row.menu('CLIP_MT_track_color_specials', text="", icon="DOWNARROW_HLT")
         row.operator("clip.track_color_preset_add", text="", icon="ZOOMIN")
-        op = row.operator("clip.track_color_preset_add", text="", icon="ZOOMOUT")
+        op = row.operator("clip.track_color_preset_add", \
+            text="", icon="ZOOMOUT")
         op.remove_active = True
 
         row = layout.row()
@@ -234,7 +237,6 @@
         row.prop(act_track, "use_blue_channel", text="Blue")
 
 
-
 class CLIP_PT_track_settings(bpy.types.Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'UI'
@@ -497,12 +499,40 @@
 
         sc = context.space_data
 
+        layout.menu("CLIP_MT_select_grouped")
         layout.operator("clip.select_border")
         layout.operator("clip.select_circle")
         layout.operator("clip.select_all", text="Select/Deselect all")
         layout.operator("clip.select_all", text="Inverse").action = 'INVERT'
 
 
+class CLIP_MT_select_grouped(bpy.types.Menu):
+    bl_label = "Select Grouped"
+
+    def draw(self, context):
+        layout = self.layout
+
+        sc = context.space_data
+
+        op = layout.operator("clip.select_grouped", text="Select Keyframed")
+        op.group = 'KEYFRAMED'
+
+        op = layout.operator("clip.select_grouped", text="Select Estimated")
+        op.group = 'ESTIMATED'
+
+        op = layout.operator("clip.select_grouped", text="Select Tracked")
+        op.group = 'TRACKED'
+
+        op = layout.operator("clip.select_grouped", text="Select Locked")
+        op.group = 'LOCKED'
+
+        op = layout.operator("clip.select_grouped", text="Select Disabled")
+        op.group = 'DISABLED'
+
+        op = layout.operator("clip.select_grouped", text="Select by Color")
+        op.group = 'COLOR'
+
+
 class CLIP_MT_tracking_specials(bpy.types.Menu):
     bl_label = "Specials"
 
@@ -548,5 +578,14 @@
     draw = bpy.types.Menu.draw_preset
 
 
+class CLIP_MT_track_color_specials(bpy.types.Menu):
+    bl_label = "Track Color Specials"
+
+    def draw(self, context):
+        layout = self.layout
+
+        layout.operator('clip.track_copy_color', icon='COPY_ID')
+
+
 if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-07-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-07-22 16:18:51 UTC (rev 38612)
@@ -56,6 +56,8 @@
 void BKE_tracking_free_track(struct MovieTrackingTrack *track);
 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack *track);
 void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, int action);
+int BKE_tracking_test_join_tracks(struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack *src_track);
+void BKE_tracking_join_tracks(struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack *src_track);
 void BKE_tracking_free(struct MovieTracking *tracking);
 
 struct ImBuf *BKE_tracking_acquire_pattern_imbuf(struct ImBuf *ibuf, struct MovieTrackingTrack *track,

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-22 16:18:51 UTC (rev 38612)
@@ -375,6 +375,51 @@
 	}
 }
 
+int BKE_tracking_test_join_tracks(MovieTrackingTrack *dst_track, MovieTrackingTrack *src_track)
+{
+	int i, a= 0, b= 0, tot= dst_track->markersnr+src_track->markersnr;
+
+	for(i= 0; i<tot; i++) {
+		if(b>=dst_track->markersnr || a>=src_track->markersnr)
+			break;
+
+		if(src_track->markers[a].framenr<dst_track->markers[b].framenr)
+			a++;
+		else if(src_track->markers[a].framenr>dst_track->markers[b].framenr)
+			b++;
+		else
+			return 0;
+	}
+
+	return 1;
+}
+
+void BKE_tracking_join_tracks(MovieTrackingTrack *dst_track, MovieTrackingTrack *src_track)
+{
+	int i, a= 0, b= 0, tot= dst_track->markersnr+src_track->markersnr;
+	MovieTrackingMarker *markers;
+
+	markers= MEM_callocN(tot*sizeof(MovieTrackingMarker), "tracking joined tracks");
+
+	for(i= 0; i<tot; i++) {
+		if(b>=dst_track->markersnr) {
+			markers[i]= src_track->markers[a++];
+		}
+		else if(a>=src_track->markersnr) {
+			markers[i]= dst_track->markers[b++];
+		}
+		else if(src_track->markers[a].framenr<dst_track->markers[b].framenr)
+			markers[i]= src_track->markers[a++];
+		else
+			markers[i]= dst_track->markers[b++];
+	}
+
+	MEM_freeN(dst_track->markers);
+
+	dst_track->markers= markers;
+	dst_track->markersnr= tot;
+}
+
 void BKE_tracking_free(MovieTracking *tracking)
 {
 	MovieTrackingTrack *track;

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h	2011-07-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h	2011-07-22 16:18:51 UTC (rev 38612)
@@ -62,6 +62,7 @@
 void CLIP_OT_select_all(struct wmOperatorType *ot);
 void CLIP_OT_select_border(struct wmOperatorType *ot);
 void CLIP_OT_select_circle(struct wmOperatorType *ot);
+void CLIP_OT_select_grouped(struct wmOperatorType *ot);
 
 void CLIP_OT_add_marker(struct wmOperatorType *ot);
 void CLIP_OT_delete_track(struct wmOperatorType *ot);
@@ -72,6 +73,7 @@
 void CLIP_OT_clear_reconstruction(struct wmOperatorType *ot);
 
 void CLIP_OT_clear_track_path(struct wmOperatorType *ot);
+void CLIP_OT_join_tracks(struct wmOperatorType *ot);
 
 void CLIP_OT_disable_markers(struct wmOperatorType *ot);
 void CLIP_OT_hide_tracks(struct wmOperatorType *ot);
@@ -87,6 +89,9 @@
 
 void CLIP_OT_slide_marker(struct wmOperatorType *ot);
 
+void CLIP_OT_frame_jump(struct wmOperatorType *ot);
+void CLIP_OT_track_copy_color(struct wmOperatorType *ot);
+
 void CLIP_OT_detect_features(struct wmOperatorType *ot);
 
 /* clip_draw.c */

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-07-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-07-22 16:18:51 UTC (rev 38612)
@@ -230,6 +230,7 @@
 	WM_operatortype_append(CLIP_OT_select_all);
 	WM_operatortype_append(CLIP_OT_select_border);
 	WM_operatortype_append(CLIP_OT_select_circle);
+	WM_operatortype_append(CLIP_OT_select_grouped);
 
 	WM_operatortype_append(CLIP_OT_add_marker);
 	WM_operatortype_append(CLIP_OT_delete_track);
@@ -252,9 +253,13 @@
 	WM_operatortype_append(CLIP_OT_set_center_principal);
 
 	WM_operatortype_append(CLIP_OT_clear_track_path);
+	WM_operatortype_append(CLIP_OT_join_tracks);
+	WM_operatortype_append(CLIP_OT_track_copy_color);
 
 	WM_operatortype_append(CLIP_OT_slide_marker);
 
+	WM_operatortype_append(CLIP_OT_frame_jump);
+
 	WM_operatortype_append(CLIP_OT_detect_features);
 }
 
@@ -301,6 +306,7 @@
 	RNA_enum_set(WM_keymap_add_item(keymap, "CLIP_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "action", SEL_INVERT);
 	WM_keymap_add_item(keymap, "CLIP_OT_select_border", BKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "CLIP_OT_select_circle", CKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_menu(keymap, "CLIP_MT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0);
 
 	WM_keymap_add_item(keymap, "CLIP_OT_add_marker_slide", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
 
@@ -346,6 +352,12 @@
 	kmi= WM_keymap_add_item(keymap, "CLIP_OT_lock_tracks", LKEY, KM_PRESS, KM_ALT, 0);
 	RNA_enum_set(kmi->ptr, "action", 1);
 
+	WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
+	kmi= WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
+	RNA_boolean_set(kmi->ptr, "end", 1);
+
+	WM_keymap_add_item(keymap, "CLIP_OT_join_tracks", JKEY, KM_PRESS, KM_CTRL, 0);
+
 	transform_keymap_for_space(keyconf, keymap, SPACE_CLIP);
 }
 

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-22 16:02:56 UTC (rev 38611)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-22 16:18:51 UTC (rev 38612)
@@ -49,6 +49,7 @@
 #include "BKE_object.h"
 #include "BKE_report.h"
 #include "BKE_scene.h"
+#include "BKE_sound.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -127,17 +128,17 @@
 {
 	MovieClip *clip= ED_space_clip(sc);
 	MovieTrackingTrack *track;
-	int width, height, select= 0;
+	int width, height, sel= 0;
 
 	ED_space_clip_size(sc, &width, &height);
 
 	track= BKE_tracking_add_track(&clip->tracking, x, y, sc->user.framenr, width, height);
 
-	select= TRACK_AREA_POINT;
-	if(sc->flag&SC_SHOW_MARKER_PATTERN) select|= TRACK_AREA_PAT;
-	if(sc->flag&SC_SHOW_MARKER_SEARCH) select|= TRACK_AREA_SEARCH;
+	sel= TRACK_AREA_POINT;
+	if(sc->flag&SC_SHOW_MARKER_PATTERN) sel|= TRACK_AREA_PAT;
+	if(sc->flag&SC_SHOW_MARKER_SEARCH) sel|= TRACK_AREA_SEARCH;
 
-	BKE_movieclip_select_track(clip, track, select, 0);
+	BKE_movieclip_select_track(clip, track, sel, 0);
 	BKE_movieclip_set_selection(clip, MCLIP_SEL_TRACK, track);
 }
 
@@ -743,6 +744,91 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list