[Blender×Python] アニメーションの作り方

Blender

つくるアニメーション

BlenderでPythonを使うのは初めてということでまずは簡単なアニメーションにしようと思います

正弦波(sin)のかたちに沿って移動するボールです

Pythonを使用したアニメーション

ちなみにマテリアルはPythonは使用せずシェーダを手動で組みました

Pythonのコード

import bpy
from math import sin, cos,radians

material_baseball = bpy.data.materials["Baseball"] #作成済みのマテリアル("Baseball")を変数に格納
bpy.ops.mesh.primitive_uv_sphere_add() #シーンにUV_Sphereを追加
bpy.ops.object.shade_smooth() #追加したUV_Sphereをスムーズシェイドに変更
for i in range(0,721,10): #0から10間隔で720までループ
    obj = bpy.context.object #UV_Sphereを変数に格納
    obj.location[2] = 3*sin(radians(i*9)) #objのz座標を指定
    obj.location[0] = 30*radians(i) #objのx座標を指定
    if i/10 % 2 == 1: #奇数回目のループの時の処理
        obj.rotation_euler[1] = 10*radians(i) #objをy軸回り正の方向に回転
    else: #偶数回目のループの時の処理
        obj.rotation_euler[1] = -10*radians(i) #objをy軸回り負の方向に回転
    
    obj.data.materials.append(material_baseball) #変数に格納していたマテリアルをobjに追加
    obj.keyframe_insert(data_path="location",frame = i) #i番目のフレームにobjの位置情報を挿入
    obj.keyframe_insert(data_path="rotation_euler",frame = i) #i番目のフレームにobjの回転角度情報を挿入

これがアニメーションを作るためのPythonコードです

コードの説明

import部

1行目の “import bpy” はBlenderでPythonを使用するために必要な物らしいです

何も考えず書いておきましょう

また、2行目で、後で使用するのでmathモジュールからcos, sin, radians をインポートします(cosは使いませんでしたが)

位置座標・回転座標

9,10行目で使用しているobjの位置座標ですが

  obj.location[0] : x座標

  obj.location[1] : y座標

  obj.location[2] : z座標

に対応しているようです

同様に回転座標も

  obj.rotation_euler[0] : x軸回り

  obj.rotation_euler[1] : y軸回り

  obj.rotation_euler[2] : z軸回り

となっています。

最初試したとき、 “_euler” の部分が無くてエラーを出してしまいました

キーフレームの挿入

17,18行目の

obj.keyframe_insert()でキーフレームを打つことができます

datapath にどの情報をキーフレームとして挿入するかを指定します

そのあとに挿入するフレーム位置を指定します

ここでも 回転のキーフレームを打とうとして datapath の指定で ”_euler”を忘れてエラーを出していました

 _euler忘れがち。

コメント

タイトルとURLをコピーしました