見出し画像

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]


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