[Bf-python] vertex animation in blender 2.5 / shapekeys

sc3sc3 . sc3sc3 at gmail.com
Mon May 23 12:21:47 CEST 2011


hi

sorry about crossposting

actually it concerns this question
http://blenderartists.org/forum/showthread.php?219358-vertex-animation-in-blender-2.5

but noone apparently has an answer
so i hope to find it here


does anybody have a simple example concerning animating vertices ( shapekeys
) ?

http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Meshes#Vertex_groups_and_shapekeys
there is for example this script
but how does one introduce the next step
and actually animating those shapekeys through python ?
i tried all kinds of ways of adding keyframes on the timeline but of no
avail :-(


#----------------------------------------------------------
# File shapekey.py
#----------------------------------------------------------
import bpy, random

def run(origin):
   # Add UV sphere
   bpy.ops.mesh.primitive_uv_sphere_add(
       segments=6, ring_count=5, size=1, location=origin)
   ob = bpy.context.object
   ob.name = 'ShapeKeyObject'
   ob.show_name = True

   # Create Left and Right vertex groups
   left = ob.vertex_groups.new('Left')
   right = ob.vertex_groups.new('Right')
   for v in ob.data.vertices:
       if v.co[0] > 0.001:
           left.add([v.index], 1.0, 'REPLACE')
       elif v.co[0] < -0.001:
           right.add([v.index], 1.0, 'REPLACE')
       else:
           left.add([v.index], 0.5, 'REPLACE')
           right.add([v.index], 0.5, 'REPLACE')

   # Add Basis key
   bpy.ops.object.shape_key_add(None)
   basis = ob.active_shape_key

   # Add FrontForward key: front verts move one unit forward
   # Slider from -1.0 to +2.0
   bpy.ops.object.shape_key_add(None)
   frontFwd = ob.active_shape_key
   frontFwd.name = 'FrontForward'
   frontFwd.slider_min = -1.0
   frontFwd.slider_max = 2.0
   for v in [19, 20, 23, 24]:
       pt = frontFwd.data[v].co
       pt[1] = pt[1] - 1

   # Add TopUp keys: top verts move one unit up.  TopUp_L and
   # TopUp_R only affect left and right halves, respectively
   keylist = [(None, ''), ('Left', '_L'), ('Right', '_R')]
   for (vgrp, suffix) in keylist:
       bpy.ops.object.shape_key_add(None)
       topUp = ob.active_shape_key
       topUp.name = 'TopUp' + suffix
       if vgrp:
           topUp.vertex_group = vgrp
       for v in [0, 1, 9, 10, 17, 18, 25]:
           pt = topUp.data[v].co
           pt[2] = pt[2] + 1

   # Pose shape keys
   for shape in ob.data.shape_keys.key_blocks:
       shape.value = random.random()
   return

if __name__ == "__main__":
   # Create five object with random shapekeys
   for j in range(5):
       run((3*j,0,0))



thanks for any help
kind regards
sc3*2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/bf-python/attachments/20110523/20936ee0/attachment.html>


More information about the Bf-python mailing list