[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42213] trunk/blender: Camera tracking: merging tracking presets stuff from tomato branch

Sergey Sharybin sergey.vfx at gmail.com
Mon Nov 28 14:26:55 CET 2011


Revision: 42213
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42213
Author:   nazgul
Date:     2011-11-28 13:26:46 +0000 (Mon, 28 Nov 2011)
Log Message:
-----------
Camera tracking: merging tracking presets stuff from tomato branch

This commit implements:

- Configurable settings for newly creating tracks
  Now it's possible to set tracking algorithm and it's settings for
  all newly creating tracks including manual tracks creation and
  tracks creation by "Detect Features" operator.
- Moves margin, frames limit and adjust frame inside per-track
  settings.
  Was request from Francois for this.
- Adjust Frames replaced with menu called Pattern Match where it's
  possible to choose between matching pattern from keyframe frame
  or from previously tracked frame.
  Didn't see somebody used adjust frames values differ from 0 and 1,
  and this menu should make things more clear here/

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_operators/presets.py
    trunk/blender/release/scripts/startup/bl_ui/space_clip.py
    trunk/blender/source/blender/blenkernel/BKE_tracking.h
    trunk/blender/source/blender/blenkernel/intern/movieclip.c
    trunk/blender/source/blender/blenkernel/intern/tracking.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/space_clip/tracking_ops.c
    trunk/blender/source/blender/makesdna/DNA_tracking_types.h
    trunk/blender/source/blender/makesrna/intern/rna_tracking.c

Modified: trunk/blender/release/scripts/startup/bl_operators/presets.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/presets.py	2011-11-28 13:08:12 UTC (rev 42212)
+++ trunk/blender/release/scripts/startup/bl_operators/presets.py	2011-11-28 13:26:46 UTC (rev 42213)
@@ -360,6 +360,30 @@
     preset_subdir = "tracking_track_color"
 
 
+class AddPresetTrackingSettings(AddPresetBase, Operator):
+    '''Add a motion tracking settings preset'''
+    bl_idname = "clip.tracking_settings_preset_add"
+    bl_label = "Add Tracking Settings Preset"
+    preset_menu = "CLIP_MT_tracking_settings_presets"
+
+    preset_defines = [
+        "settings = bpy.context.edit_movieclip.tracking.settings"
+    ]
+
+    preset_values = [
+        "settings.default_tracker",
+        "settings.default_pyramid_levels",
+        "settings.default_correlation_min",
+        "settings.default_pattern_size",
+        "settings.default_search_size",
+        "settings.default_frames_limit",
+        "settings.default_pattern_match",
+        "settings.default_margin"
+    ]
+
+    preset_subdir = "tracking_settings"
+
+
 class AddPresetKeyconfig(AddPresetBase, Operator):
     '''Add a Keyconfig Preset'''
     bl_idname = "wm.keyconfig_preset_add"

Modified: trunk/blender/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2011-11-28 13:08:12 UTC (rev 42212)
+++ trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2011-11-28 13:26:46 UTC (rev 42213)
@@ -92,6 +92,9 @@
         return clip and sc.mode == 'TRACKING'
 
     def draw(self, context):
+        sc = context.space_data
+        clip = sc.clip
+        settings = clip.tracking.settings
         layout = self.layout
 
         col = layout.column(align=True)
@@ -99,7 +102,46 @@
         col.operator("clip.detect_features")
         col.operator("clip.delete_track")
 
+        box = layout.box()
+        row = box.row(align=True)
+        row.prop(settings, "show_default_expanded", text="", emboss=False)
+        row.label(text="Default Settings")
 
+        if settings.show_default_expanded:
+            col = box.column()
+            row = col.row(align=True)
+            label = bpy.types.CLIP_MT_tracking_settings_presets.bl_label
+            row.menu('CLIP_MT_tracking_settings_presets', text=label)
+            row.operator("clip.tracking_settings_preset_add",
+                         text="", icon='ZOOMIN')
+            props = row.operator("clip.track_color_preset_add",
+                                 text="", icon='ZOOMOUT')
+            props.remove_active = True
+
+            col.separator()
+
+            col2 = col.column(align=True)
+            col2.prop(settings, "default_pattern_size")
+            col2.prop(settings, "default_search_size")
+
+            col.label(text="Tracker:")
+            col.prop(settings, "default_tracker", text="")
+
+            if settings.default_tracker == 'KLT':
+                col.prop(settings, "default_pyramid_levels")
+            else:
+                col.prop(settings, "default_correlation_min")
+
+            col.separator()
+
+            col2 = col.column(align=True)
+            col2.prop(settings, "default_frames_limit")
+            col2.prop(settings, "default_margin")
+
+            col.label(text="Match:")
+            col.prop(settings, "default_pattern_match", text="")
+
+
 class CLIP_PT_tools_tracking(Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'TOOLS'
@@ -447,20 +489,25 @@
         clip = context.space_data.clip
         settings = clip.tracking.settings
 
+        col = layout.column()
+
         active = clip.tracking.tracks.active
         if active:
-            layout.prop(active, "tracker")
+            col.prop(active, "tracker")
+
             if active.tracker == 'KLT':
-                layout.prop(active, "pyramid_levels")
+                col.prop(active, "pyramid_levels")
             elif active.tracker == 'SAD':
-                layout.prop(active, "correlation_min")
+                col.prop(active, "correlation_min")
 
-        layout.prop(settings, "frames_adjust")
-        layout.prop(settings, "speed")
-        layout.prop(settings, "frames_limit")
-        layout.prop(settings, "margin")
+            col.separator()
+            col.prop(active, "frames_limit")
+            col.prop(active, "margin")
+            col.prop(active, "pattern_match", text="Match")
 
+        col.prop(settings, "speed")
 
+
 class CLIP_PT_stabilization(Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'UI'
@@ -866,6 +913,14 @@
     draw = bpy.types.Menu.draw_preset
 
 
+class CLIP_MT_tracking_settings_presets(Menu):
+    """Predefined tracking settings"""
+    bl_label = "Tracking Presets"
+    preset_subdir = "tracking_settings"
+    preset_operator = "script.execute_preset"
+    draw = bpy.types.Menu.draw_preset
+
+
 class CLIP_MT_track_color_specials(Menu):
     bl_label = "Track Color Specials"
 

Modified: trunk/blender/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_tracking.h	2011-11-28 13:08:12 UTC (rev 42212)
+++ trunk/blender/source/blender/blenkernel/BKE_tracking.h	2011-11-28 13:26:46 UTC (rev 42213)
@@ -44,6 +44,7 @@
 struct Object;
 struct Scene;
 
+void BKE_tracking_init_settings(struct MovieTracking *tracking);
 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event);
 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int flag, int clear);
 

Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c	2011-11-28 13:08:12 UTC (rev 42212)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c	2011-11-28 13:26:46 UTC (rev 42213)
@@ -369,20 +369,8 @@
 
 	clip->aspx= clip->aspy= 1.0f;
 
-	clip->tracking.camera.sensor_width= 35.0f;
-	clip->tracking.camera.pixel_aspect= 1.0f;
-	clip->tracking.camera.units= CAMERA_UNITS_MM;
+	BKE_tracking_init_settings(&clip->tracking);
 
-	clip->tracking.settings.frames_limit= 0;
-	clip->tracking.settings.keyframe1= 1;
-	clip->tracking.settings.keyframe2= 30;
-	clip->tracking.settings.dist= 1;
-
-	clip->tracking.stabilization.scaleinf= 1.0f;
-	clip->tracking.stabilization.locinf= 1.0f;
-	clip->tracking.stabilization.rotinf= 1.0f;
-	clip->tracking.stabilization.maxscale= 2.0f;
-
 	clip->proxy.build_size_flag= IMB_PROXY_25;
 	clip->proxy.build_tc_flag= IMB_TC_RECORD_RUN|IMB_TC_FREE_RUN|IMB_TC_INTERPOLATED_REC_DATE_FREE_RUN;
 	clip->proxy.quality= 90;

Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c	2011-11-28 13:08:12 UTC (rev 42212)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c	2011-11-28 13:26:46 UTC (rev 42213)
@@ -70,14 +70,37 @@
 
 /*********************** common functions *************************/
 
+void BKE_tracking_init_settings(MovieTracking *tracking)
+{
+	tracking->camera.sensor_width= 35.0f;
+	tracking->camera.pixel_aspect= 1.0f;
+	tracking->camera.units= CAMERA_UNITS_MM;
+
+	tracking->settings.default_tracker= TRACKER_KLT;
+	tracking->settings.default_pyramid_levels= 2;
+	tracking->settings.default_minimum_correlation= 0.75;
+	tracking->settings.default_pattern_size= 11;
+	tracking->settings.default_search_size= 51;
+	tracking->settings.default_pyramid_levels= 2;
+	tracking->settings.keyframe1= 1;
+	tracking->settings.keyframe2= 30;
+	tracking->settings.dist= 1;
+
+	tracking->stabilization.scaleinf= 1.0f;
+	tracking->stabilization.locinf= 1.0f;
+	tracking->stabilization.rotinf= 1.0f;
+	tracking->stabilization.maxscale= 2.0f;
+}
+
 void BKE_tracking_clamp_track(MovieTrackingTrack *track, int event)
 {
 	int a;
 	float pat_min[2];
 	float pat_max[2];
 	float max_pyramid_level_factor = 1.0;
+
 	if (track->tracker == TRACKER_KLT) {
-		max_pyramid_level_factor = 1 << (track->pyramid_levels - 1);
+		max_pyramid_level_factor= 1 << (track->pyramid_levels - 1);
 	}
 
 	/* sort */
@@ -146,7 +169,7 @@
 		float dim[2];
 		sub_v2_v2v2(dim, track->pat_max, track->pat_min);
 		{
-			float search_ratio = 2.3f * max_pyramid_level_factor;
+			float search_ratio= 2.3f * max_pyramid_level_factor;
 
 			/* resize the search area to something sensible based
 			 * on the number of pyramid levels */
@@ -190,26 +213,28 @@
 {
 	MovieTrackingTrack *track;
 	MovieTrackingMarker marker;
+	MovieTrackingSettings *settings= &tracking->settings;
 
-	/* pick reasonable defaults */
-	float pat[2]= {5.5f, 5.5f}, search[2]= {25.5f, 25.5f}; /* TODO: move to default setting? */
+	float half_pattern= (float)settings->default_pattern_size/2.0f;
+	float half_search= (float)settings->default_search_size/2.0f;
+	float pat[2], search[2];
 
-	pat[0] /= (float)width;
-	pat[1] /= (float)height;
+	pat[0]= half_pattern/(float)width;
+	pat[1]= half_pattern/(float)height;
 
-	search[0] /= (float)width;
-	search[1] /= (float)height;
+	search[0]= half_search/(float)width;
+	search[1]= half_search/(float)height;
 
 	track= MEM_callocN(sizeof(MovieTrackingTrack), "add_marker_exec track");
 	strcpy(track->name, "Track");
 
-	/* default to KLT tracker */
-	track->tracker = TRACKER_KLT;
-	track->pyramid_levels = 2;
+	track->tracker= settings->default_tracker;
+	track->pyramid_levels= settings->default_pyramid_levels;
+	track->minimum_correlation= settings->default_minimum_correlation;
+	track->margin= settings->default_margin;
+	track->pattern_match= settings->default_pattern_match;
+	track->frames_limit= settings->default_frames_limit;
 
-	/* set SAD defaults even though it's not selected by default */
-	track->minimum_correlation= 0.75f;
-
 	memset(&marker, 0, sizeof(marker));
 	marker.pos[0]= x;
 	marker.pos[1]= y;
@@ -223,6 +248,8 @@
 
 	BKE_tracking_insert_marker(track, &marker);
 
+	BKE_tracking_clamp_track(track, CLAMP_PYRAMID_LEVELS);
+
 	BLI_addtail(&tracking->tracks, track);
 	BKE_track_unique_name(tracking, track);
 
@@ -1050,7 +1077,7 @@
 {
 	ImBuf *ibuf= NULL;
 
-	if(context->settings.adjframes == 0) {
+	if(track->pattern_match == TRACK_MATCH_KEYFRAME) {
 		ibuf= get_keyframed_ibuf(context, track, marker, marker_keyed);
 	} else {

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list