2022/03/22(火) ⌘PythonでBlender-3(個々のオブジェクトの操作)
ネタが無くなってきたので小出しに
⌘PythonでBlender-3(個々のオブジェクトの操作)
前の回でオブジェクトを作ることはできたが、特定のオブジェクトの大きさ等を変える方法と追加しました。
import bpy
import math
import random
# 既存要素削除
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)
print(bpy.context.object.name)
# オブジェクトモードに切り替え
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))
追加したのは「# カレント?のオブジェクトを非選択にする」以降です。
非選択にしないと(object.select_set(False))オブジェクト”my_sphere17”だけに作用させたい処理がカレント?オブジェクトにも影響してしまうからです。
以下が実行結果です。
締めにならない締め
レンダリング時のカメラ操作がまだ、理解できないです。
今回参照させていただいたサイトです。
⌘今日の電球ねこ
レプラねこ(7個目)
2日続けて同じねこ
[2022/03/29 10:17:37]