Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2011-11-28 17:08:12 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2011-11-28 17:08:12 +0400
commit48c5820049ecd26cd315478c50cc53855c78a61f (patch)
tree3f743c38024b17f660d48cbc92b3ba4371278886
parentd0023ed4bafe68402c7d7c9edda4592bbc5a47be (diff)
Camera tracking: move margin, frames limit and adjust frames to per-track settings
Also replace adjust frames integer slider with menu to choose between matching pattern from keyframe position of from previous frame. think this settings wouldn't be so confusing now.
-rw-r--r--release/scripts/presets/tracking_settings/blurry_movie.py3
-rw-r--r--release/scripts/presets/tracking_settings/default.py3
-rw-r--r--release/scripts/presets/tracking_settings/fast_motion.py3
-rw-r--r--release/scripts/startup/bl_operators/presets.py3
-rw-r--r--release/scripts/startup/bl_ui/space_clip.py20
-rw-r--r--source/blender/blenkernel/intern/tracking.c23
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c38
-rw-r--r--source/blender/makesdna/DNA_tracking_types.h43
-rw-r--r--source/blender/makesrna/intern/rna_tracking.c71
9 files changed, 134 insertions, 73 deletions
diff --git a/release/scripts/presets/tracking_settings/blurry_movie.py b/release/scripts/presets/tracking_settings/blurry_movie.py
index ad965337937..8a503bec9bd 100644
--- a/release/scripts/presets/tracking_settings/blurry_movie.py
+++ b/release/scripts/presets/tracking_settings/blurry_movie.py
@@ -6,3 +6,6 @@ settings.default_pyramid_levels = 4
settings.default_correlation_min = 0.75
settings.default_pattern_size = 11
settings.default_search_size = 202
+settings.default_frames_limit = 25
+settings.default_pattern_match = 'KEYFRAME'
+settings.default_margin = 0
diff --git a/release/scripts/presets/tracking_settings/default.py b/release/scripts/presets/tracking_settings/default.py
index 4f1e23fb65c..4b2d41bf292 100644
--- a/release/scripts/presets/tracking_settings/default.py
+++ b/release/scripts/presets/tracking_settings/default.py
@@ -6,3 +6,6 @@ settings.default_pyramid_levels = 2
settings.default_correlation_min = 0.75
settings.default_pattern_size = 11
settings.default_search_size = 51
+settings.default_frames_limit = 0
+settings.default_pattern_match = 'KEYFRAME'
+settings.default_margin = 0
diff --git a/release/scripts/presets/tracking_settings/fast_motion.py b/release/scripts/presets/tracking_settings/fast_motion.py
index 0ca768adef2..a3d382e6700 100644
--- a/release/scripts/presets/tracking_settings/fast_motion.py
+++ b/release/scripts/presets/tracking_settings/fast_motion.py
@@ -6,3 +6,6 @@ settings.default_pyramid_levels = 2
settings.default_correlation_min = 0.75
settings.default_pattern_size = 11
settings.default_search_size = 121
+settings.default_frames_limit = 0
+settings.default_pattern_match = 'KEYFRAME'
+settings.default_margin = 0
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index 1eeae28783e..a5c8c280616 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -376,6 +376,9 @@ class AddPresetTrackingSettings(AddPresetBase, Operator):
"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"
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index dbfa6a24ec3..22d44ed4793 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -132,6 +132,15 @@ class CLIP_PT_tools_marker(Panel):
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'
@@ -492,12 +501,11 @@ class CLIP_PT_track_settings(Panel):
col.prop(active, "correlation_min")
col.separator()
- col.label(text="Global Settings:")
+ col.prop(active, "frames_limit")
+ col.prop(active, "margin")
+ col.prop(active, "pattern_match", text="Match")
col.prop(settings, "speed")
- col.prop(settings, "frames_adjust")
- col.prop(settings, "frames_limit")
- col.prop(settings, "margin")
class CLIP_PT_stabilization(Panel):
@@ -906,8 +914,8 @@ class CLIP_MT_track_color_presets(Menu):
class CLIP_MT_tracking_settings_presets(Menu):
- """Predefined track color"""
- bl_label = "Tracking Settings"
+ """Predefined tracking settings"""
+ bl_label = "Tracking Presets"
preset_subdir = "tracking_settings"
preset_operator = "script.execute_preset"
draw = bpy.types.Menu.draw_preset
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index 4c54e9f22f5..0a9412e9b36 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -82,7 +82,6 @@ void BKE_tracking_init_settings(MovieTracking *tracking)
tracking->settings.default_pattern_size= 11;
tracking->settings.default_search_size= 51;
tracking->settings.default_pyramid_levels= 2;
- tracking->settings.frames_limit= 0;
tracking->settings.keyframe1= 1;
tracking->settings.keyframe2= 30;
tracking->settings.dist= 1;
@@ -229,12 +228,12 @@ MovieTrackingTrack *BKE_tracking_add_track(MovieTracking *tracking, float x, flo
track= MEM_callocN(sizeof(MovieTrackingTrack), "add_marker_exec track");
strcpy(track->name, "Track");
- /* default to KLT tracker */
- track->tracker = settings->default_tracker;
- track->pyramid_levels = settings->default_pyramid_levels;
-
- /* set SAD defaults even though it's not selected by default */
+ 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;
memset(&marker, 0, sizeof(marker));
marker.pos[0]= x;
@@ -1078,7 +1077,7 @@ static ImBuf *get_adjust_ibuf(MovieTrackingContext *context, MovieTrackingTrack
{
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 {
ibuf= get_frame_ibuf(context, curfra);
@@ -1161,8 +1160,10 @@ int BKE_tracking_next(MovieTrackingContext *context)
int onbound= 0, coords_correct= 0;
int nextfra;
- if(!context->settings.adjframes) need_readjust= context->first_time;
- else need_readjust= context->frames%context->settings.adjframes == 0;
+ if(track->pattern_match==TRACK_MATCH_KEYFRAME)
+ need_readjust= context->first_time;
+ else
+ need_readjust= 1;
if(context->backwards) nextfra= curfra-1;
else nextfra= curfra+1;
@@ -1170,8 +1171,8 @@ int BKE_tracking_next(MovieTrackingContext *context)
/* margin from frame boundaries */
sub_v2_v2v2(margin, track->pat_max, track->pat_min);
- margin[0]= MAX2(margin[0], (float)context->settings.margin / ibuf_new->x);
- margin[1]= MAX2(margin[1], (float)context->settings.margin / ibuf_new->y);
+ margin[0]= MAX2(margin[0], (float)track->margin / ibuf_new->x);
+ margin[1]= MAX2(margin[1], (float)track->margin / ibuf_new->y);
/* do not track markers which are too close to boundary */
if(marker->pos[0]<margin[0] || marker->pos[0]>1.0f-margin[0] ||
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index e91331e5252..6f3bd6810e5 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -1221,10 +1221,11 @@ static int track_count_markers(SpaceClip *sc, MovieClip *clip)
return tot;
}
-static void track_init_markers(SpaceClip *sc, MovieClip *clip)
+static void track_init_markers(SpaceClip *sc, MovieClip *clip, int *frames_limit_r)
{
MovieTrackingTrack *track;
int framenr= sc->user.framenr, hidden= 0;
+ int frames_limit= 0;
if((sc->flag&SC_SHOW_MARKER_PATTERN)==0) hidden|= TRACK_AREA_PAT;
if((sc->flag&SC_SHOW_MARKER_SEARCH)==0) hidden|= TRACK_AREA_SEARCH;
@@ -1235,12 +1236,22 @@ static void track_init_markers(SpaceClip *sc, MovieClip *clip)
BKE_tracking_track_flag(track, hidden, SELECT, 1);
if(TRACK_SELECTED(track)) {
- if((track->flag&TRACK_HIDDEN)==0 && (track->flag&TRACK_LOCKED)==0)
+ if((track->flag&TRACK_HIDDEN)==0 && (track->flag&TRACK_LOCKED)==0) {
BKE_tracking_ensure_marker(track, framenr);
+
+ if(track->frames_limit) {
+ if(frames_limit==0)
+ frames_limit= track->frames_limit;
+ else
+ frames_limit= MIN2(frames_limit, track->frames_limit);
+ }
+ }
}
track= track->next;
}
+
+ *frames_limit_r= frames_limit;
}
static int track_markers_check_direction(int backwards, int curfra, int efra)
@@ -1261,6 +1272,9 @@ static int track_markers_initjob(bContext *C, TrackMarkersJob *tmj, int backward
MovieClip *clip= ED_space_clip(sc);
Scene *scene= CTX_data_scene(C);
MovieTrackingSettings *settings= &clip->tracking.settings;
+ int frames_limit;
+
+ track_init_markers(sc, clip, &frames_limit);
tmj->sfra= sc->user.framenr;
tmj->clip= clip;
@@ -1270,9 +1284,9 @@ static int track_markers_initjob(bContext *C, TrackMarkersJob *tmj, int backward
else tmj->efra= EFRA;
/* limit frames to be tracked by user setting */
- if(settings->frames_limit) {
- if(backwards) tmj->efra= MAX2(tmj->efra, tmj->sfra-settings->frames_limit);
- else tmj->efra= MIN2(tmj->efra, tmj->sfra+settings->frames_limit);
+ if(frames_limit) {
+ if(backwards) tmj->efra= MAX2(tmj->efra, tmj->sfra-frames_limit);
+ else tmj->efra= MIN2(tmj->efra, tmj->sfra+frames_limit);
}
if(settings->speed!=TRACKING_SPEED_FASTEST) {
@@ -1283,8 +1297,6 @@ static int track_markers_initjob(bContext *C, TrackMarkersJob *tmj, int backward
else if(settings->speed==TRACKING_SPEED_DOUBLE) tmj->delay/= 2;
}
- track_init_markers(sc, clip);
-
tmj->context= BKE_tracking_context_new(clip, &sc->user, backwards, 1);
clip->tracking_context= tmj->context;
@@ -1376,25 +1388,25 @@ static int track_markers_exec(bContext *C, wmOperator *op)
int sfra= framenr, efra;
int backwards= RNA_boolean_get(op->ptr, "backwards");
int sequence= RNA_boolean_get(op->ptr, "sequence");
- MovieTrackingSettings *settings= &clip->tracking.settings;
+ int frames_limit;
if(track_count_markers(sc, clip)==0)
return OPERATOR_CANCELLED;
+ track_init_markers(sc, clip, &frames_limit);
+
if(backwards) efra= SFRA;
else efra= EFRA;
/* limit frames to be tracked by user setting */
- if(settings->frames_limit) {
- if(backwards) efra= MAX2(efra, sfra-settings->frames_limit);
- else efra= MIN2(efra, sfra+settings->frames_limit);
+ if(frames_limit) {
+ if(backwards) efra= MAX2(efra, sfra-frames_limit);
+ else efra= MIN2(efra, sfra+frames_limit);
}
if(!track_markers_check_direction(backwards, framenr, efra))
return OPERATOR_CANCELLED;
- track_init_markers(sc, clip);
-
/* do not disable tracks due to threshold when tracking frame-by-frame */
context= BKE_tracking_context_new(clip, &sc->user, backwards, sequence);
diff --git a/source/blender/makesdna/DNA_tracking_types.h b/source/blender/makesdna/DNA_tracking_types.h
index 931ed6fb8c6..c4e6fcc4dc8 100644
--- a/source/blender/makesdna/DNA_tracking_types.h
+++ b/source/blender/makesdna/DNA_tracking_types.h
@@ -100,41 +100,40 @@ typedef struct MovieTrackingTrack {
float color[3]; /* custom color for track */
/* tracking algorithm to use; can be KLT or SAD */
- short tracker;
- char pad4[2];
+ short frames_limit; /* number of frames to be tarcked during single tracking session (if TRACKING_FRAMES_LIMIT is set) */
+ short margin; /* margin from frame boundaries */
+ short pattern_match; /* re-adjust every N frames */
- /* ** SAD tracker settings ** */
- float minimum_correlation; /* minimal correlation which is still treated as successful tracking */
+ short tracker; /* tracking algorithm used for this track */
/* ** KLT tracker settings ** */
- short pyramid_levels; /* number of pyramid levels to use for KLT tracking */
- char pad5[6];
+ short pyramid_levels, pad2; /* number of pyramid levels to use for KLT tracking */
+
+ /* ** SAD tracker settings ** */
+ float minimum_correlation; /* minimal correlation which is still treated as successful tracking */
} MovieTrackingTrack;
typedef struct MovieTrackingSettings {
+ int flag;
+
/* ** default tracker settings */
short default_tracker; /* tracking algorithm used by default */
short default_pyramid_levels; /* number of pyramid levels to use for KLT tracking */
float default_minimum_correlation; /* minimal correlation which is still treated as successful tracking */
short default_pattern_size; /* size of pattern area for new tracks */
short default_search_size; /* size of search area for new tracks */
+ short default_frames_limit; /* number of frames to be tarcked during single tracking session (if TRACKING_FRAMES_LIMIT is set) */
+ short default_margin; /* margin from frame boundaries */
+ short default_pattern_match; /* re-adjust every N frames */
/* ** common tracker settings ** */
short speed; /* speed of tracking */
- short frames_limit; /* number of frames to be tarcked during single tracking session (if TRACKING_FRAMES_LIMIT is set) */
- short margin; /* margin from frame boundaries */
-
- short pad;
- int flag;
-
- int adjframes; /* re-adjust every N frames */
/* ** reconstruction settings ** */
int keyframe1, keyframe2; /* two keyframes for reconstrution initialization */
/* ** which camera intrinsics to refine. uses on the REFINE_* flags */
- short refine_camera_intrinsics;
- short pad2;
+ short refine_camera_intrinsics, pad2;
/* ** tool settings ** */
@@ -143,7 +142,7 @@ typedef struct MovieTrackingSettings {
/* cleanup */
int clean_frames, clean_action;
- float clean_error;
+ float clean_error, pad;
} MovieTrackingSettings;
typedef struct MovieTrackingStabilization {
@@ -209,13 +208,17 @@ enum {
#define TRACK_CUSTOMCOLOR (1<<7)
#define TRACK_USE_2D_STAB (1<<8)
-/* MovieTrackingSettings->flag */
-#define TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED (1<<0)
-
-/* MovieTrackingSettings->tracker */
+/* MovieTrackingTrack->tracker */
#define TRACKER_KLT 0
#define TRACKER_SAD 1
+/* MovieTrackingTrack->adjframes */
+#define TRACK_MATCH_KEYFRAME 0
+#define TRACK_MATCH_PREVFRAME 1
+
+/* MovieTrackingSettings->flag */
+#define TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED (1<<0)
+
/* MovieTrackingSettings->speed */
#define TRACKING_SPEED_FASTEST 0
#define TRACKING_SPEED_REALTIME 1
diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index 8d20aeafa54..a3d043ab6ec 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -271,6 +271,11 @@ static EnumPropertyItem tracker_items[] = {
{TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker which can be used when MLT tracker fails"},
{0, NULL, 0, NULL, NULL}};
+static EnumPropertyItem pattern_match_items[] = {
+ {TRACK_MATCH_KEYFRAME, "KEYFRAME", 0, "Keyframe", "Track pattern from keyframe to next frame"},
+ {TRACK_MATCH_PREVFRAME, "PREV_FRAME", 0, "Previous frame", "Track pattern from current frame to next frame"},
+ {0, NULL, 0, NULL, NULL}};
+
static int rna_matrix_dimsize_4x4[]= {4, 4};
static void rna_def_trackingSettings(BlenderRNA *brna)
@@ -319,27 +324,6 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
RNA_def_property_enum_items(prop, speed_items);
RNA_def_property_ui_text(prop, "Speed", "Limit speed of tracking to make visual feedback easier (this does not affect the tracking quality)");
- /* limit frames */
- prop= RNA_def_property(srna, "frames_limit", PROP_INT, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_sdna(prop, NULL, "frames_limit");
- RNA_def_property_range(prop, 0, SHRT_MAX);
- RNA_def_property_ui_text(prop, "Frames Limit", "Every tracking cycle, this amount of frames are tracked");
-
- /* adjust frames */
- prop= RNA_def_property(srna, "frames_adjust", PROP_INT, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_sdna(prop, NULL, "adjframes");
- RNA_def_property_range(prop, 0, INT_MAX);
- RNA_def_property_ui_text(prop, "Adjust Frames", "Automatically re-adjust marker position using position on each N frames. 0 means only keyframed position is used");
-
- /* margin */
- prop= RNA_def_property(srna, "margin", PROP_INT, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_sdna(prop, NULL, "margin");
- RNA_def_property_range(prop, 0, 300);
- RNA_def_property_ui_text(prop, "Margin", "Distance from image boudary at which marker stops tracking");
-
/* keyframe_a */
prop= RNA_def_property(srna, "keyframe_a", PROP_INT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
@@ -389,20 +373,40 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Action", "Cleanup action to execute");
/* ** default tracker settings ** */
-
prop= RNA_def_property(srna, "show_default_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED);
RNA_def_property_ui_text(prop, "Show Expanded", "Show the expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
+ /* limit frames */
+ prop= RNA_def_property(srna, "default_frames_limit", PROP_INT, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_int_sdna(prop, NULL, "default_frames_limit");
+ RNA_def_property_range(prop, 0, SHRT_MAX);
+ RNA_def_property_ui_text(prop, "Frames Limit", "Every tracking cycle, this amount of frames are tracked");
+
+ /* pattern match */
+ prop= RNA_def_property(srna, "default_pattern_match", PROP_ENUM, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_enum_sdna(prop, NULL, "default_pattern_match");
+ RNA_def_property_enum_items(prop, pattern_match_items);
+ RNA_def_property_ui_text(prop, "Pattern Match", "Track pattern from given frame when tracking marker to next frame");
+
+ /* margin */
+ prop= RNA_def_property(srna, "default_margin", PROP_INT, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_int_sdna(prop, NULL, "default_margin");
+ RNA_def_property_range(prop, 0, 300);
+ RNA_def_property_ui_text(prop, "Margin", "Default distance from image boudary at which marker stops tracking");
+
/* tracking algorithm */
prop= RNA_def_property(srna, "default_tracker", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_enum_items(prop, tracker_items);
RNA_def_property_update(prop, 0, "rna_tracking_defaultSettings_levelsUpdate");
- RNA_def_property_ui_text(prop, "Tracker", "Tracking algorithm to use");
+ RNA_def_property_ui_text(prop, "Tracker", "Default tracking algorithm to use");
/* pyramid level for pyramid klt tracking */
prop= RNA_def_property(srna, "default_pyramid_levels", PROP_INT, PROP_NONE);
@@ -598,6 +602,27 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Search Max", "Right-bottom corner of search area in normalized coordinates relative to marker position");
RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerSearch_update");
+ /* limit frames */
+ prop= RNA_def_property(srna, "frames_limit", PROP_INT, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_int_sdna(prop, NULL, "frames_limit");
+ RNA_def_property_range(prop, 0, SHRT_MAX);
+ RNA_def_property_ui_text(prop, "Frames Limit", "Every tracking cycle, this amount of frames are tracked");
+
+ /* pattern match */
+ prop= RNA_def_property(srna, "pattern_match", PROP_ENUM, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_enum_sdna(prop, NULL, "pattern_match");
+ RNA_def_property_enum_items(prop, pattern_match_items);
+ RNA_def_property_ui_text(prop, "Pattern Match", "Track pattern from given frame when tracking marker to next frame");
+
+ /* margin */
+ prop= RNA_def_property(srna, "margin", PROP_INT, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_int_sdna(prop, NULL, "margin");
+ RNA_def_property_range(prop, 0, 300);
+ RNA_def_property_ui_text(prop, "Margin", "Distance from image boudary at which marker stops tracking");
+
/* tracking algorithm */
prop= RNA_def_property(srna, "tracker", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);