diff options
Diffstat (limited to 'btrace/bTrace_panel.py')
-rw-r--r-- | btrace/bTrace_panel.py | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/btrace/bTrace_panel.py b/btrace/bTrace_panel.py new file mode 100644 index 00000000..c36d24f1 --- /dev/null +++ b/btrace/bTrace_panel.py @@ -0,0 +1,387 @@ +import bpy +from bpy.types import Panel + +# Draw Brush panel in Toolbar +class addTracerObjectPanel(Panel): + bl_idname = "BTRACE_PT_object_brush" + bl_label = "Btrace" + bl_space_type = "VIEW_3D" + bl_region_type = "UI" + bl_context = "objectmode" + bl_category = "Create" + bl_options = {'DEFAULT_CLOSED'} + + def draw(self, context): + layout = self.layout + Btrace = context.window_manager.curve_tracer + addon_prefs = context.preferences.addons[__package__].preferences + switch_expand = addon_prefs.expand_enum + obj = context.object + + # Color Blender Panel options + def color_blender(): + # Buttons for Color Blender + row = box.row() + row.label(text="Color palette") + row.prop(Btrace, "mmColors", text="") + + # Show Custom Colors if selected + if Btrace.mmColors == 'CUSTOM': + row = box.row(align=True) + for i in range(1, 9): + row.prop(Btrace, "mmColor" + str(i), text="") + # Show Earth Colors + elif Btrace.mmColors == 'BW': + row = box.row(align=True) + row.prop(Btrace, "bwColor1", text="") + row.prop(Btrace, "bwColor2", text="") + # Show Earth Colors + elif Btrace.mmColors == 'BRIGHT': + row = box.row(align=True) + for i in range(1, 5): + row.prop(Btrace, "brightColor" + str(i), text="") + # Show Earth Colors + elif Btrace.mmColors == 'EARTH': + row = box.row(align=True) + for i in range(1, 6): + row.prop(Btrace, "earthColor" + str(i), text="") + # Show Earth Colors + elif Btrace.mmColors == 'GREENBLUE': + row = box.row(align=True) + for i in range(1, 4): + row.prop(Btrace, "greenblueColor" + str(i), text="") + elif Btrace.mmColors == 'RANDOM': + row = box.row() + + # Curve noise settings + def curve_noise(): + row = box.row() + row.label(text="F-Curve Noise", icon='RNDCURVE') + row = box.row(align=True) + row.prop(Btrace, "fcnoise_rot", toggle=True) + row.prop(Btrace, "fcnoise_loc", toggle=True) + row.prop(Btrace, "fcnoise_scale", toggle=True) + + col = box.column(align=True) + col.prop(Btrace, "fcnoise_amp") + col.prop(Btrace, "fcnoise_timescale") + box.prop(Btrace, "fcnoise_key") + + # Curve Panel options + def curve_settings(): + # Button for curve options + row = self.layout.row() + row = box.row(align=True) + + row.prop(Btrace, "show_curve_settings", + icon='CURVE_BEZCURVE', text="Curve Settings") + row.prop(Btrace, "material_settings", + icon='MATERIAL_DATA', text="Material Settings") + + if Btrace.material_settings: + row = box.row() + row.label(text="Material Settings", icon='COLOR') + row = box.row() + row.prop(Btrace, "trace_mat_random") + if not Btrace.trace_mat_random: + row = box.row() + row.prop(Btrace, "trace_mat_color", text="") + else: + row.prop(Btrace, "mat_run_color_blender") + if Btrace.mat_run_color_blender: + row = box.row() + row.operator("object.colorblenderclear", + text="Reset Material Keyframes", + icon="KEY_DEHLT") + row.prop(Btrace, "mmSkip", text="Keyframe every") + color_blender() + row = box.row() + + if Btrace.show_curve_settings: + # selected curve options + if len(context.selected_objects) > 0 and obj.type == 'CURVE': + col = box.column(align=True) + col.label(text="Edit Curves for:", icon='IPO_BEZIER') + col.separator() + col.label(text="Selected Curve Bevel Options") + row = col.row(align=True) + row.prop(obj.data, "bevel_depth", text="Depth") + row.prop(obj.data, "bevel_resolution", text="Resolution") + row = col.row(align=True) + row.prop(obj.data, "resolution_u") + else: # For new curve + box.label(text="New Curve Settings", icon='CURVE_BEZCURVE') + box.prop(Btrace, "curve_spline") + box.prop(Btrace, "curve_handle") + box.label(text="Bevel Options") + col = box.column(align=True) + row = col.row(align=True) + row.prop(Btrace, "curve_depth", text="Depth") + row.prop(Btrace, "curve_resolution", text="Resolution") + row = col.row(align=True) + row.prop(Btrace, "curve_u") + + # Grow Animation Panel options + def add_grow(): + # Button for grow animation option + row = box.row() + row.label(text="Animate Final Curve", icon="NONE") + row = box.row() + row.prop(Btrace, "animate", text="Add Grow Curve Animation", icon="META_BALL") + box.separator() + if Btrace.animate: + box.label(text="Frame Animation Settings:", icon="META_BALL") + col = box.column(align=True) + col.prop(Btrace, "anim_auto") + if not Btrace.anim_auto: + row = col.row(align=True) + row.prop(Btrace, "anim_f_start") + row.prop(Btrace, "anim_length") + row = col.row(align=True) + row.prop(Btrace, "anim_delay") + row.prop(Btrace, "anim_f_fade") + + box.label(text="Additional Settings") + row = box.row() + row.prop(Btrace, "anim_tails") + row.prop(Btrace, "anim_keepr") + + # Start Btrace Panel + if switch_expand == 'list': + layout.label(text="Available Tools:", icon="COLLAPSEMENU") + col = layout.column(align=True) + col.prop(Btrace, "btrace_toolmenu", text="") + elif switch_expand == 'col': + col = layout.column(align=True) + col.prop(Btrace, "btrace_toolmenu", expand=True) + elif switch_expand == 'row': + row = layout.row(align=True) + row.alignment = 'CENTER' + row.prop(Btrace, "btrace_toolmenu", text="", expand=True) + + # Start Object Tools + sel = context.selected_objects + + # Default option (can be expanded into help) + if Btrace.btrace_toolmenu == 'tool_help': + row = layout.row() + row.label(text="Pick an option", icon="HELP") + + # Object Trace + elif Btrace.btrace_toolmenu == 'tool_objectTrace': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Object Trace", icon="FORCE_MAGNETIC") + row.operator("object.btobjecttrace", text="Run!", icon="PLAY") + row = box.row() + row.prop(Btrace, "settings_toggle", icon="MODIFIER", text="Settings") + myselected = "Selected %d" % len(context.selected_objects) + row.label(text=myselected) + if Btrace.settings_toggle: + box.label(text="Edge Type for Curves:", icon="IPO_CONSTANT") + row = box.row(align=True) + row.prop(Btrace, "convert_edgetype", text="") + box.prop(Btrace, "object_duplicate") + if len(sel) > 1: + box.prop(Btrace, "convert_joinbefore") + else: + Btrace.convert_joinbefore = False + row = box.row() + row.prop(Btrace, "distort_curve") + if Btrace.distort_curve: + col = box.column(align=True) + col.prop(Btrace, "distort_modscale") + col.prop(Btrace, "distort_noise") + row = box.row() + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Objects Connect + elif Btrace.btrace_toolmenu == 'tool_objectsConnect': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Objects Connect", icon="OUTLINER_OB_EMPTY") + row.operator("object.btobjectsconnect", text="Run!", icon="PLAY") + row = box.row() + row.prop(Btrace, "settings_toggle", icon='MODIFIER', text='Settings') + row.label(text="") + if Btrace.settings_toggle: + row = box.row() + row.prop(Btrace, "respect_order", text="Selection Options") + if Btrace.respect_order: + box.operator("object.select_order", + text="Click to start order selection", + icon='UV_SYNC_SELECT') + row = box.row() + row.prop(Btrace, "connect_noise", text="Add F-Curve Noise") + if Btrace.connect_noise: + curve_noise() # Show Curve Noise settings + + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Mesh Follow + elif Btrace.btrace_toolmenu == 'tool_meshFollow': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Mesh Follow", icon="DRIVER") + row.operator("object.btmeshfollow", text="Run!", icon="PLAY") + row = box.row() + if Btrace.fol_mesh_type == 'OBJECT': + a, b = "Trace Object", "SNAP_VOLUME" + if Btrace.fol_mesh_type == 'VERTS': + a, b = "Trace Verts", "SNAP_VERTEX" + if Btrace.fol_mesh_type == 'EDGES': + a, b = "Trace Edges", "SNAP_EDGE" + if Btrace.fol_mesh_type == 'FACES': + a, b = "Trace Faces", "SNAP_FACE" + row.prop(Btrace, "settings_toggle", icon='MODIFIER', text='Settings') + row.label(text=a, icon=b) + if Btrace.settings_toggle: + col = box.column(align=True) + row = col.row(align=True) + row.prop(Btrace, "fol_mesh_type", expand=True) + row = col.row(align=True) + if Btrace.fol_mesh_type != 'OBJECT': + row.prop(Btrace, "fol_sel_option", expand=True) + row = box.row() + if Btrace.fol_sel_option == 'RANDOM': + row.label(text="Random Select of Total") + row.prop(Btrace, "fol_perc_verts", text="%") + if Btrace.fol_sel_option == 'CUSTOM': + row.label(text="Choose selection in Edit Mode") + if Btrace.fol_sel_option == 'ALL': + row.label(text="Select All items") + col = box.column(align=True) + col.label(text="Time Options", icon="TIME") + col.prop(Btrace, "particle_step") + row = col.row(align=True) + row.prop(Btrace, "fol_start_frame") + row.prop(Btrace, "fol_end_frame") + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Handwriting Tools + elif Btrace.btrace_toolmenu == 'tool_handwrite': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text='Handwriting', icon='BRUSH_DATA') + row.operator("curve.btwriting", text="Run!", icon='PLAY') + row = box.row() + row = box.row() + row.label(text='Grease Pencil Writing Tools') + col = box.column(align=True) + row = col.row(align=True) + row.operator("gpencil.draw", text="Draw", icon='BRUSH_DATA').mode = 'DRAW' + row.operator("gpencil.draw", text="Poly", icon='VPAINT_HLT').mode = 'DRAW_POLY' + row = col.row(align=True) + row.operator("gpencil.draw", text="Line", icon='ZOOM_OUT').mode = 'DRAW_STRAIGHT' + row.operator("gpencil.draw", text="Erase", icon='TPAINT_HLT').mode = 'ERASER' + row = box.row() + row.operator("gpencil.data_unlink", text="Delete Grease Pencil Layer", icon="CANCEL") + row = box.row() + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Particle Trace + elif Btrace.btrace_toolmenu == 'tool_particleTrace': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Particle Trace", icon="PARTICLES") + row.operator("particles.particletrace", text="Run!", icon="PLAY") + row = box.row() + row.prop(Btrace, "settings_toggle", icon='MODIFIER', text='Settings') + row.label(text="") + if Btrace.settings_toggle: + box.prop(Btrace, "particle_step") + row = box.row() + row.prop(Btrace, "curve_join") + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Connect Particles + elif Btrace.btrace_toolmenu == 'tool_particleConnect': + row = layout.row() + row.label(text=" Trace Tool:", icon="FORCE_CURVE") + box = self.layout.box() + row = box.row() + row.label(text='Particle Connect', icon='MOD_PARTICLES') + row.operator("particles.connect", icon="PLAY", text='Run!') + row = box.row() + row.prop(Btrace, "settings_toggle", icon='MODIFIER', text='Settings') + row.label(text="") + if Btrace.settings_toggle: + box.prop(Btrace, "particle_step") + row = box.row() + row.prop(Btrace, 'particle_auto') + if not Btrace.particle_auto: + row = box.row(align=True) + row.prop(Btrace, 'particle_f_start') + row.prop(Btrace, 'particle_f_end') + curve_settings() # Show Curve/material settings + add_grow() # Grow settings here + + # Grow Animation + elif Btrace.btrace_toolmenu == 'tool_growCurve': + row = layout.row() + row.label(text=" Curve Tool:", icon="OUTLINER_OB_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Grow Curve", icon="META_BALL") + row.operator("curve.btgrow", text="Run!", icon="PLAY") + row = box.row() + row.prop(Btrace, "settings_toggle", icon="MODIFIER", text="Settings") + row.operator("object.btreset", icon="KEY_DEHLT") + if Btrace.settings_toggle: + box.label(text="Frame Animation Settings:") + col = box.column(align=True) + col.prop(Btrace, "anim_auto") + if not Btrace.anim_auto: + row = col.row(align=True) + row.prop(Btrace, "anim_f_start") + row.prop(Btrace, "anim_length") + row = col.row(align=True) + row.prop(Btrace, "anim_delay") + row.prop(Btrace, "anim_f_fade") + + box.label(text="Additional Settings") + row = box.row() + row.prop(Btrace, "anim_tails") + row.prop(Btrace, "anim_keepr") + + # F-Curve Noise Curve + elif Btrace.btrace_toolmenu == 'tool_fcurve': + row = layout.row() + row.label(text=" Curve Tool:", icon="OUTLINER_OB_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="F-Curve Noise", icon='RNDCURVE') + row.operator("object.btfcnoise", icon='PLAY', text="Run!") + row = box.row() + row.prop(Btrace, "settings_toggle", icon='MODIFIER', text='Settings') + row.operator("object.btreset", icon='KEY_DEHLT') + if Btrace.settings_toggle: + curve_noise() + + # Color Blender + elif Btrace.btrace_toolmenu == 'tool_colorblender': + row = layout.row() + row.label(text=" Curve/Object Tool:", icon="OUTLINER_OB_CURVE") + box = self.layout.box() + row = box.row() + row.label(text="Color Blender", icon="COLOR") + row.operator("object.colorblender", icon='PLAY', text="Run!") + row = box.row() + row.operator("object.colorblenderclear", text="Reset Keyframes", icon="KEY_DEHLT") + row.prop(Btrace, "mmSkip", text="Keyframe every") + color_blender() |