2014年2月13日木曜日

Blenderで音楽に合わせてオブジェクトを変化させるスクリプト

Blenderで音楽にあわせてオブジェクトが変化するアニメーションの
作成スクリプト。

http://www.morere.eu/local/cache-code/7006f73d4d11f359e51f8add3d0e82f4.txt

結構簡単なスクリプトでできるんですね。
参考になりそうです。
bpy.ops.graph.sound_bakeってところでmp3のファイルを解析してるんですね。

---------
import bpy
rows = 5
columns = 5
r = 0
c = 0
def spiral(X, Y):
    x = y = 0
    dx = 0
    dy = -1
    for i in range(max(X, Y)**2):
        if (-X/2 < x <= X/2) and (-Y/2 < y <= Y/2):
            print(x,y)
            bpy.ops.mesh.primitive_cube_add(location = (x, y, 0))
            bpy.context.scene.cursor_location = bpy.context.active_object.location
            bpy.context.scene.cursor_location.z -= 1
            bpy.ops.object.origin_set(type='ORIGIN_CURSOR')    
            ####
            bpy.context.active_object.scale.x = 0.5
            bpy.context.active_object.scale.y = 0.5
            bpy.context.active_object.scale.z = 3.5
            bpy.ops.object.transform_apply(scale=True)
    
            bpy.ops.anim.keyframe_insert_menu(type='Scaling')
            bpy.context.active_object.animation_data.action.fcurves[0].lock = True
            bpy.context.active_object.animation_data.action.fcurves[1].lock = True
            bpy.context.area.type = 'GRAPH_EDITOR'
    
            step = 19000/(rows*columns)
            bpy.ops.graph.sound_bake(filepath="/home/yann/Documents/articles_lpmag/article_blender_soundvisualizer/blend/Grace_Valhalla_-_99__.mp3", low=i*step, high=i*step + step)
    
            bpy.context.active_object.animation_data.action.fcurves[2].lock = True
        
            if x == y or (x < 0 and x == -y) or (x > 0 and x == 1-y):
                dx, dy = -dy, dx
        
            x, y = x+dx, y+dy
        
spiral(rows, columns)
bpy.context.area.type = 'TEXT_EDITOR'
----------

0 件のコメント:

コメントを投稿