MotionTracker pie-menu
D1069 by @sebastian_k note: removed hard coded checkboxes, prefer pie-menu's do these automatic
This commit is contained in:
parent
f8664818ca
commit
4fc1f4af24
|
@ -145,6 +145,212 @@ class VIEW3D_PIE_snap(Menu):
|
|||
pie.prop(toolsettings, "use_snap")
|
||||
|
||||
|
||||
class CLIP_PIE_refine_pie(Menu):
|
||||
# Refinement Options
|
||||
bl_label = "Refine Intrinsics"
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
settings = clip.tracking.settings
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(settings, "refine_intrinsics", expand=True)
|
||||
|
||||
|
||||
class CLIP_PIE_geometry_reconstruction(Menu):
|
||||
# Geometry Reconstruction
|
||||
bl_label = "Reconstruction"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.bundles_to_mesh", icon='MESH_DATA')
|
||||
pie.operator("clip.track_to_empty", icon='EMPTY_DATA')
|
||||
|
||||
|
||||
class CLIP_PIE_proxy_pie(Menu):
|
||||
# Proxy Controls
|
||||
bl_label = "Proxy Size"
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(space.clip, "use_proxy", text="Use Proxy")
|
||||
pie.prop(space.clip_user, "proxy_render_size", expand=True)
|
||||
|
||||
|
||||
class CLIP_PIE_display_pie(Menu):
|
||||
# Display Options
|
||||
bl_label = "Marker Display"
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(space, "show_names", text="Show Track Info", icon='WORDWRAP_ON')
|
||||
pie.prop(space, "show_disabled", text="Show Disabled Tracks", icon='VISIBLE_IPO_ON')
|
||||
pie.prop(space, "show_marker_search", text="Display Search Area", icon='VIEWZOOM')
|
||||
pie.prop(space, "show_marker_pattern", text="Display Pattern Area", icon='BORDERMOVE')
|
||||
|
||||
|
||||
class CLIP_PIE_marker_pie(Menu):
|
||||
# Settings for the individual markers
|
||||
bl_label = "Marker Settings"
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
track_active = clip.tracking.tracks.active
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
prop = pie.operator("wm.context_set_enum", text="Loc", icon='OUTLINER_DATA_EMPTY')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.motion_model"
|
||||
prop.value = "Loc"
|
||||
prop = pie.operator("wm.context_set_enum", text="Affine", icon='OUTLINER_DATA_LATTICE')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.motion_model"
|
||||
prop.value = "Affine"
|
||||
|
||||
pie.operator("clip.track_settings_to_track", icon='COPYDOWN')
|
||||
pie.operator("clip.track_settings_as_default", icon='SETTINGS')
|
||||
|
||||
if track_active:
|
||||
pie.prop(track_active, "use_normalization", text="Normalization")
|
||||
pie.prop(track_active, "use_brute", text="Use Brute Force")
|
||||
pie.prop(track_active, "use_blue_channel", text="Blue Channel")
|
||||
|
||||
if track_active.pattern_match == "PREV_FRAME":
|
||||
prop = pie.operator("wm.context_set_enum", text="Match Previous", icon='KEYINGSET')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.pattern_match"
|
||||
prop.value = 'KEYFRAME'
|
||||
else:
|
||||
prop = pie.operator("wm.context_set_enum", text="Match Keyframe", icon='KEY_HLT')
|
||||
prop.data_pat = "space_data.clip.tracking.tracks.active.pattern_match"
|
||||
prop.value = 'PREV_FRAME'
|
||||
|
||||
|
||||
class CLIP_PIE_tracking_pie(Menu):
|
||||
# Tracking Operators
|
||||
bl_label = "Tracking"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
prop = pie.operator("clip.track_markers", icon='PLAY_REVERSE')
|
||||
prop.backwards = True
|
||||
prop.sequence = True
|
||||
prop = pie.operator("clip.track_markers", icon='PLAY')
|
||||
prop.backwards = False
|
||||
prop.sequence = True
|
||||
|
||||
pie.operator("clip.disable_markers", icon='RESTRICT_VIEW_ON')
|
||||
pie.operator("clip.detect_features", icon='ZOOM_SELECTED')
|
||||
|
||||
pie.operator("clip.clear_track_path", icon='BACK').action = 'UPTO'
|
||||
pie.operator("clip.clear_track_path", icon='FORWARD').action = 'REMAINED'
|
||||
|
||||
pie.operator("clip.refine_markers", icon='LOOP_BACK').backwards = True
|
||||
pie.operator("clip.refine_markers", icon='LOOP_FORWARDS').backwards = False
|
||||
|
||||
|
||||
class CLIP_PIE_clipsetup_pie(Menu):
|
||||
# Setup the clip display options
|
||||
bl_label = "Clip and Display Setup"
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.reload", text="Reload Footage", icon='FILE_REFRESH')
|
||||
pie.operator("clip.prefetch", text="Prefetch Footage", icon='LOOP_FORWARDS')
|
||||
|
||||
pie.prop(space, "use_mute_footage", text="Mute Footage", icon='MUTE_IPO_ON')
|
||||
pie.prop(space.clip_user, "use_render_undistorted", text="Render Undistorted")
|
||||
pie.operator("clip.set_scene_frames", text="Set Scene Frames", icon='SCENE_DATA')
|
||||
pie.operator("wm.call_menu_pie", text="Marker Display", icon='PLUS').name = "CLIP_PIE_display_pie"
|
||||
pie.operator("clip.set_active_clip", icon='CLIP')
|
||||
pie.operator("wm.call_menu_pie", text="Proxy", icon='PLUS').name = "CLIP_PIE_proxy_pie"
|
||||
|
||||
|
||||
class CLIP_PIE_solver_pie(Menu):
|
||||
# Operators to solve the scene
|
||||
bl_label = "Solving"
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
settings = clip.tracking.settings
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.create_plane_track", icon='MESH_PLANE')
|
||||
pie.operator("clip.solve_camera", text="Solve Camera", icon='OUTLINER_OB_CAMERA')
|
||||
|
||||
pie.operator("wm.call_menu_pie", text="Refinement", icon='CAMERA_DATA').name = "CLIP_PIE_refine_pie"
|
||||
pie.prop(settings, "use_tripod_solver", text="Tripod Solver")
|
||||
|
||||
pie.operator("clip.set_solver_keyframe", text="Set Keyframe A", icon='KEY_HLT').keyframe = 'KEYFRAME_A'
|
||||
pie.operator("clip.set_solver_keyframe", text="Set Keyframe B", icon='KEY_HLT').keyframe = 'KEYFRAME_B'
|
||||
|
||||
prop = pie.operator("clip.clean_tracks", icon='STICKY_UVS_DISABLE')
|
||||
pie.operator("clip.filter_tracks", icon='FILTER')
|
||||
prop.frames = 15
|
||||
prop.error = 2
|
||||
|
||||
|
||||
class CLIP_PIE_reconstruction_pie(Menu):
|
||||
# Scene Reconstruction
|
||||
bl_label = "Reconstruction"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.set_viewport_background", text="Set Viewport Background", icon='SCENE_DATA')
|
||||
pie.operator("clip.setup_tracking_scene", text="Setup Tracking Scene", icon='SCENE_DATA')
|
||||
|
||||
pie.operator("clip.set_plane", text="Setup Floor", icon='MESH_PLANE')
|
||||
pie.operator("clip.set_origin", text="Set Origin", icon='MANIPUL')
|
||||
|
||||
pie.operator("clip.set_axis", text="Set X Axis", icon='AXIS_FRONT').axis = 'X'
|
||||
pie.operator("clip.set_axis", text="Set Y Axis", icon='AXIS_SIDE').axis = 'Y'
|
||||
|
||||
pie.operator("clip.set_scale", text="Set Scale", icon='ARROW_LEFTRIGHT')
|
||||
pie.operator("wm.call_menu_pie", text="Reconstruction", icon='MESH_DATA').name = "CLIP_PIE_geometry_reconstruction"
|
||||
|
||||
|
||||
class CLIP_PIE_timecontrol_pie(Menu):
|
||||
# Time Controls
|
||||
bl_label = "Time Control"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("screen.frame_jump", text="Jump to Startframe", icon='TRIA_LEFT').end = False
|
||||
pie.operator("screen.frame_jump", text="Jump to Endframe", icon='TRIA_RIGHT').end = True
|
||||
|
||||
pie.operator("clip.frame_jump", text="Start of Track", icon='REW').position = 'PATHSTART'
|
||||
pie.operator("clip.frame_jump", text="End of Track", icon='FF').position = 'PATHEND'
|
||||
|
||||
pie.operator("screen.animation_play", text="Playback Backwards", icon='PLAY_REVERSE').reverse = True
|
||||
pie.operator("screen.animation_play", text="Playback Forwards", icon='PLAY').reverse = False
|
||||
|
||||
pie.operator("screen.frame_offset", text="Previous Frame", icon='TRIA_LEFT').delta = -1
|
||||
pie.operator("screen.frame_offset", text="Next Frame", icon='TRIA_RIGHT').delta = 1
|
||||
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
classes = (
|
||||
|
@ -157,6 +363,17 @@ classes = (
|
|||
VIEW3D_PIE_manipulator,
|
||||
VIEW3D_PIE_pivot,
|
||||
VIEW3D_PIE_snap,
|
||||
|
||||
CLIP_PIE_geometry_reconstruction,
|
||||
CLIP_PIE_tracking_pie,
|
||||
CLIP_PIE_display_pie,
|
||||
CLIP_PIE_proxy_pie,
|
||||
CLIP_PIE_marker_pie,
|
||||
CLIP_PIE_solver_pie,
|
||||
CLIP_PIE_refine_pie,
|
||||
CLIP_PIE_reconstruction_pie,
|
||||
CLIP_PIE_clipsetup_pie,
|
||||
CLIP_PIE_timecontrol_pie,
|
||||
)
|
||||
|
||||
|
||||
|
@ -181,6 +398,22 @@ def register():
|
|||
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS', ctrl=True, shift=True)
|
||||
kmi.properties.name = 'VIEW3D_PIE_snap'
|
||||
|
||||
km = wm.keyconfigs.addon.keymaps.new(name="Clip", space_type='CLIP_EDITOR')
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'Q', 'PRESS')
|
||||
kmi.properties.name = "CLIP_PIE_marker_pie"
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'W', 'PRESS')
|
||||
kmi.properties.name = "CLIP_PIE_clipsetup_pie"
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'E', 'PRESS')
|
||||
kmi.properties.name = "CLIP_PIE_tracking_pie"
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'S', 'PRESS', shift=True)
|
||||
kmi.properties.name = "CLIP_PIE_solver_pie"
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'W', 'PRESS', shift=True)
|
||||
kmi.properties.name = "CLIP_PIE_reconstruction_pie"
|
||||
|
||||
km = wm.keyconfigs.addon.keymaps.new(name="Frames")
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'A', 'PRESS', oskey=True)
|
||||
kmi.properties.name = "CLIP_PIE_timecontrol_pie"
|
||||
|
||||
addon_keymaps.append(km)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue