import bpy
import math
# 長方形のサイズ
width = 2.0
height = 1.0
# 長方形の中心座標
center = (0.0, 0.0, 0.0)
# 球体の半径と個数
sphere_radius = 0.02
sphere_count = 80
# コレクションの作成と名前付け
collection_names = ["t=0_train", "t=-1_train", "t=+1_train"]
for collection_name in collection_names:
if collection_name not in bpy.data.collections:
collection = bpy.data.collections.new(collection_name)
bpy.context.scene.collection.children.link(collection)
# 球体を配置する関数
def create_spheres(collection_name, z_position):
collection = bpy.data.collections[collection_name]
# 球体の作成と配置
for i in range(sphere_count):
angle = 2 * math.pi * i / sphere_count
x = center[0] + (width/2 + sphere_radius) * math.cos(angle)
y = center[1] + (height/2 + sphere_radius) * math.sin(angle)
z = z_position
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(x, y, z))
# 最後に作成された球体オブジェクトを選択状態にする
obj = bpy.context.object
obj.name = f"t{z_position}_Sphere_{i+1}"
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
# 不要なリンクを削除
bpy.context.collection.objects.unlink(obj)
# 球体を対応するコレクションに追加
collection.objects.link(obj)
# 球体を配置する関数を呼び出し
create_spheres("t=0_train", 0.0)
create_spheres("t=-1_train", -1.0)
create_spheres("t=+1_train", 1.0)
import bpy
import math
# 長方形のサイズ
width = 2.0
height = 1.0
# 長方形の中心座標
center = (0.0, 0.0, 0.0)
# 回転角度(ラジアン)
rotation_angle = math.radians(90)
# 回転するオブジェクトを選択
obj = bpy.context.object
# 頂点座標の計算
vertices = [
(-width/2, -height/2, center[2]),
(-width/2, height/2, center[2]),
(width/2, height/2, center[2]),
(width/2, -height/2, center[2])
]
# 頂点インデックスの定義
edges = [(0, 1), (1, 2), (2, 3), (3, 0)]
# オブジェクトの作成
mesh = bpy.data.meshes.new("Rectangle")
obj = bpy.data.objects.new("Rectangle_Object", mesh)
# オブジェクトをシーンに追加
scene = bpy.context.scene
scene.collection.objects.link(obj)
# メッシュデータの設定
mesh.from_pydata(vertices, edges, [])
# メッシュの更新
mesh.update()
# 回転軸を設定(x軸)
rotation_axis = 'X'
# オブジェクトの回転を設定
obj.rotation_euler.rotate_axis(rotation_axis, rotation_angle)
blender python で 作る
長方形を作る
長さ 2 x1
xy平面に 作る
長方形の角が
(-1,0,0)
(+1,+1,0) になるように作る
長方形に 厚みを作る
厚さ 0.02
厚みの中心が z=0 する
import bpy
import bmesh
# 長方形の頂点座標を定義
vertices = [
(-1, 0, 0),
(1, 0, 0),
(1, 1, 0),
(-1, 1, 0)
]
# 頂点をメッシュに追加
mesh = bpy.data.meshes.new("Rectangle")
bm = bmesh.new()
for v in vertices:
bm.verts.new(v)
# メッシュを作成し、オブジェクトに割り当て
bm.faces.new(bm.verts)
bm.to_mesh(mesh)
bm.free()
obj = bpy.data.objects.new("Rectangle_Object", mesh)
scene = bpy.context.scene
scene.collection.objects.link(obj)
# 厚みを持たせるためのモディファイアを追加
thickness = 0.02
modifier = obj.modifiers.new("Solidify", 'SOLIDIFY')
modifier.thickness = thickness
modifier.use_even_offset = True
# 厚みの中心を設定
obj.location.z = -thickness / 2
# Blenderビューを更新してオブジェクトを表示
bpy.context.view_layer.update()
名前を付ける
t=0 _train
t=1 _train
のように 連番にする
import bpy
import bmesh
# 長方形の頂点座標を定義
vertices = [
(-1, 0, 0),
(1, 0, 0),
(1, 1, 0),
(-1, 1, 0)
]
# 頂点をメッシュに追加
mesh = bpy.data.meshes.new("Rectangle")
bm = bmesh.new()
for v in vertices:
bm.verts.new(v)
# メッシュを作成し、オブジェクトに割り当て
bm.faces.new(bm.verts)
bm.to_mesh(mesh)
bm.free()
# オブジェクトを作成し、名前を設定
obj = bpy.data.objects.new("Rectangle_Object", mesh)
# 名前に連番を追加
scene = bpy.context.scene
train_counter = len([obj for obj in scene.collection.objects if obj.name.startswith("t=")])
obj.name = f"t={train_counter}_train"
scene.collection.objects.link(obj)
# 厚みを持たせるためのモディファイアを追加
thickness = 0.02
modifier = obj.modifiers.new("Solidify", 'SOLIDIFY')
modifier.thickness = thickness
modifier.use_even_offset = True
# 厚みの中心を設定
obj.location.z = -thickness / 2
# Blenderビューを更新してオブジェクトを表示
bpy.context.view_layer.update()
複製を作る
z=1と
Z=-1 に
import bpy
# 複製元のオブジェクト名を指定
source_obj_name = "t=0_train"
# 複製元のオブジェクトを取得
source_obj = bpy.data.objects.get(source_obj_name)
if source_obj is not None:
# 複製元のオブジェクトをz=1の位置に複製
new_obj_1 = source_obj.copy()
new_obj_1.location.z = 1
new_obj_1.name = f"{source_obj_name}_copy_z1"
scene = bpy.context.scene
scene.collection.objects.link(new_obj_1)
# 複製元のオブジェクトをz=-1の位置に複製
new_obj_2 = source_obj.copy()
new_obj_2.location.z = -1
new_obj_2.name = f"{source_obj_name}_copy_z-1"
scene.collection.objects.link(new_obj_2)
# Blenderビューを更新してオブジェクトを表示
bpy.context.view_layer.update()
blender python で 作る
長方形を作る
長さ 2 x1
xz平面に 作る
長方形の角が
(-1,0,0)
(+1,0,+1) になるように作る
長方形に 厚みを作る
厚さ 0.02
厚さの中心が y=0 にする