見出し画像

2022/03/23(水)⌘PythonでBlender-4(アニメーション)

ネタが無くなってきたので小出しに

⌘PythonでBlender-4(アニメーション)

前回で作成した特定のオブジェクトを動かすことに

import bpy
import math
import random
import numpy as np

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

N = 12
RR1 = 10.0
RR2 = 2.0
for i in range(0, N):
    rad = 2 * math.pi * i /N  # 角度計算2π i /n
    xx = RR1 * math.cos(rad) # x座標計算 半径*cosθ
    yy = RR1 * math.sin(rad) # y座標計算 半径*sinθ
    # 球体作成
    bpy.ops.mesh.primitive_ico_sphere_add(location=(xx, yy, 0),radius= RR2, subdivisions = 5 )
    oblect_name = 'my_sphere1'+str(i)
    bpy.context.object.name = oblect_name

    mat_color = bpy.data.materials.new('mat_color')
    r = random.random()
    g = random.random()
    b = random.random()
    mat_color.diffuse_color = (r, g, b, 1.0)

    my_sphere = bpy.data.objects[oblect_name]
    my_sphere.data.materials.append(mat_color)

# カレント?のオブジェクトを非選択にする?
obj_name = bpy.context.object.name
object = bpy.data.objects[obj_name]
object.select_set(False)

# "my_sphere17"を処理対象にする
object = bpy.data.objects["my_sphere17"]
object.select_set(True)

# オブジェクトモードに切り替え
bpy.ops.object.mode_set(mode='OBJECT')
# 図形のスケール(Z方向に2倍)
bpy.ops.transform.resize(value=(1,1,2))
# 図形の回転(X軸周りに30°回転)
bpy.ops.transform.rotate(value=math.pi/6 ,orient_axis='X')
# 図形の移動(Z軸方向に4m移動)
bpy.ops.transform.translate(value=(0,0,4))

my_sphere17 = bpy.data.objects['my_sphere17']


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

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

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

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

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

以下が実行結果です。

締めにならない締め

レンダリング時のカメラ操作がまだ、理解できないです。

今回参照させていただいたサイトです。

⌘今日の電球ねこ

ひょうねこ(14個目)

可愛そうだけど特にコメントはなし

いいなと思ったら応援しよう!