[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