[Bf-extensions-cvs] [75af6e5d] master: Amaranth: Add back from addons contrib
CansecoGPC
noreply at git.blender.org
Mon Dec 9 14:42:08 CET 2019
Commit: 75af6e5dcf84cc2d2693374a01ecbad0f874701b
Author: CansecoGPC
Date: Mon Dec 9 14:42:04 2019 +0100
Branches: master
https://developer.blender.org/rBA75af6e5dcf84cc2d2693374a01ecbad0f874701b
Amaranth: Add back from addons contrib
===================================================================
A amaranth/__init__.py
A amaranth/animation/__init__.py
A amaranth/animation/frame_current.py
A amaranth/animation/jump_frames.py
A amaranth/animation/motion_paths.py
A amaranth/animation/timeline_extra_info.py
A amaranth/misc/__init__.py
A amaranth/misc/color_management.py
A amaranth/misc/dupli_group_id.py
A amaranth/misc/sequencer_extra_info.py
A amaranth/misc/toggle_wire.py
A amaranth/modeling/__init__.py
A amaranth/modeling/symmetry_tools.py
A amaranth/node_editor/__init__.py
A amaranth/node_editor/display_image.py
A amaranth/node_editor/id_panel.py
A amaranth/node_editor/node_shader_extra.py
A amaranth/node_editor/node_stats.py
A amaranth/node_editor/normal_node.py
A amaranth/node_editor/simplify_nodes.py
A amaranth/node_editor/switch_material.py
A amaranth/node_editor/templates/__init__.py
A amaranth/node_editor/templates/vectorblur.py
A amaranth/node_editor/templates/vignette.py
A amaranth/prefs.py
A amaranth/render/__init__.py
A amaranth/render/border_camera.py
A amaranth/render/final_resolution.py
A amaranth/render/meshlight_add.py
A amaranth/render/meshlight_select.py
A amaranth/render/passepartout.py
A amaranth/render/render_output_z.py
A amaranth/render/samples_scene.py
A amaranth/scene/__init__.py
A amaranth/scene/current_blend.py
A amaranth/scene/debug.py
A amaranth/scene/goto_library.py
A amaranth/scene/material_remove_unassigned.py
A amaranth/scene/refresh.py
A amaranth/scene/save_reload.py
A amaranth/scene/stats.py
A amaranth/utils.py
===================================================================
diff --git a/amaranth/__init__.py b/amaranth/__init__.py
new file mode 100644
index 00000000..3a4dd49f
--- /dev/null
+++ b/amaranth/__init__.py
@@ -0,0 +1,119 @@
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+"""
+Amaranth
+
+Using Blender every day, you get to change little things on it to speedup
+your workflow. The problem is when you have to switch computers with
+somebody else's Blender, it sucks.
+That's the main reason behind Amaranth. I ported all sort of little changes
+I find useful into this addon.
+
+What is it about? Anything, whatever I think it can speedup workflow,
+I'll try to add it. Enjoy <3
+"""
+
+import sys
+
+# import amaranth's modules
+
+# NOTE: avoid local imports whenever possible!
+# Thanks to Christopher Crouzet for let me know about this.
+# http://stackoverflow.com/questions/13392038/python-making-a-class-variable-static-even-when-a-module-is-imported-in-differe
+
+from amaranth import prefs
+
+from amaranth.modeling import symmetry_tools
+
+from amaranth.scene import (
+ refresh,
+ save_reload,
+ current_blend,
+ stats,
+ goto_library,
+ debug,
+ material_remove_unassigned,
+ )
+
+from amaranth.node_editor import (
+ id_panel,
+ display_image,
+ templates,
+ simplify_nodes,
+ node_stats,
+ normal_node,
+ switch_material,
+ node_shader_extra,
+ )
+
+from amaranth.render import (
+ border_camera,
+ meshlight_add,
+ meshlight_select,
+ passepartout,
+ final_resolution,
+ samples_scene,
+ render_output_z,
+ )
+
+from amaranth.animation import (
+ timeline_extra_info,
+ frame_current,
+ motion_paths,
+ jump_frames,
+ )
+
+from amaranth.misc import (
+ color_management,
+ dupli_group_id,
+ toggle_wire,
+ sequencer_extra_info,
+ )
+
+
+# register the addon + modules found in globals()
+bl_info = {
+ "name": "Amaranth Toolset",
+ "author": "Pablo Vazquez, Bassam Kurdali, Sergey Sharybin, Lukas Tönne, Cesar Saez, CansecoGPC",
+ "version": (1, 0, 8),
+ "blender": (2, 81, 0),
+ "location": "Everywhere!",
+ "description": "A collection of tools and settings to improve productivity",
+ "warning": "",
+ "wiki_url": "https://pablovazquez.art/amaranth",
+ "tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
+ "category": "Interface",
+}
+
+
+def _call_globals(attr_name):
+ for m in globals().values():
+ if hasattr(m, attr_name):
+ getattr(m, attr_name)()
+
+
+def _flush_modules(pkg_name):
+ pkg_name = pkg_name.lower()
+ for k in tuple(sys.modules.keys()):
+ if k.lower().startswith(pkg_name):
+ del sys.modules[k]
+
+
+def register():
+ _call_globals("register")
+
+
+def unregister():
+ _call_globals("unregister")
+ _flush_modules("amaranth") # reload amaranth
diff --git a/amaranth/animation/__init__.py b/amaranth/animation/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/amaranth/animation/frame_current.py b/amaranth/animation/frame_current.py
new file mode 100644
index 00000000..6bea2009
--- /dev/null
+++ b/amaranth/animation/frame_current.py
@@ -0,0 +1,45 @@
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+"""
+Current Frame Slider
+
+Currently the only way to change the current frame is to have a Timeline
+editor open, but sometimes you don't have one, or you're fullscreen.
+This option adds the Current Frame slider to the Specials menu. Find it
+hitting the W menu in Object mode, you can slide or click in the middle
+of the button to set the frame manually.
+"""
+
+import bpy
+
+
+def button_frame_current(self, context):
+ get_addon = "amaranth" in context.preferences.addons.keys()
+ if not get_addon:
+ return
+
+ scene = context.scene
+ if context.preferences.addons["amaranth"].preferences.use_frame_current:
+ self.layout.separator()
+ self.layout.prop(scene, "frame_current", text="Set Current Frame")
+
+
+def register():
+ bpy.types.VIEW3D_MT_object_context_menu.append(button_frame_current)
+ bpy.types.VIEW3D_MT_pose_context_menu.append(button_frame_current)
+
+
+def unregister():
+ bpy.types.VIEW3D_MT_object_context_menu.remove(button_frame_current)
+ bpy.types.VIEW3D_MT_pose_context_menu.remove(button_frame_current)
diff --git a/amaranth/animation/jump_frames.py b/amaranth/animation/jump_frames.py
new file mode 100644
index 00000000..fb12cb35
--- /dev/null
+++ b/amaranth/animation/jump_frames.py
@@ -0,0 +1,209 @@
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+"""
+Jump X Frames on Shift Up/Down
+
+When you hit Shift Up/Down, you'll jump 10 frames forward/backwards.
+Sometimes is nice to tweak that value.
+
+In the User Preferences, Editing tab, you'll find a "Frames to Jump"
+slider where you can adjust how many frames you'd like to move
+forwards/backwards.
+
+Make sure you save your user settings if you want to use this value from
+now on.
+
+Find it on the User Preferences, Editing.
+"""
+
+import bpy
+from bpy.types import Operator
+from bpy.props import BoolProperty
+
+KEYMAPS = list()
+
+
+# FUNCTION: Check if object has keyframes for a specific frame
+def is_keyframe(ob, frame):
+ if ob is not None and ob.animation_data is not None and ob.animation_data.action is not None:
+ for fcu in ob.animation_data.action.fcurves:
+ if frame in (p.co.x for p in fcu.keyframe_points):
+ return True
+ return False
+
+
+# monkey path is_keyframe function
+bpy.types.Object.is_keyframe = is_keyframe
+
+
+# FEATURE: Jump to frame in-between next and previous keyframe
+class AMTH_SCREEN_OT_keyframe_jump_inbetween(Operator):
+ """Jump to half in-between keyframes"""
+ bl_idname = "screen.amth_keyframe_jump_inbetween"
+ bl_label = "Jump to Keyframe In-between"
+
+ backwards: BoolProperty()
+
+ def execute(self, context):
+ back = self.backwards
+
+ scene = context.scene
+ ob = bpy.context.object
+ frame_start = scene.frame_start
+ frame_end = scene.frame_end
+
+ if not context.scene.get("amth_keyframes_jump"):
+ context.scene["amth_keyframes_jump"] = list()
+
+ keyframes_list = context.scene["amth_keyframes_jump"]
+
+ for f in range(frame_start, frame_end):
+ if ob.is_keyframe(f):
+ keyframes_list = list(keyframes_list)
+ keyframes_list.append(f)
+
+ if keyframes_list:
+ keyframes_list_half = []
+
+ for i, item in enumerate(keyframes_list):
+ try:
+ next_item = keyframes_list[i + 1]
+ keyframes_list_half.append(int((item + next_item) / 2))
+ except:
+ pass
+
+ if len(keyframes_list_half) > 1:
+ if back:
+ v = (scene.frame_current == keyframes_list_half[::-1][-1],
+ scene.frame_current < keyframes_list_half[::-1][-1])
+ if any(v):
+ self.report({"INFO"}, "No keyframes behind")
+ else:
+ for i in keyframes_list_half[::-1]:
+ if scene.frame_current > i:
+ scene.frame_current = i
+ break
+ else:
+ v = (scene.frame_current == keyframes_list_half[-1],
+ scene.frame_current > keyframes_list_half[-1])
+ if any(v):
+ self.report({"INFO"}, "No keyframes ahead")
+ else:
+ for i in keyframes_list_half:
+ if scene.frame_current < i:
+ scene.frame_current = i
+ break
+ else:
+ self.report({"INFO"}, "Object has only 1 keyframe")
+ else:
+ self.report({"INFO"}, "Object has no keyframes")
+
+ return {"FINISHED"}
+
+
+# FEATURE: Jump forward/backward every N frames
+class AMTH_SCREEN_OT_frame_jump(Operator):
+ """Jump a number of frames forward/backwards"""
+ bl_idname = "screen.
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list