[Bf-extensions-cvs] [4fbbc44f] master: animation_animall: moved to contrib: T63750

meta-androcto noreply at git.blender.org
Fri May 24 02:26:45 CEST 2019


Commit: 4fbbc44f79dbd582e75b3a179a3a3a9abf445b50
Author: meta-androcto
Date:   Fri May 24 10:26:23 2019 +1000
Branches: master
https://developer.blender.org/rBAC4fbbc44f79dbd582e75b3a179a3a3a9abf445b50

animation_animall: moved to contrib: T63750

===================================================================

A	animation_animall.py

===================================================================

diff --git a/animation_animall.py b/animation_animall.py
new file mode 100644
index 00000000..d6c58cd0
--- /dev/null
+++ b/animation_animall.py
@@ -0,0 +1,549 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+bl_info = {
+    "name": "AnimAll",
+    "author": "Daniel Salazar <zanqdo at gmail.com>",
+    "version": (0, 8, 1),
+    "blender": (2, 73, 0),
+    "location": "Tool bar > Animation tab > AnimAll",
+    "description": "Allows animation of mesh, lattice, curve and surface data",
+    "warning": "",
+    "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
+                "Scripts/Animation/AnimAll",
+    "category": "Animation",
+}
+
+"""
+Thanks to Campbell Barton and Joshua Leung for hes API additions and fixes
+Daniel 'ZanQdo' Salazar
+"""
+
+import bpy
+from bpy.types import (
+        Operator,
+        Panel,
+        AddonPreferences,
+        )
+from bpy.props import (
+        BoolProperty,
+        StringProperty,
+        )
+
+
+# Property Definitions
+
+bpy.types.WindowManager.key_shape = BoolProperty(
+    name="Shape",
+    description="Insert keyframes on active Shape Key layer",
+    default=False
+    )
+bpy.types.WindowManager.key_uvs = BoolProperty(
+    name="UVs",
+    description="Insert keyframes on active UV coordinates",
+    default=False
+    )
+bpy.types.WindowManager.key_ebevel = BoolProperty(
+    name="E-Bevel",
+    description="Insert keyframes on edge bevel weight",
+    default=False
+    )
+bpy.types.WindowManager.key_vbevel = BoolProperty(
+    name="V-Bevel",
+    description="Insert keyframes on vertex bevel weight",
+    default=False
+    )
+bpy.types.WindowManager.key_crease = BoolProperty(
+    name="Crease",
+    description="Insert keyframes on edge creases",
+    default=False
+    )
+bpy.types.WindowManager.key_vcols = BoolProperty(
+    name="V-Cols",
+    description="Insert keyframes on active Vertex Color values",
+    default=False
+    )
+bpy.types.WindowManager.key_vgroups = BoolProperty(
+    name="V-Groups",
+    description="Insert keyframes on active Vertex Group values",
+    default=False
+    )
+bpy.types.WindowManager.key_points = BoolProperty(
+    name="Points",
+    description="Insert keyframes on point locations",
+    default=False
+    )
+bpy.types.WindowManager.key_radius = BoolProperty(
+    name="Radius",
+    description="Insert keyframes on point radius (Shrink/Fatten)",
+    default=False
+    )
+bpy.types.WindowManager.key_tilt = BoolProperty(
+    name="Tilt",
+    description="Insert keyframes on point tilt",
+    default=False
+    )
+
+
+# Utility functions
+
+def refresh_ui_keyframes():
+    try:
+        for area in bpy.context.screen.areas:
+            if area.type in ('TIMELINE', 'GRAPH_EDITOR', 'DOPESHEET_EDITOR'):
+                area.tag_redraw()
+    except:
+        pass
+
+
+def insert_key(data, key):
+    try:
+        data.keyframe_insert(key)
+    except:
+        pass
+
+
+def delete_key(data, key):
+    try:
+        data.keyframe_delete(key)
+    except:
+        pass
+
+
+# GUI (Panel)
+
+class VIEW3D_PT_animall(Panel):
+    bl_space_type = 'VIEW_3D'
+    bl_region_type = 'TOOLS'
+    bl_category = "Animation"
+    bl_label = 'AnimAll'
+
+    @classmethod
+    def poll(self, context):
+        if context.active_object and context.active_object.type in {'MESH', 'LATTICE', 'CURVE', 'SURFACE'}:
+            return context.active_object.type
+
+    def draw(self, context):
+        Obj = context.active_object
+
+        layout = self.layout
+        col = layout.column(align=True)
+        row = col.row()
+
+        if Obj.type == 'LATTICE':
+            row.prop(context.window_manager, "key_points")
+            row.prop(context.window_manager, "key_shape")
+
+        elif Obj.type == 'MESH':
+            row.prop(context.window_manager, "key_points")
+            row.prop(context.window_manager, "key_shape")
+            row = col.row()
+            row.prop(context.window_manager, "key_ebevel")
+            row.prop(context.window_manager, "key_vbevel")
+            row = col.row()
+            row.prop(context.window_manager, "key_crease")
+            row.prop(context.window_manager, "key_uvs")
+            row = col.row()
+            row.prop(context.window_manager, "key_vcols")
+            row.prop(context.window_manager, "key_vgroups")
+
+        elif Obj.type == 'CURVE':
+            row.prop(context.window_manager, "key_points")
+            row.prop(context.window_manager, "key_shape")
+            row = col.row()
+            row.prop(context.window_manager, "key_radius")
+            row.prop(context.window_manager, "key_tilt")
+
+        elif Obj.type == 'SURFACE':
+            row.prop(context.window_manager, "key_points")
+            row.prop(context.window_manager, "key_shape")
+            row = col.row()
+            row.prop(context.window_manager, "key_radius")
+            row.prop(context.window_manager, "key_tilt")
+
+        layout.separator()
+        row = layout.row(align=True)
+        row.operator("anim.insert_keyframe_animall", icon="KEY_HLT")
+        row.operator("anim.delete_keyframe_animall", icon="KEY_DEHLT")
+        row = layout.row()
+        row.operator("anim.clear_animation_animall", icon="X")
+
+        if context.window_manager.key_shape:
+            ShapeKey = Obj.active_shape_key
+            ShapeKeyIndex = Obj.active_shape_key_index
+
+            split = layout.split()
+            row = split.row()
+
+            if ShapeKeyIndex > 0:
+                row.label(text=ShapeKey.name, icon="SHAPEKEY_DATA")
+                row.prop(ShapeKey, "value", text="")
+                row.prop(Obj, "show_only_shape_key", text="")
+                if ShapeKey.value < 1:
+                    row = layout.row()
+                    row.label(text='Maybe set "%s" to 1.0?' % ShapeKey.name, icon="INFO")
+            elif ShapeKey:
+                row.label(text="Can not key on Basis Shape", icon="ERROR")
+            else:
+                row.label(text="No active Shape Key", icon="ERROR")
+
+        if context.window_manager.key_points and context.window_manager.key_shape:
+            row = layout.row()
+            row.label(text='"Points" and "Shape" are redundant?', icon="INFO")
+
+
+class ANIM_OT_insert_keyframe_animall(Operator):
+    bl_label = "Insert"
+    bl_idname = "anim.insert_keyframe_animall"
+    bl_description = "Insert a Keyframe"
+    bl_options = {'REGISTER', 'UNDO'}
+
+    def invoke(self, context, event):
+        self.execute(context)
+
+        return {'FINISHED'}
+
+    def execute(op, context):
+        Obj = context.active_object
+
+        if Obj.type == 'MESH':
+            Mode = False
+            if context.mode == 'EDIT_MESH':
+                Mode = not Mode
+                bpy.ops.object.editmode_toggle()
+
+            Data = Obj.data
+
+            if context.window_manager.key_shape:
+                if Obj.active_shape_key_index > 0:
+                    for Vert in Obj.active_shape_key.data:
+                        insert_key(Vert, 'co')
+
+            if context.window_manager.key_points:
+                for Vert in Data.vertices:
+                    insert_key(Vert, 'co')
+
+            if context.window_manager.key_ebevel:
+                for Edge in Data.edges:
+                    insert_key(Edge, 'bevel_weight')
+
+            if context.window_manager.key_vbevel:
+                for Vert in Data.vertices:
+                    insert_key(Vert, 'bevel_weight')
+
+            if context.window_manager.key_crease:
+                for Edge in Data.edges:
+                    insert_key(Edge, 'crease')
+
+            if context.window_manager.key_vgroups:
+                for Vert in Data.vertices:
+                    for Group in Vert.groups:
+                        insert_key(Group, 'weight')
+
+            if context.window_manager.key_uvs:
+                for UV in Data.uv_layers.active.data:
+                    insert_key(UV, 'uv')
+
+            if context.window_manager.key_vcols:
+                for VColLayer in Data.vertex_colors:
+                    if VColLayer.active:  # only insert in active VCol layer
+                        for Data in VColLayer.data:
+                            insert_key(Data, 'color')
+
+            if Mode:
+                bpy.ops.object.editmode_toggle()
+
+        if Obj.type == 'LATTICE':
+            Mode = False
+            if context.mode != 'OBJECT':
+                Mode = not Mode
+                bpy.ops.object.editmode_toggle()
+
+            Data = Obj.data
+
+            if context.window_manager.key_shape:
+                if Obj.active_shape_key_index > 0:
+                    for Point in Obj.active_shape_key.data:
+                        insert_key(Point, 'co')
+
+            if context.window_manager.key_points:
+                for Point in Data.points:
+                    insert_key(Point, 'co_deform')
+
+            if Mode:
+                bpy.ops.object.editmode_toggle()
+
+        if Obj.type in {'CURVE', 'SURFACE'}:
+            Mode = False
+            if context.mode != 'OBJECT':
+                Mode = not Mode
+                bpy.ops.object.editmode_toggle()
+
+            Data = Obj.data
+
+            # run this outside the splines loop (only once)
+            if context.window_manager.key_shape:
+                if Obj.active_shape_key_index > 0:
+                    for CV in Obj.active_shape_key.data:
+        

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list