Pages

Monday, May 4, 2020

shapes doodles

I did the model and rough shapes:
design by Abigail Muñoz's Miles character link (abigailmunoz dot com)


here's the script i wrote in blender 2.79 to animate the shapes:
"""
import bpy
import sys
#example if wanted to test script without addon part. change to your path here
sys.path.append('/Users/Nathaniel/Documents/src_blender/python/riggingTools/faces')

import milesFace as mod
import imp
imp.reload(mod)

mod.animateShapes(bpy.context.object)
#mod.clearAnimationShapes(bpy.context.object)
"""


def animateShapes(meshObj = None):
    """
    each shape in 10 frames turns on then off
    #first shape use frame 10.  10*1 + 10*0
    #0 left
    #10 mid on
    #20 right
    
    #second shape use frame 30.  10*2 + 10*1
    #20 left
    #30 mid on
    #40 right
    
    #50  10*3+ 10*2
    #40 l
    #60 r
    """
    lenShapeOn = 10

    #loop shape keys
    for b in range(1,len(meshObj.data.shape_keys.key_blocks)):
        cf = 10*b + 10*(b-1)
        lf = cf-lenShapeOn
        rf = cf+lenShapeOn
        keyObj = meshObj.data.shape_keys.key_blocks[b]
        #left
        keyObj.value = 0
        keyObj.keyframe_insert("value",frame=lf)
        #right
        keyObj.value = 0
        keyObj.keyframe_insert("value",frame=rf) 
        #center
        keyObj.value = 1
        keyObj.keyframe_insert("value",frame=cf)
        
        
def clearAnimationShapes(meshObj = None):
    """clears all keyframes on shapes
    """
    meshObj.data.shape_keys.animation_data_clear()
    for b in range(1,len(meshObj.data.shape_keys.key_blocks)):
        keyObj = meshObj.data.shape_keys.key_blocks[b]
        keyObj.value = 0
        

#inspired by
#https://blenderartists.org/t/deleting-all-keyframes-in-script/514422/2