😘

Blenderでクルクルしてみる

2020/09/22に公開

はじめに

blenderにどっぷりつかって、アニメーションもそこそこ作り、次に大量のオブジェクトに規則正しい動きをさせようとしてAnimation Nodesさわったら、これはコードでやったほうが性に合ってるっぽいと感じたので、pythonで簡単なアニメーションを作成してみました。

動画のトランジットなんかで使えそうなやつです。

コードは以下のようになります。
縦横にcubeを5x5並べて、原点から離れている分、遅く回転するようにキーフレームを打ってます。

import bpy
import math

collection = bpy.data.collections.new('panel')
bpy.context.scene.collection.children.link(collection)

offx = 1
offy = 1

for i in range(5):
    for j in range(5):
        bpy.ops.mesh.primitive_cube_add(size=1, location=(i + offx * i, j + offy * j, 0))
        bpy.ops.transform.resize(value=(1, 1, 0.2))
        collection.objects.link(bpy.context.object)
    
for o in collection.objects:
    d = math.ceil(math.hypot(o.location[0], o.location[1]))
    o.keyframe_insert(data_path="rotation_euler", frame= d * 5)
    o.rotation_euler.y = math.radians(360.0)
    o.keyframe_insert(data_path="rotation_euler", frame= d * 5 + 20)

おわりに

pythonで操作できるようになって、自分の中では一つレベルが上がった気がします。
情報は調べればなんとかなりそうだし、自由度が高そうなので、僕はコードでアニメーションを操作していこうと思います。

Discussion