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>2019-09-16 13:43:51 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-09-24 18:20:16 +0300
commitdcee994af6a4ad7f84c4da084c85a875f8ed1f4c (patch)
tree41c42d4e3750169577fc253269352afc66379b2b
parent9a0a556d3b58b487b3609dd01c56b2939841ad3a (diff)
Tracking: Highlight keyframes in path visualization
This gives better idea of what's going on with your track. Example: {F693806} Color of keyframes are configurable from theme editor of clip editor. Reviewers: keir, brecht, Severin Differential Revision: https://developer.blender.org/D2772
-rw-r--r--release/datafiles/userdef/userdef_default_theme.c2
-rw-r--r--source/blender/blenloader/intern/versioning_userdef.c2
-rw-r--r--source/blender/editors/include/UI_resources.h2
-rw-r--r--source/blender/editors/interface/resources.c6
-rw-r--r--source/blender/editors/space_clip/clip_draw.c24
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h1
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c10
7 files changed, 47 insertions, 0 deletions
diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index ff2a5ae2739..80bed03debf 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -914,6 +914,8 @@ const bTheme U_theme_default = {
.lock_marker = RGBA(0x7f7f7fff),
.path_before = RGBA(0xff0000ff),
.path_after = RGBA(0x0000ffff),
+ .path_keyframe_before = RGBA(0xffc4c4ff),
+ .path_keyframe_after = RGBA(0xc4c4ffff),
.gp_vertex_size = 1,
.metadatatext = RGBA(0xffffffff),
},
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 71077d5a89d..ad11be1a5f5 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -151,6 +151,8 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
{
FROM_DEFAULT_V4_UCHAR(space_file.execution_buts);
FROM_DEFAULT_V4_UCHAR(tui.icon_folder);
+ FROM_DEFAULT_V4_UCHAR(space_clip.path_keyframe_before);
+ FROM_DEFAULT_V4_UCHAR(space_clip.path_keyframe_after);
}
#undef FROM_DEFAULT_V4_UCHAR
diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h
index 1c317ac458b..76ab4a53eb8 100644
--- a/source/blender/editors/include/UI_resources.h
+++ b/source/blender/editors/include/UI_resources.h
@@ -234,6 +234,8 @@ typedef enum ThemeColorID {
TH_DIS_MARKER,
TH_PATH_BEFORE,
TH_PATH_AFTER,
+ TH_PATH_KEYFRAME_BEFORE,
+ TH_PATH_KEYFRAME_AFTER,
TH_CAMERA_PATH,
TH_LOCK_MARKER,
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index ae161f1017c..8a570933a33 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -779,6 +779,12 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_PATH_AFTER:
cp = ts->path_after;
break;
+ case TH_PATH_KEYFRAME_BEFORE:
+ cp = ts->path_keyframe_before;
+ break;
+ case TH_PATH_KEYFRAME_AFTER:
+ cp = ts->path_keyframe_after;
+ break;
case TH_CAMERA_PATH:
cp = ts->camera_path;
break;
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index c847c7d07bb..80b58954c8f 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -473,6 +473,21 @@ static void draw_track_path_points(const TrackPathPoint *path,
immEnd();
}
+static void draw_track_path_keyframe_points(const TrackPathPoint *path,
+ uint position_attribute,
+ const int start_point,
+ const int num_points)
+{
+ immBeginAtMost(GPU_PRIM_POINTS, num_points);
+ for (int i = 0; i < num_points; i++) {
+ const TrackPathPoint *point = &path[i + start_point];
+ if (point->flag & PATH_POINT_FLAG_KEYFRAME) {
+ immVertex2fv(position_attribute, point->co);
+ }
+ }
+ immEnd();
+}
+
static void draw_track_path_lines(const TrackPathPoint *path,
uint position_attribute,
const int start_point,
@@ -533,6 +548,8 @@ static void draw_track_path(SpaceClip *sc, MovieClip *UNUSED(clip), MovieTrackin
if (TRACK_VIEW_SELECTED(sc, track)) {
GPU_point_size(5.0f);
draw_track_path_points(path, position_attribute, path_start_index, num_all_points);
+ GPU_point_size(7.0f);
+ draw_track_path_keyframe_points(path, position_attribute, path_start_index, num_all_points);
}
/* Draw darker outline for actual path, all line segments at once. */
GPU_line_width(3.0f);
@@ -553,6 +570,13 @@ static void draw_track_path(SpaceClip *sc, MovieClip *UNUSED(clip), MovieTrackin
immUniformThemeColor(TH_PATH_AFTER);
draw_track_path_lines(path, position_attribute, path_center_index, num_points_after);
+ /* Draw all bigger points corresponding to keyframes. */
+ GPU_point_size(5.0f);
+ immUniformThemeColor(TH_PATH_KEYFRAME_BEFORE);
+ draw_track_path_keyframe_points(path, position_attribute, path_start_index, num_points_before);
+ immUniformThemeColor(TH_PATH_KEYFRAME_AFTER);
+ draw_track_path_keyframe_points(path, position_attribute, path_center_index, num_points_after);
+
if (path != path_static) {
MEM_freeN(path);
}
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 1110b0fb8b5..4006cbc977e 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -345,6 +345,7 @@ typedef struct ThemeSpace {
lock_marker[4];
unsigned char bundle_solid[4];
unsigned char path_before[4], path_after[4];
+ unsigned char path_keyframe_before[4], path_keyframe_after[4];
unsigned char camera_path[4];
unsigned char _pad1[2];
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 494bebc9b20..bba4bc1cb54 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -3397,6 +3397,16 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Path After", "Color of path after current frame");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
+ prop = RNA_def_property(srna, "path_keyframe_before", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Path Before", "Color of path before current frame");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop = RNA_def_property(srna, "path_keyframe_after", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Path After", "Color of path after current frame");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
prop = RNA_def_property(srna, "frame_current", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "cframe");
RNA_def_property_array(prop, 3);