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:
Diffstat (limited to 'source/blender/makesrna/intern/rna_tracking.c')
-rw-r--r--source/blender/makesrna/intern/rna_tracking.c265
1 files changed, 131 insertions, 134 deletions
diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index 7a6753ad588..aaa96fc4d95 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -59,20 +59,6 @@ static char *rna_tracking_path(PointerRNA *UNUSED(ptr))
return BLI_sprintfN("tracking");
}
-static void rna_tracking_defaultSettings_levelsUpdate(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
-{
- MovieClip *clip = (MovieClip*)ptr->id.data;
- MovieTracking *tracking = &clip->tracking;
- MovieTrackingSettings *settings = &tracking->settings;
-
- if (settings->default_tracker == TRACKER_KLT) {
- int max_pyramid_level_factor = 1 << (settings->default_pyramid_levels - 1);
- float search_ratio = 2.3f * max_pyramid_level_factor;
-
- settings->default_search_size = settings->default_pattern_size*search_ratio;
- }
-}
-
static void rna_tracking_defaultSettings_patternUpdate(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
MovieClip *clip = (MovieClip*)ptr->id.data;
@@ -209,37 +195,6 @@ static void rna_trackingTrack_select_set(PointerRNA *ptr, int value)
}
}
-static void rna_tracking_trackerPattern_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
-{
- MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
-
- BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
-}
-
-static void rna_tracking_trackerSearch_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
-{
- MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
-
- BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
-}
-
-static void rna_tracking_trackerAlgorithm_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
-{
- MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
-
- if (track->tracker == TRACKER_KLT)
- BKE_tracking_clamp_track(track, CLAMP_PYRAMID_LEVELS);
- else
- BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
-}
-
-static void rna_tracking_trackerPyramid_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
-{
- MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
-
- BKE_tracking_clamp_track(track, CLAMP_PYRAMID_LEVELS);
-}
-
static char *rna_trackingCamera_path(PointerRNA *UNUSED(ptr))
{
return BLI_sprintfN("tracking.camera");
@@ -338,6 +293,20 @@ static void rna_trackingObject_tracks_begin(CollectionPropertyIterator *iter, Po
}
}
+static PointerRNA rna_trackingObject_reconstruction_get(PointerRNA *ptr)
+{
+ MovieTrackingObject *object = (MovieTrackingObject* )ptr->data;
+
+ if (object->flag & TRACKING_OBJECT_CAMERA) {
+ MovieClip *clip = (MovieClip*)ptr->id.data;
+
+ return rna_pointer_inherit_refine(ptr, &RNA_MovieTrackingReconstruction, &clip->tracking.reconstruction);
+ }
+ else {
+ return rna_pointer_inherit_refine(ptr, &RNA_MovieTrackingReconstruction, &object->reconstruction);
+ }
+}
+
static PointerRNA rna_tracking_active_object_get(PointerRNA *ptr)
{
MovieClip *clip = (MovieClip*)ptr->id.data;
@@ -399,6 +368,20 @@ static void rna_trackingMarker_frame_set(PointerRNA *ptr, int value)
}
}
+static void rna_tracking_markerPattern_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+ MovieTrackingMarker *marker = (MovieTrackingMarker *)ptr->data;
+
+ BKE_tracking_clamp_marker(marker, CLAMP_PAT_DIM);
+}
+
+static void rna_tracking_markerSearch_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+ MovieTrackingMarker *marker = (MovieTrackingMarker *)ptr->data;
+
+ BKE_tracking_clamp_marker(marker, CLAMP_SEARCH_DIM);
+}
+
/* API */
static void add_tracks_to_base(MovieClip *clip, MovieTracking *tracking, ListBase *tracksbase, int frame, int number)
@@ -484,11 +467,19 @@ void rna_trackingMarkers_delete_frame(MovieTrackingTrack *track, int framenr)
#else
-static EnumPropertyItem tracker_items[] = {
- {TRACKER_KLT, "KLT", 0, "KLT",
- "Kanade–Lucas–Tomasi tracker which works with most of video clips, a bit slower than SAD"},
- {TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker which can be used when KLT tracker fails"},
- {TRACKER_HYBRID, "Hybrid", 0, "Hybrid", "A hybrid tracker that uses SAD for rough tracking, KLT for refinement."},
+static EnumPropertyItem tracker_motion_model[] = {
+ {TRACK_MOTION_MODEL_HOMOGRAPHY, "Perspective", 0, "Perspective",
+ "Search for markers that are perspectively deformed (homography) between frames."},
+ {TRACK_MOTION_MODEL_AFFINE, "Affine", 0, "Affine",
+ "Search for markers that are affine-deformed (t, r, k, and skew) between frames."},
+ {TRACK_MOTION_MODEL_TRANSLATION_ROTATION_SCALE, "LocRotScale", 0, "LocRotScale",
+ "Search for markers that are translated, rotated, and scaled between frames."},
+ {TRACK_MOTION_MODEL_TRANSLATION_SCALE, "LocScale", 0, "LocScale",
+ "Search for markers that are translated and scaled between frames."},
+ {TRACK_MOTION_MODEL_TRANSLATION_ROTATION, "LocRot", 0, "LocRot",
+ "Search for markers that are translated and rotated between frames."},
+ {TRACK_MOTION_MODEL_TRANSLATION, "Loc", 0, "Loc",
+ "Search for markers that are translated between frames."},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem pattern_match_items[] = {
@@ -497,6 +488,7 @@ static EnumPropertyItem pattern_match_items[] = {
{0, NULL, 0, NULL, NULL}};
static int rna_matrix_dimsize_4x4[] = {4, 4};
+static int rna_matrix_dimsize_4x2[] = {4, 2};
static void rna_def_trackingSettings(BlenderRNA *brna)
{
@@ -613,14 +605,14 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "motion_flag", TRACKING_MOTION_TRIPOD);
RNA_def_property_ui_text(prop, "Tripod Motion", "Use special solver to track a stable camera position, such as a tripod");
- /* limit frames */
+ /* default_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 number of frames are tracked");
- /* pattern match */
+ /* default_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");
@@ -628,40 +620,42 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pattern Match",
"Track pattern from given frame when tracking marker to next frame");
- /* margin */
+ /* default_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);
+ /* default_tracking_motion_model */
+ prop = RNA_def_property(srna, "default_motion_model", 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", "Default tracking algorithm to use");
+ RNA_def_property_enum_items(prop, tracker_motion_model);
+ RNA_def_property_ui_text(prop, "Motion model", "Default motion model to use for tracking");
- /* pyramid level for pyramid klt tracking */
- prop = RNA_def_property(srna, "default_pyramid_levels", PROP_INT, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_sdna(prop, NULL, "default_pyramid_levels");
- RNA_def_property_range(prop, 1, 16);
- RNA_def_property_update(prop, 0, "rna_tracking_defaultSettings_levelsUpdate");
- RNA_def_property_ui_text(prop, "Pyramid levels", "Default number of pyramid levels (increase on blurry footage)");
+ /* use_brute */
+ prop = RNA_def_property(srna, "default_use_brute", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "default_algorithm_flag", TRACK_ALGORITHM_FLAG_USE_BRUTE);
+ RNA_def_property_ui_text(prop, "Prepass", "Use a brute-force translation-only initialization when tracking");
+ RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+ /* default use_normalization */
+ prop = RNA_def_property(srna, "default_use_normalization", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "default_algorithm_flag", TRACK_ALGORITHM_FLAG_USE_NORMALIZATION);
+ RNA_def_property_ui_text(prop, "Normalize", "Normalize light intensities while tracking. Slower");
+ RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
- /* minmal correlation - only used for SAD tracker */
+ /* default minmal correlation */
prop = RNA_def_property(srna, "default_correlation_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_float_sdna(prop, NULL, "default_minimum_correlation");
- RNA_def_property_range(prop, -1.0f, 1.0f);
- RNA_def_property_ui_range(prop, -1.0f, 1.0f, 0.1, 3);
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.05, 3);
RNA_def_property_ui_text(prop, "Correlation",
- "Default minimal value of correlation between matched pattern and reference "
- "which is still treated as successful tracking");
+ "Default minimum value of correlation between matched pattern and reference "
+ "that is still treated as successful tracking");
/* default pattern size */
prop = RNA_def_property(srna, "default_pattern_size", PROP_INT, PROP_NONE);
@@ -679,19 +673,19 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_tracking_defaultSettings_searchUpdate");
RNA_def_property_ui_text(prop, "Search Size", "Size of search area for newly created tracks");
- /* use_red_channel */
+ /* default use_red_channel */
prop = RNA_def_property(srna, "use_default_red_channel", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "default_flag", TRACK_DISABLE_RED);
RNA_def_property_ui_text(prop, "Use Red Channel", "Use red channel from footage for tracking");
RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
- /* use_green_channel */
+ /* default_use_green_channel */
prop = RNA_def_property(srna, "use_default_green_channel", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "default_flag", TRACK_DISABLE_GREEN);
RNA_def_property_ui_text(prop, "Use Green Channel", "Use green channel from footage for tracking");
RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
- /* use_blue_channel */
+ /* default_use_blue_channel */
prop = RNA_def_property(srna, "use_default_blue_channel", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "default_flag", TRACK_DISABLE_BLUE);
RNA_def_property_ui_text(prop, "Use Blue Channel", "Use blue channel from footage for tracking");
@@ -825,6 +819,38 @@ static void rna_def_trackingMarker(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", MARKER_DISABLED);
RNA_def_property_ui_text(prop, "Mode", "Is marker muted for current frame");
RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, NULL);
+
+ /* pattern */
+ prop = RNA_def_property(srna, "pattern_corners", PROP_FLOAT, PROP_MATRIX);
+ RNA_def_property_float_sdna(prop, NULL, "pattern_corners");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x2);
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_ui_text(prop, "Pattern Corners",
+ "Array of coordinates which represents patter's corners in "
+ " normalized coordinates relative to marker position");
+ RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_markerPattern_update");
+
+ /* search */
+ prop = RNA_def_property(srna, "search_min", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_float_sdna(prop, NULL, "search_min");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Search Min",
+ "Left-bottom corner of search area in normalized coordinates relative "
+ "to marker position");
+ RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_markerSearch_update");
+
+ prop = RNA_def_property(srna, "search_max", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
+ RNA_def_property_float_sdna(prop, NULL, "search_max");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ 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_markerSearch_update");
}
static void rna_def_trackingMarkers(BlenderRNA *brna, PropertyRNA *cprop)
@@ -885,48 +911,6 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, NULL);
RNA_def_struct_name_property(srna, prop);
- /* Pattern */
- prop = RNA_def_property(srna, "pattern_min", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 2);
- RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
- RNA_def_property_float_sdna(prop, NULL, "pat_min");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_ui_text(prop, "Pattern Min",
- "Left-bottom corner of pattern area in normalized coordinates relative "
- "to marker position");
- RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPattern_update");
-
- prop = RNA_def_property(srna, "pattern_max", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 2);
- RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
- RNA_def_property_float_sdna(prop, NULL, "pat_max");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_ui_text(prop, "Pattern Max",
- "Right-bottom corner of pattern area in normalized coordinates relative "
- "to marker position");
- RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPattern_update");
-
- /* Search */
- prop = RNA_def_property(srna, "search_min", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 2);
- RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
- RNA_def_property_float_sdna(prop, NULL, "search_min");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_ui_text(prop, "Search Min",
- "Left-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");
-
- prop = RNA_def_property(srna, "search_max", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_array(prop, 2);
- RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
- RNA_def_property_float_sdna(prop, NULL, "search_max");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- 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);
@@ -952,32 +936,36 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
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);
- RNA_def_property_enum_items(prop, tracker_items);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_ui_text(prop, "Tracker", "Tracking algorithm to use");
- RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerAlgorithm_update");
-
- /* pyramid level for pyramid klt tracking */
- prop = RNA_def_property(srna, "pyramid_levels", PROP_INT, PROP_NONE);
+ /* tracking motion model */
+ prop = RNA_def_property(srna, "motion_model", PROP_ENUM, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_sdna(prop, NULL, "pyramid_levels");
+ RNA_def_property_enum_items(prop, tracker_motion_model);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_range(prop, 1, 16);
- RNA_def_property_ui_text(prop, "Pyramid levels", "Number of pyramid levels (increase on blurry footage)");
- RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPyramid_update");
+ RNA_def_property_ui_text(prop, "Motion model", "Default motion model to use for tracking");
- /* minmal correlation - only used for SAD tracker */
+ /* minimum correlation */
prop = RNA_def_property(srna, "correlation_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_float_sdna(prop, NULL, "minimum_correlation");
- RNA_def_property_range(prop, -1.0f, 1.0f);
- RNA_def_property_ui_range(prop, -1.0f, 1.0f, 0.1, 3);
+ RNA_def_property_range(prop, 0.0f, 1.0f);
+ RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.05, 3);
RNA_def_property_ui_text(prop, "Correlation",
"Minimal value of correlation between matched pattern and reference "
- "which is still treated as successful tracking");
+ "that is still treated as successful tracking");
+
+ /* use_brute */
+ prop = RNA_def_property(srna, "use_brute", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "algorithm_flag", TRACK_ALGORITHM_FLAG_USE_BRUTE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Prepass", "Use a brute-force translation only pre-track before refinement");
+ RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+ /* use_brute */
+ prop = RNA_def_property(srna, "use_normalization", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "algorithm_flag", TRACK_ALGORITHM_FLAG_USE_NORMALIZATION);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Normalize", "Normalize light intensities while tracking. Slower");
+ RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
/* markers */
prop = RNA_def_property(srna, "markers", PROP_COLLECTION, PROP_NONE);
@@ -1088,6 +1076,14 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "error");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Average Error", "Average error of re-projection");
+
+ /* grease pencil */
+ prop = RNA_def_property(srna, "grease_pencil", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "gpd");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_struct_type(prop, "GreasePencil");
+ RNA_def_property_ui_text(prop, "Grease Pencil", "Grease pencil data for this track");
+ RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, NULL);
}
static void rna_def_trackingStabilization(BlenderRNA *brna)
@@ -1330,6 +1326,7 @@ static void rna_def_trackingObject(BlenderRNA *brna)
/* reconstruction */
prop = RNA_def_property(srna, "reconstruction", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "MovieTrackingReconstruction");
+ RNA_def_property_pointer_funcs(prop, "rna_trackingObject_reconstruction_get", NULL, NULL, NULL);
/* scale */
prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE);