diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-02-07 18:26:43 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-02-07 18:27:59 +0400 |
commit | 8614ed64eddbf62d8e1a1346525398ec305896bd (patch) | |
tree | 19026189ecd5bb00284a01812613367a1e87bb3a | |
parent | e2e9c519009fae68eda6c31122e5b7f833476112 (diff) |
Add Tabs for Movie Clip Editor
Based on the patch from Sebastian Koenig, discussed with Jonathan Williamson
https://developer.blender.org/T38172
Also removed redundant modes from clip editor.
Reviewers: brecht, carter2422
Reviewed By: carter2422
CC: sebastian_k, carter2422
Differential Revision: https://developer.blender.org/D293
-rw-r--r-- | release/scripts/startup/bl_ui/properties_mask_common.py | 75 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_clip.py | 433 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_260.c | 19 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_defaults.c | 19 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_draw.c | 5 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_editor.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_clip/space_clip.c | 2 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 4 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_tracking_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_tracking.c | 9 |
11 files changed, 383 insertions, 191 deletions
diff --git a/release/scripts/startup/bl_ui/properties_mask_common.py b/release/scripts/startup/bl_ui/properties_mask_common.py index 5e64129ade0..0efff3bf1af 100644 --- a/release/scripts/startup/bl_ui/properties_mask_common.py +++ b/release/scripts/startup/bl_ui/properties_mask_common.py @@ -216,21 +216,24 @@ class MASK_PT_display(): layout = self.layout space_data = context.space_data - - layout.prop(space_data, "mask_draw_type", text="") - layout.prop(space_data, "show_mask_smooth") - - layout.prop(space_data, "show_mask_overlay") - row = layout.row() + col = layout.column(align=True) + row = col.row(align=True) + row.prop(space_data, "show_mask_smooth", text="Smooth") + row.prop(space_data, "mask_draw_type", text="") + col = layout.column(align=True) + row = col.row(align=True) + row.prop(space_data, "show_mask_overlay", text="Overlay") row.active = space_data.show_mask_overlay row.prop(space_data, "mask_overlay_mode", text="") -class MASK_PT_tools(): +class MASK_PT_transforms(): # subclasses must define... #~ bl_space_type = 'CLIP_EDITOR' #~ bl_region_type = 'TOOLS' - bl_label = "Mask Tools" + bl_label = "Transforms" + bl_category = "Mask" + bl_options = {'DEFAULT_CLOSED'} @classmethod def poll(cls, context): @@ -247,24 +250,63 @@ class MASK_PT_tools(): col.operator("transform.resize", text="Scale") col.operator("transform.transform", text="Scale Feather").mode = 'MASK_SHRINKFATTEN' + +class MASK_PT_tools(): + # subclasses must define... + #~ bl_space_type = 'CLIP_EDITOR' + #~ bl_region_type = 'TOOLS' + bl_label = "Mask Tools" + bl_category = "Mask" + + @classmethod + def poll(cls, context): + space_data = context.space_data + return space_data.mask and space_data.mode == 'MASK' + + def draw(self, context): + layout = self.layout + col = layout.column(align=True) col.label(text="Spline:") col.operator("mask.delete") col.operator("mask.cyclic_toggle") col.operator("mask.switch_direction") col.operator("mask.handle_type_set") + col.operator("mask.feather_weight_clear") col = layout.column(align=True) col.label(text="Parenting:") - col.operator("mask.parent_set") - col.operator("mask.parent_clear") + row = col.row(align=True) + row.operator("mask.parent_set", text="Parent") + row.operator("mask.parent_clear", text="Clear") col = layout.column(align=True) col.label(text="Animation:") - col.operator("mask.shape_key_clear") - col.operator("mask.shape_key_insert") - col.operator("mask.shape_key_feather_reset") - col.operator("mask.shape_key_rekey") + row = col.row(align=True) + row.operator("mask.shape_key_clear", text="Insert Key") + row.operator("mask.shape_key_insert", text="Clear Key") + col.operator("mask.shape_key_feather_reset", text="Reset Feather Animation") + col.operator("mask.shape_key_rekey", text="Re-Key Shape Points") + + +class MASK_PT_add(): + # subclasses must define... + #~ bl_space_type = 'CLIP_EDITOR' + #~ bl_region_type = 'TOOLS' + bl_label = "Add" + bl_category = "Mask" + + @classmethod + def poll(cls, context): + space_data = context.space_data + return space_data.mode == 'MASK' + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.operator("mask.primitive_circle_add", icon="MESH_CIRCLE") + col.operator("mask.primitive_square_add", icon="MESH_PLANE") class MASK_MT_mask(Menu): @@ -286,10 +328,6 @@ class MASK_MT_mask(Menu): layout.operator("mask.parent_set") layout.separator() - layout.operator("mask.copy_splines") - layout.operator("mask.paste_splines") - - layout.separator() layout.menu("MASK_MT_visibility") layout.menu("MASK_MT_transform") layout.menu("MASK_MT_animation") @@ -349,6 +387,7 @@ class MASK_MT_select(Menu): layout.operator("mask.select_all").action = 'TOGGLE' layout.operator("mask.select_all", text="Inverse").action = 'INVERT' + layout.operator("mask.select_linked", text="Select Linked") if __name__ == "__main__": # only for live edit. bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index ee6ddc87f36..8ffd73474fc 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -63,7 +63,7 @@ class CLIP_HT_header(Header): if sc.view == 'CLIP': layout.prop(sc, "mode", text="") layout.prop(sc, "view", text="", expand=True) - layout.prop(sc, "pivot_point", icon_only=True) + layout.prop(sc, "pivot_point", text="", icon_only=True) r = active_object.reconstruction @@ -127,14 +127,14 @@ class CLIP_HT_header(Header): row = layout.row() row.template_ID(sc, "mask", new="mask.new") - layout.prop(sc, "pivot_point", icon_only=True) + layout.prop(sc, "pivot_point", text="", icon_only=True) row = layout.row(align=True) row.prop(toolsettings, "use_proportional_edit_mask", - icon_only=True) + text="", icon_only=True) if toolsettings.use_proportional_edit_mask: row.prop(toolsettings, "proportional_edit_falloff", - icon_only=True) + text="", icon_only=True) def draw(self, context): layout = self.layout @@ -226,10 +226,34 @@ class CLIP_PT_reconstruction_panel: return clip and sc.mode == 'RECONSTRUCTION' and sc.view == 'CLIP' +class CLIP_PT_tools_clip(Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'TOOLS' + bl_label = "Clip" + bl_translation_context = bpy.app.translations.contexts.id_movieclip + bl_category = "Track" + + @classmethod + def poll(cls, context): + sc = context.space_data + clip = sc.clip + + return clip and sc.view == 'CLIP' and sc.mode != 'MASK' + + def draw(self, context): + layout = self.layout + col = layout.column(align=True) + row = col.row(align=True) + row.operator("clip.prefetch", text="Prefetch") + row.operator("clip.reload", text="Reload") + col.operator("clip.set_scene_frames") + + class CLIP_PT_tools_marker(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Marker" + bl_category = "Track" def draw(self, context): layout = self.layout @@ -239,71 +263,89 @@ class CLIP_PT_tools_marker(CLIP_PT_tracking_panel, Panel): settings = clip.tracking.settings col = layout.column(align=True) - col.operator("clip.add_marker_at_click", text="Add Marker") + row = col.row(align=True) + row.operator("clip.add_marker_at_click", text="Add") + row.operator("clip.delete_track", text="Delete") 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="Tracking Settings") - if settings.show_default_expanded: - col = box.column() - row = col.row(align=True) - label = 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') - row.operator("clip.tracking_settings_preset_add", - text="", icon='ZOOMOUT').remove_active = True +class CLIP_PT_tracking_settings(CLIP_PT_tracking_panel, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'TOOLS' + bl_label = "Tracking Settings" + bl_category = "Track" - col.separator() + def draw(self, context): - row = col.row(align=True) - row.prop(settings, "use_default_red_channel", - text="R", toggle=True) - row.prop(settings, "use_default_green_channel", - text="G", toggle=True) - row.prop(settings, "use_default_blue_channel", - text="B", toggle=True) + sc = context.space_data + clip = sc.clip + settings = clip.tracking.settings + layout = self.layout + col = layout.column() + + row = col.row(align=True) + label = 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') + row.operator("clip.tracking_settings_preset_add", + text="", icon='ZOOMOUT').remove_active = True - col.separator() + row = col.row(align=True) + row.prop(settings, "use_default_red_channel", + text="R", toggle=True) + row.prop(settings, "use_default_green_channel", + text="G", toggle=True) + row.prop(settings, "use_default_blue_channel", + text="B", toggle=True) - sub = col.column(align=True) - sub.prop(settings, "default_pattern_size") - sub.prop(settings, "default_search_size") + col.separator() - col.label(text="Tracker:") - col.prop(settings, "default_motion_model") - col.prop(settings, "use_default_brute") - col.prop(settings, "use_default_normalization") - col.prop(settings, "use_default_mask") - col.prop(settings, "default_correlation_min") + sub = col.column(align=True) + sub.prop(settings, "default_pattern_size") + sub.prop(settings, "default_search_size") - col.separator() + col.prop(settings, "default_motion_model") + + row = col.row(align=True) + row.label(text="Match:") + row.prop(settings, "default_pattern_match", text="") + + row = col.row(align=True) + row.prop(settings, "use_default_brute") + row.prop(settings, "use_default_normalization") + + col.separator() + col.operator("clip.track_settings_as_default", + text="Copy From Active Track") + + box = layout.box() + row = box.row(align=True) + row.prop(settings, "show_default_expanded", text="", emboss=False) + row.label(text="Extra Settings") + + if settings.show_default_expanded: + col = box.column() + row = col.row() + row.prop(settings, "use_default_mask") sub = col.column(align=True) + sub.prop(settings, "default_correlation_min") sub.prop(settings, "default_frames_limit") sub.prop(settings, "default_margin") - col.label(text="Match:") - col.prop(settings, "default_pattern_match", text="") - - col.separator() - col.operator("clip.track_settings_as_default", - text="Copy From Active Track") - class CLIP_PT_tools_tracking(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Track" + bl_category = "Track" def draw(self, context): layout = self.layout row = layout.row(align=True) + row.label(text="Track:") props = row.operator("clip.track_markers", text="", icon='FRAME_PREV') props.backwards = True @@ -319,19 +361,32 @@ class CLIP_PT_tools_tracking(CLIP_PT_tracking_panel, Panel): props.backwards = False props.sequence = False - col = layout.column() - col.label(text="Refine:") + col = layout.column(align=True) row = col.row(align=True) - row.operator("clip.refine_markers", text="Backwards").backwards = True - row.operator("clip.refine_markers", text="Forwards").backwards = False + row.label(text="Clear:") + row.scale_x = 2.0 + + props = row.operator("clip.clear_track_path", icon="BACK", text="") + props.action = 'UPTO' + + props = row.operator("clip.clear_track_path", icon="FORWARD", text="") + props.action = 'REMAINED' col = layout.column() - col.label(text="Clear:") row = col.row(align=True) - row.operator("clip.clear_track_path", text="Before").action = 'UPTO' - row.operator("clip.clear_track_path", text="After").action = 'REMAINED' + row.label(text="Refine:") + row.scale_x = 2.0 - layout.operator("clip.join_tracks", text="Join") + props = row.operator("clip.refine_markers", icon='LOOP_BACK', text="") + props.backwards = True + + props = row.operator("clip.refine_markers", icon='LOOP_FORWARDS', text="") + props.backwards = False + + col = layout.column(align=True) + row = col.row(align=True) + row.label(text="Merge:") + row.operator("clip.join_tracks", text="Join Tracks") class CLIP_PT_tools_plane_tracking(CLIP_PT_tracking_panel, Panel): @@ -339,6 +394,7 @@ class CLIP_PT_tools_plane_tracking(CLIP_PT_tracking_panel, Panel): bl_region_type = 'TOOLS' bl_label = "Plane Track" bl_options = {'DEFAULT_CLOSED'} + bl_category = "Solve" def draw(self, context): layout = self.layout @@ -349,6 +405,7 @@ class CLIP_PT_tools_solve(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Solve" + bl_category = "Solve" def draw(self, context): layout = self.layout @@ -358,16 +415,10 @@ class CLIP_PT_tools_solve(CLIP_PT_tracking_panel, Panel): settings = tracking.settings tracking_object = tracking.objects.active - col = layout.column(align=True) - - col.operator("clip.solve_camera", - text="Camera Motion" if tracking_object.is_camera - else "Object Motion") - col.operator("clip.clear_solution") - col = layout.column() - col.prop(settings, "use_tripod_solver") - col.prop(settings, "use_keyframe_selection") + row = col.row() + row.prop(settings, "use_tripod_solver", text="Tripod") + row.prop(settings, "use_keyframe_selection", text="Keyframe") col = layout.column(align=True) col.active = (not settings.use_tripod_solver and @@ -377,14 +428,24 @@ class CLIP_PT_tools_solve(CLIP_PT_tracking_panel, Panel): col = layout.column(align=True) col.active = tracking_object.is_camera - col.label(text="Refine:") - col.prop(settings, "refine_intrinsics", text="") + row = col.row(align=True) + row.label(text="Refine:") + row.prop(settings, "refine_intrinsics", text="") + + col = layout.column(align=True) + col.scale_y = 2.0 + + col.operator("clip.solve_camera", + text="Solve Camera Motion" if tracking_object.is_camera + else "Solve Object Motion") class CLIP_PT_tools_cleanup(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Clean up" + bl_options = {'DEFAULT_CLOSED'} + bl_category = "Solve" def draw(self, context): layout = self.layout @@ -398,10 +459,12 @@ class CLIP_PT_tools_cleanup(CLIP_PT_tracking_panel, Panel): layout.prop(settings, "clean_action", text="") -class CLIP_PT_tools_geometry(CLIP_PT_reconstruction_panel, Panel): +class CLIP_PT_tools_geometry(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Geometry" + bl_options = {'DEFAULT_CLOSED'} + bl_category = "Solve" def draw(self, context): layout = self.layout @@ -410,10 +473,11 @@ class CLIP_PT_tools_geometry(CLIP_PT_reconstruction_panel, Panel): layout.operator("clip.track_to_empty") -class CLIP_PT_tools_orientation(CLIP_PT_reconstruction_panel, Panel): +class CLIP_PT_tools_orientation(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Orientation" + bl_category = "Solve" def draw(self, context): sc = context.space_data @@ -480,6 +544,7 @@ class CLIP_PT_tools_grease_pencil(Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' bl_label = "Grease Pencil" + bl_options = {'DEFAULT_CLOSED'} @classmethod def poll(cls, context): @@ -578,6 +643,12 @@ class CLIP_PT_track(CLIP_PT_tracking_panel, Panel): row.prop(act_track, "use_alpha_preview", text="", toggle=True, icon='IMAGE_ALPHA') + layout.prop(act_track, "weight") + + if act_track.has_bundle: + label_text = "Average Error: %.4f" % (act_track.average_error) + layout.label(text=label_text) + layout.separator() row = layout.row(align=True) @@ -593,12 +664,6 @@ class CLIP_PT_track(CLIP_PT_tracking_panel, Panel): if act_track.use_custom_color: row.prop(act_track, "color", text="") - layout.prop(act_track, "weight") - - if act_track.has_bundle: - label_text = "Average Error: %.4f" % (act_track.average_error) - layout.label(text=label_text) - class CLIP_PT_plane_track(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' @@ -644,23 +709,34 @@ class CLIP_PT_track_settings(CLIP_PT_tracking_panel, Panel): active = clip.tracking.tracks.active if active: col.prop(active, "motion_model") - col.prop(active, "use_brute") - col.prop(active, "use_normalization") - col.prop(active, "use_mask") - col.prop(active, "correlation_min") - - col.separator() - col.prop(active, "frames_limit") - col.prop(active, "margin") col.prop(active, "pattern_match", text="Match") + col = layout.column() + row = col.row(align=True) + row.prop(active, "use_brute") + row.prop(active, "use_normalization") + + box = layout.box() + row = box.row(align=True) + row.prop(settings, "show_extra_expanded", text="", emboss=False) + row.label(text="Extra Settings") + + if settings.show_extra_expanded: + col = box.column() + row = col.row() + row.prop(active, "use_mask") - col.prop(settings, "speed") + sub = col.column(align=True) + sub.prop(active, "correlation_min") + sub.prop(active, "frames_limit") + sub.prop(active, "margin") + sub.separator() + sub.prop(settings, "speed") class CLIP_PT_tracking_camera(Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'UI' - bl_label = "Camera Data" + bl_label = "Camera" bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -685,14 +761,6 @@ class CLIP_PT_tracking_camera(Panel): row.operator("clip.camera_preset_add", text="", icon='ZOOMOUT').remove_active = True - row = layout.row(align=True) - sub = row.split(percentage=0.65, align=True) - if clip.tracking.camera.units == 'MILLIMETERS': - sub.prop(clip.tracking.camera, "focal_length") - else: - sub.prop(clip.tracking.camera, "focal_length_pixels") - sub.prop(clip.tracking.camera, "units", text="") - col = layout.column(align=True) col.label(text="Sensor:") col.prop(clip.tracking.camera, "sensor_width", text="Width") @@ -704,6 +772,36 @@ class CLIP_PT_tracking_camera(Panel): row.prop(clip.tracking.camera, "principal", text="") col.operator("clip.set_center_principal", text="Center") + +class CLIP_PT_tracking_lens(Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + bl_label = "Lens" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + if CLIP_PT_clip_view_panel.poll(context): + sc = context.space_data + + return sc.mode in {'TRACKING', 'DISTORTION'} and sc.clip + + return False + + def draw(self, context): + layout = self.layout + + sc = context.space_data + clip = sc.clip + + row = layout.row(align=True) + sub = row.split(percentage=0.65, align=True) + if clip.tracking.camera.units == 'MILLIMETERS': + sub.prop(clip.tracking.camera, "focal_length") + else: + sub.prop(clip.tracking.camera, "focal_length_pixels") + sub.prop(clip.tracking.camera, "units", text="") + col = layout.column(align=True) col.label(text="Lens Distortion:") col.prop(clip.tracking.camera, "k1") @@ -721,33 +819,25 @@ class CLIP_PT_display(CLIP_PT_clip_view_panel, Panel): sc = context.space_data row = layout.row(align=True) + sub = row.row(align=True) sub.prop(sc, "show_red_channel", text="R", toggle=True) sub.prop(sc, "show_green_channel", text="G", toggle=True) sub.prop(sc, "show_blue_channel", text="B", toggle=True) - row.separator() - row.prop(sc, "use_grayscale_preview", text="B/W", toggle=True) + row.separator() + row.prop(sc, "use_mute_footage", text="", icon="VISIBLE_IPO_ON", toggle=True) col = layout.column(align=True) - - col.prop(sc, "show_disabled", "Disabled Tracks") - col.prop(sc, "show_names", text="Names and Status") - if sc.mode != 'MASK': - col.prop(sc, "show_bundles", text="3D Markers") - - col.prop(sc, "use_mute_footage", text="Mute Footage") - col.prop(sc, "lock_selection") - + col.prop(sc.clip_user, "use_render_undistorted", text="Render Undistorted") + col.prop(sc, "lock_selection", text="Lock to Selection") + col.prop(sc, "show_stable", text="Display Stabilization") if sc.view == 'GRAPH': col.prop(sc, "lock_time_cursor") - - if sc.mode == 'DISTORTION': - col.prop(sc, "show_grid", text="Grid") - col.prop(sc, "use_manual_calibration") - elif sc.mode == 'RECONSTRUCTION': - col.prop(sc, "show_stable", text="Stable") + row = col.row(align=True) + row.prop(sc, "show_grid", text="Grid") + row.prop(sc, "use_manual_calibration", text="Calibration") clip = sc.clip if clip: @@ -772,18 +862,25 @@ class CLIP_PT_marker_display(CLIP_PT_clip_view_panel, Panel): sc = context.space_data col = layout.column(align=True) - row = col.row(align=True) row.prop(sc, "show_marker_pattern", text="Pattern") row.prop(sc, "show_marker_search", text="Search") - col.prop(sc, "show_tiny_markers", text="Thin Markers") - col.prop(sc, "show_track_path", text="Path") - row = col.row(align=True) row.active = sc.show_track_path + row.prop(sc, "show_track_path", text="Path") row.prop(sc, "path_length", text="Length") + col = layout.column(align=True) + row = col.row(align=True) + row.prop(sc, "show_disabled", "Disabled") + row.prop(sc, "show_names", text="Info") + + row = col.row(align=True) + if sc.mode != 'MASK': + row.prop(sc, "show_bundles", text="3D Markers") + row.prop(sc, "show_tiny_markers", text="Thin") + class CLIP_PT_stabilization(CLIP_PT_reconstruction_panel, Panel): bl_space_type = 'CLIP_EDITOR' @@ -913,8 +1010,61 @@ class CLIP_PT_proxy(CLIP_PT_clip_view_panel, Panel): col.prop(sc.clip_user, "proxy_render_size", text="") - col = layout.column() - col.prop(sc.clip_user, "use_render_undistorted") + +# ----------------------------------------------------------------------------- +# Mask (similar code in space_image.py, keep in sync) + + +from bl_ui.properties_mask_common import (MASK_PT_mask, + MASK_PT_layers, + MASK_PT_spline, + MASK_PT_point, + MASK_PT_display, + MASK_PT_tools, + MASK_PT_transforms, + MASK_PT_add) + + +class CLIP_PT_mask_layers(MASK_PT_layers, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + + +class CLIP_PT_mask_display(MASK_PT_display, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + + +class CLIP_PT_active_mask_spline(MASK_PT_spline, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + + +class CLIP_PT_active_mask_point(MASK_PT_point, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + + +class CLIP_PT_mask(MASK_PT_mask, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + + +class CLIP_PT_tools_mask_add(MASK_PT_add, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'TOOLS' + + +class CLIP_PT_tools_mask_transforms(MASK_PT_transforms, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'TOOLS' + + +class CLIP_PT_tools_mask(MASK_PT_tools, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'TOOLS' + +# --- end mask --- class CLIP_PT_footage(CLIP_PT_clip_view_panel, Panel): @@ -951,19 +1101,25 @@ class CLIP_PT_footage_info(CLIP_PT_clip_view_panel, Panel): col.template_movieclip_information(sc, "clip", sc.clip_user) -class CLIP_PT_tools_clip(CLIP_PT_clip_view_panel, Panel): +class CLIP_PT_tools_scenesetup(Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' - bl_label = "Clip" + bl_label = "Scene Setup" bl_translation_context = bpy.app.translations.contexts.id_movieclip + bl_category = "Solve" + + @classmethod + def poll(cls, context): + sc = context.space_data + clip = sc.clip + + return clip and sc.view == 'CLIP' and sc.mode != 'MASK' def draw(self, context): layout = self.layout layout.operator("clip.set_viewport_background") layout.operator("clip.setup_tracking_scene") - layout.operator("clip.prefetch") - layout.operator("clip.set_scene_frames") class CLIP_MT_view(Menu): @@ -1246,48 +1402,5 @@ class CLIP_MT_stabilize_2d_specials(Menu): layout.operator("clip.stabilize_2d_select") -# ----------------------------------------------------------------------------- -# Mask (similar code in space_image.py, keep in sync) - - -from bl_ui.properties_mask_common import (MASK_PT_mask, - MASK_PT_layers, - MASK_PT_spline, - MASK_PT_point, - MASK_PT_display, - MASK_PT_tools) - - -class CLIP_PT_mask(MASK_PT_mask, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'UI' - - -class CLIP_PT_mask_layers(MASK_PT_layers, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'UI' - - -class CLIP_PT_mask_display(MASK_PT_display, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'UI' - - -class CLIP_PT_active_mask_spline(MASK_PT_spline, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'UI' - - -class CLIP_PT_active_mask_point(MASK_PT_point, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'UI' - - -class CLIP_PT_tools_mask(MASK_PT_tools, Panel): - bl_space_type = 'CLIP_EDITOR' - bl_region_type = 'TOOLS' - -# --- end mask --- - if __name__ == "__main__": # only for live edit. bpy.utils.register_module(__name__) diff --git a/source/blender/blenloader/intern/versioning_260.c b/source/blender/blenloader/intern/versioning_260.c index 791ddb36ba2..8c9c3c86245 100644 --- a/source/blender/blenloader/intern/versioning_260.c +++ b/source/blender/blenloader/intern/versioning_260.c @@ -2699,5 +2699,24 @@ void blo_do_versions_260(FileData *fd, Library *UNUSED(lib), Main *main) } } } FOREACH_NODETREE_END + + { + bScreen *screen; + + for (screen = main->screen.first; screen; screen = screen->id.next) { + ScrArea *area; + for (area = screen->areabase.first; area; area = area->next) { + SpaceLink *space_link; + for (space_link = area->spacedata.first; space_link; space_link = space_link->next) { + if (space_link->spacetype == SPACE_CLIP) { + SpaceClip *space_clip = (SpaceClip *) space_link; + if (space_clip->mode != SC_MODE_MASKEDIT) { + space_clip->mode = SC_MODE_TRACKING; + } + } + } + } + } + } } } diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index d6117224bb4..b14402e72db 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -30,6 +30,8 @@ #include "DNA_freestyle_types.h" #include "DNA_linestyle_types.h" #include "DNA_scene_types.h" +#include "DNA_screen_types.h" +#include "DNA_space_types.h" #include "DNA_userdef_types.h" #include "BKE_main.h" @@ -56,5 +58,22 @@ void BLO_update_defaults_startup_blend(Main *main) for (linestyle = main->linestyle.first; linestyle; linestyle = linestyle->id.next) linestyle->flag = LS_SAME_OBJECT; + + { + bScreen *screen; + + for (screen = main->screen.first; screen; screen = screen->id.next) { + ScrArea *area; + for (area = screen->areabase.first; area; area = area->next) { + SpaceLink *space_link; + for (space_link = area->spacedata.first; space_link; space_link = space_link->next) { + if (space_link->spacetype == SPACE_CLIP) { + SpaceClip *space_clip = (SpaceClip *) space_link; + space_clip->flag &= ~SC_MANUAL_CALIBRATION; + } + } + } + } + } } diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c index 92f94185712..407ca269ecd 100644 --- a/source/blender/editors/space_clip/clip_draw.c +++ b/source/blender/editors/space_clip/clip_draw.c @@ -1527,9 +1527,6 @@ static void draw_distortion(SpaceClip *sc, ARegion *ar, MovieClip *clip, float dx = (float)width / n, dy = (float)height / n * aspy; float offsx = 0.0f, offsy = 0.0f; - if (sc->mode != SC_MODE_DISTORTION) - return; - if (!tracking->camera.focal) return; @@ -1818,7 +1815,7 @@ void clip_draw_grease_pencil(bContext *C, int onlyv2d) if (onlyv2d) { /* if manual calibration is used then grease pencil data is already * drawn in draw_distortion */ - if ((sc->flag & SC_MANUAL_CALIBRATION) == 0 || sc->mode != SC_MODE_DISTORTION) { + if ((sc->flag & SC_MANUAL_CALIBRATION) == 0) { glPushMatrix(); glMultMatrixf(sc->unistabmat); diff --git a/source/blender/editors/space_clip/clip_editor.c b/source/blender/editors/space_clip/clip_editor.c index 20e69fce848..0543e348b5b 100644 --- a/source/blender/editors/space_clip/clip_editor.c +++ b/source/blender/editors/space_clip/clip_editor.c @@ -504,7 +504,7 @@ void ED_clip_mouse_pos(SpaceClip *sc, ARegion *ar, const int mval[2], float co[2 bool ED_space_clip_check_show_trackedit(SpaceClip *sc) { if (sc) { - return ELEM3(sc->mode, SC_MODE_TRACKING, SC_MODE_RECONSTRUCTION, SC_MODE_DISTORTION); + return sc->mode == SC_MODE_TRACKING; } return false; diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index e1262d0d7b8..886b38d39a1 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -246,7 +246,7 @@ static SpaceLink *clip_new(const bContext *C) sc = MEM_callocN(sizeof(SpaceClip), "initclip"); sc->spacetype = SPACE_CLIP; - sc->flag = SC_SHOW_MARKER_PATTERN | SC_SHOW_TRACK_PATH | SC_MANUAL_CALIBRATION | + sc->flag = SC_SHOW_MARKER_PATTERN | SC_SHOW_TRACK_PATH | SC_SHOW_GRAPH_TRACKS_MOTION | SC_SHOW_GRAPH_FRAMES | SC_SHOW_GPENCIL; sc->zoom = 1.0f; sc->path_length = 20; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index f2dc4dce11f..54fcb5c857b 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -1134,8 +1134,8 @@ typedef enum eSpaceClip_Flag { /* SpaceClip->mode */ typedef enum eSpaceClip_Mode { SC_MODE_TRACKING = 0, - SC_MODE_RECONSTRUCTION = 1, - SC_MODE_DISTORTION = 2, + /*SC_MODE_RECONSTRUCTION = 1,*/ /* DEPRECATED */ + /*SC_MODE_DISTORTION = 2,*/ /* DEPRECATED */ SC_MODE_MASKEDIT = 3, } eSpaceClip_Mode; diff --git a/source/blender/makesdna/DNA_tracking_types.h b/source/blender/makesdna/DNA_tracking_types.h index 4e6a762c36a..78faf5d8547 100644 --- a/source/blender/makesdna/DNA_tracking_types.h +++ b/source/blender/makesdna/DNA_tracking_types.h @@ -402,7 +402,8 @@ enum { /* MovieTrackingSettings->flag */ enum { - TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED = (1 << 0) + TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED = (1 << 0), + TRACKING_SETTINGS_SHOW_EXTRA_EXPANDED = (1 << 1) }; /* MovieTrackingSettings->motion_flag */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 81389b99e41..813c2a3b819 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -132,9 +132,6 @@ EnumPropertyItem viewport_shade_items[] = { EnumPropertyItem clip_editor_mode_items[] = { {SC_MODE_TRACKING, "TRACKING", ICON_ANIM_DATA, "Tracking", "Show tracking and solving tools"}, - {SC_MODE_RECONSTRUCTION, "RECONSTRUCTION", ICON_SNAP_FACE, "Reconstruction", - "Show tracking/reconstruction tools"}, - {SC_MODE_DISTORTION, "DISTORTION", ICON_GRID, "Distortion", "Show distortion tools"}, {SC_MODE_MASKEDIT, "MASK", ICON_MOD_MASK, "Mask", "Show mask editing tools"}, {0, NULL, 0, NULL, NULL} }; diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index 87b7aa11c98..8cb82643b87 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -819,7 +819,14 @@ static void rna_def_trackingSettings(BlenderRNA *brna) 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_text(prop, "Show Expanded", "Show default options expanded in the user interface"); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); + + /* ** extra tracker settings ** */ + prop = RNA_def_property(srna, "show_extra_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACKING_SETTINGS_SHOW_EXTRA_EXPANDED); + RNA_def_property_ui_text(prop, "Show Expanded", "Show extra options expanded in the user interface"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); /* solver settings */ |