diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-09-16 13:43:51 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-09-24 18:20:16 +0300 |
commit | dcee994af6a4ad7f84c4da084c85a875f8ed1f4c (patch) | |
tree | 41c42d4e3750169577fc253269352afc66379b2b /source/blender | |
parent | 9a0a556d3b58b487b3609dd01c56b2939841ad3a (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
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenloader/intern/versioning_userdef.c | 2 | ||||
-rw-r--r-- | source/blender/editors/include/UI_resources.h | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/resources.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_draw.c | 24 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 10 |
6 files changed, 45 insertions, 0 deletions
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); |