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個目)
可愛そうだけど特にコメントはなし