見出し画像

【Blender Python】オブジェクトを動かしてアニメーションを作る①

Blender ではアニメーションを作ることもできます。

Python で制御することにより、手作業では面倒な設定も自動化することができます。

今回は簡単なサンプルを作ってみました。

Blender のバージョンは 2.93 LTS です。

1. コード

import numpy as np
import bpy


# 既存要素削除
for item in bpy.data.meshes:
   bpy.data.meshes.remove(item)


# フレームの開始位置と終了位置を指定
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_end = 120


# 立方体を配置
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))
bpy.context.object.name = 'cube1'
cube1 = bpy.data.objects['cube1']


cube1.keyframe_insert(data_path="location", frame=10)
# y軸方向に5動かす
cube1.location.y += 5
cube1.keyframe_insert(data_path="location", frame=30)

cube1.keyframe_insert(data_path="rotation_euler", frame=40)
# z軸方向に90°回転させる
cube1.rotation_euler.z += np.radians(90)
cube1.keyframe_insert(data_path="rotation_euler", frame=60)

cube1.keyframe_insert(data_path="scale", frame=70)
# 1辺を2倍に拡大する
cube1.scale = (2, 2, 2)
cube1.keyframe_insert(data_path="scale", frame=90)

cube1.keyframe_insert(data_path="location", frame=100)
cube1.keyframe_insert(data_path="rotation_euler", frame=100)
cube1.keyframe_insert(data_path="scale", frame=100)
# 初期状態に戻す
cube1.location = (0, 0, 0)
cube1.rotation_euler = (np.radians(0), np.radians(0), np.radians(0))
cube1.scale = (1, 1, 1)

cube1.keyframe_insert(data_path="location", frame=120)
cube1.keyframe_insert(data_path="rotation_euler", frame=120)
cube1.keyframe_insert(data_path="scale", frame=120)

2. 実行結果

Layout 画面を開き、画面下にある Play Animation ボタンを押して下さい。

画像1

このように立方体が動くのが見えるかと思います。

まとめ

Python を使ってアニメーションを作成する方法を紹介しました。

今回くらいのものであれば手作業でやった方が早いかと思いますが、大量のオブジェクトを何らかのルールに従って動かす、といったことをやろうとしたときは Python を使うのが良いかと思います。

この記事が気に入ったらサポートをしてみませんか?