Skip to content
Snippets Groups Projects
scene_amaranth_toolset.py 40.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Pablo Vazquez's avatar
    Pablo Vazquez committed
                    for v2 in bm.verts:
                        if v1 != v2:
                            mirror_coord = Vector(v2.co)
                            mirror_coord[0] *= -1
                            distance = (mirror_coord - v1.co).length_squared
                            if closest_vert is None or distance < closest_distance:
                                closest_distance = distance
                                closest_vert = v2
                    if closest_vert:
                        v1.select = False
                        v1.co = Vector(closest_vert.co)
                        v1.co[0] *= -1
    
            bm.select_flush_mode()
            bmesh.update_edit_mesh(object.data)
    
            return {'FINISHED'}
    # // FEATURE: Mesh Symmetry Tools by Sergey Sharybin
    
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
    # FEATURE: Cycles Render Samples per Scene
    def render_cycles_scene_samples(self, context):
    
        layout = self.layout
    
        scenes = bpy.data.scenes
        scene = context.scene
        cscene = scene.cycles
    
        if (len(bpy.data.scenes) > 1):
            layout.separator()
    
            layout.label(text="Samples Per Scene:")
    
            if cscene.progressive == 'PATH':
                for s in bpy.data.scenes:
                    if s != scene and s.render.engine == 'CYCLES':
                        cscene = s.cycles
        
                        split = layout.split()
                        col = split.column()
                        sub = col.column(align=True)
        
                        sub.label(text="%s" % s.name)
        
                        col = split.column()
                        sub = col.column(align=True)
                        sub.prop(cscene, "samples", text="Render")
            else:
                for s in bpy.data.scenes:
                    if s != scene and s.render.engine == 'CYCLES':
                        cscene = s.cycles
        
                        split = layout.split()
                        col = split.column()
                        sub = col.column(align=True)
        
                        sub.label(text="%s" % s.name)
        
                        col = split.column()
                        sub = col.column(align=True)
                        sub.prop(cscene, "aa_samples", text="Render")
    # // FEATURE: Cycles Render Samples per Scene
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
    
    
    classes = (SCENE_OT_refresh,
               WM_OT_save_reload,
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
               MESH_OT_find_asymmetric,
               MESH_OT_make_symmetric,
    
               NODE_OT_AddTemplateVignette,
               NODE_MT_amaranth_templates,
               FILE_OT_directory_current_blend,
    
               FILE_OT_directory_go_to,
    
               NODE_PT_indices,
               NODE_PT_simplify,
               NODE_OT_toggle_mute,
               NODE_OT_show_active_node_image,
               VIEW3D_OT_render_border_camera,
               VIEW3D_OT_show_only_render,
    
               OBJECT_OT_select_meshlights,
               FILE_PT_libraries)
    
    
    addon_keymaps = []
    
    kmi_defs = (
        ('wm.call_menu', 'W', False, False, False, (('name', NODE_MT_amaranth_templates.bl_idname),)),
    )
    
    def register():
    
        bpy.utils.register_class(AmaranthToolsetPreferences)
    
        # UI: Register the panel
        init_properties()
        for c in classes:
            bpy.utils.register_class(c)
    
        bpy.types.VIEW3D_MT_object_specials.append(button_refresh)
        bpy.types.VIEW3D_MT_object_specials.append(button_render_border_camera)
        bpy.types.VIEW3D_MT_object_specials.append(button_camera_passepartout)
    
        bpy.types.INFO_MT_file.append(button_save_reload)
        bpy.types.INFO_HT_header.append(stats_scene)
    
        bpy.types.VIEW3D_MT_object_specials.append(button_frame_current) # Current Frame
        bpy.types.VIEW3D_MT_pose_specials.append(button_frame_current)
        bpy.types.VIEW3D_MT_select_object.append(button_select_meshlights)
    
        bpy.types.TIME_HT_header.append(label_timeline_extra_info) # Timeline Extra Info
    
        bpy.types.NODE_HT_header.append(node_templates_pulldown)
        bpy.types.NODE_HT_header.append(node_stats)
    
        bpy.types.CyclesMaterial_PT_settings.append(material_cycles_settings_extra)
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
        bpy.types.CyclesRender_PT_sampling.append(render_cycles_scene_samples)
    
    
        bpy.types.FILEBROWSER_HT_header.append(button_directory_current_blend)
    
        bpy.types.SCENE_PT_simplify.append(unsimplify_ui)
        bpy.types.CyclesScene_PT_simplify.append(unsimplify_ui)
    
    
        bpy.types.PARTICLE_PT_render.prepend(particles_material_info)
    
    
        bpy.app.handlers.render_pre.append(unsimplify_render_pre)
        bpy.app.handlers.render_post.append(unsimplify_render_post)
    
        wm = bpy.context.window_manager
        kc = wm.keyconfigs.addon
        if kc:
            km = kc.keymaps.new(name='Window')
            kmi = km.keymap_items.new('scene.refresh', 'F5', 'PRESS', shift=False, ctrl=False)
            kmi = km.keymap_items.new('wm.save_reload', 'W', 'PRESS', shift=True, ctrl=True)
    
            km = kc.keymaps.new(name='3D View', space_type='VIEW_3D')
            kmi = km.keymap_items.new('view3d.show_only_render', 'Z', 'PRESS', shift=True, alt=True)
            kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS', shift=True, alt=False)
            kmi.properties.data_path = 'space_data.viewport_shade'
            kmi.properties.value_1 = 'SOLID'
            kmi.properties.value_2 = 'RENDERED'
    
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
            km = kc.keymaps.new(name='Graph Editor', space_type='GRAPH_EDITOR')
            kmi = km.keymap_items.new('wm.context_set_enum', 'TAB', 'PRESS', ctrl=True)
            kmi.properties.data_path = 'area.type'
            kmi.properties.value = 'DOPESHEET_EDITOR'
    
            km = kc.keymaps.new(name='Dopesheet', space_type='DOPESHEET_EDITOR')
            kmi = km.keymap_items.new('wm.context_set_enum', 'TAB', 'PRESS', ctrl=True)
            kmi.properties.data_path = 'area.type'
            kmi.properties.value = 'GRAPH_EDITOR'
    
            km = kc.keymaps.new(name='Dopesheet', space_type='DOPESHEET_EDITOR')
            kmi = km.keymap_items.new('wm.context_toggle_enum', 'TAB', 'PRESS', shift=True)
            kmi.properties.data_path = 'space_data.mode'
            kmi.properties.value_1 = 'ACTION'
            kmi.properties.value_2 = 'DOPESHEET'
    
    
            km = kc.keymaps.new(name='Node Editor', space_type='NODE_EDITOR')
            km.keymap_items.new("node.show_active_node_image", 'ACTIONMOUSE', 'RELEASE')
            km.keymap_items.new("node.show_active_node_image", 'SELECTMOUSE', 'RELEASE')
    
            addon_keymaps.append((km, kmi))
    
            # copypasted from the awesome node efficiency tools, future hotkeys proof!
            km = kc.keymaps.new(name='Node Editor', space_type="NODE_EDITOR")
            for (identifier, key, CTRL, SHIFT, ALT, props) in kmi_defs:
                kmi = km.keymap_items.new(identifier, key, 'PRESS', ctrl=CTRL, shift=SHIFT, alt=ALT)
                if props:
                    for prop, value in props:
                        setattr(kmi.properties, prop, value)
                addon_keymaps.append((km, kmi))
    
    def unregister():
    
        bpy.utils.unregister_class(AmaranthToolsetPreferences)
    
        for c in classes:
            bpy.utils.unregister_class(c)
    
        bpy.types.VIEW3D_MT_object_specials.remove(button_refresh)
        bpy.types.VIEW3D_MT_object_specials.remove(button_render_border_camera)
        bpy.types.VIEW3D_MT_object_specials.remove(button_camera_passepartout)
    
        bpy.types.INFO_MT_file.remove(button_save_reload)
        bpy.types.INFO_HT_header.remove(stats_scene)
    
        bpy.types.VIEW3D_MT_object_specials.remove(button_frame_current)
        bpy.types.VIEW3D_MT_pose_specials.remove(button_frame_current)
        bpy.types.VIEW3D_MT_select_object.remove(button_select_meshlights)
    
        bpy.types.TIME_HT_header.remove(label_timeline_extra_info)
    
        bpy.types.NODE_HT_header.remove(node_templates_pulldown)
        bpy.types.NODE_HT_header.remove(node_stats)
    
        bpy.types.CyclesMaterial_PT_settings.remove(material_cycles_settings_extra)
    
    Pablo Vazquez's avatar
    Pablo Vazquez committed
        bpy.types.CyclesRender_PT_sampling.remove(render_cycles_scene_samples)
    
    
        bpy.types.FILEBROWSER_HT_header.remove(button_directory_current_blend)
    
        bpy.types.SCENE_PT_simplify.remove(unsimplify_ui)
        bpy.types.CyclesScene_PT_simplify.remove(unsimplify_ui)
    
    
        bpy.types.PARTICLE_PT_render.remove(particles_material_info)
    
    
        bpy.app.handlers.render_pre.remove(unsimplify_render_pre)
        bpy.app.handlers.render_post.remove(unsimplify_render_post)
        
        for km, kmi in addon_keymaps:
            km.keymap_items.remove(kmi)
        addon_keymaps.clear()
        
        clear_properties()
    
    if __name__ == "__main__":
        register()