#3つの円柱 線路レール
# 線路レール円柱
import bpy
import math
# 円柱のパラメータ
radius = 0.005
height = 2.0
# 円柱1を作成して90度回転させる
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height, vertices=32, align='WORLD')
cylinder1 = bpy.context.object
cylinder1.rotation_euler[1] = math.radians(90)
cylinder1.name = "円柱 Y = 0"
# 円柱2を作成してY軸に-1移動させ、90度回転する
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height, vertices=32, align='WORLD')
cylinder2 = bpy.context.object
cylinder2.location[1] = -1.0
cylinder2.rotation_euler[1] = math.radians(90)
cylinder2.name = "円柱 Y = -1"
# 円柱3を作成してY軸に+1移動させ、90度回転する
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height, vertices=32, align='WORLD')
cylinder3 = bpy.context.object
cylinder3.location[1] = 1.0
cylinder3.rotation_euler[1] = math.radians(90)
cylinder3.name = "円柱 Y = +1"
#トーラス 円周
import bpy
import math
# トーラスのパラメータ
major_radius = 1.0
minor_radius = 0.005
# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(
align='WORLD',
location=(0, 0, 0),
major_radius=major_radius,
minor_radius=minor_radius,
major_segments=48,
minor_segments=12
)
# 作成したオブジェクトを選択する
torus = bpy.context.object
torus.select_set(True)
bpy.context.view_layer.objects.active = torus
# Y軸方向に 0単位移動する
bpy.ops.transform.translate(value=(0, 0, 0))
# オブジェクトの選択を解除する
bpy.ops.object.select_all(action='DESELECT')
# 視線 レール右端
import bpy
import mathutils
# パラメータの設定
num_spheres = 21
sphere_radius = 0.01
start_pos = mathutils.Vector((0, 0, 0))
# end_pos = mathutils.Vector((2, 2, 0))
end_pos = mathutils.Vector((-2, 2, 0))
# 球体を作成する関数
def create_sphere(position):
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=position)
# 球体の配置間隔を計算する
spacing = (end_pos - start_pos) / (num_spheres - 1)
# 球体を作成して配置する
for i in range(num_spheres):
position = start_pos + spacing * i
create_sphere(position)
#窓面 線路レール イメージ長さ
import bpy
import mathutils
import math
# パラメータの設定
start_pos = mathutils.Vector((-1 / math.sqrt(2), 1 / math.sqrt(2), 0))
end_pos = mathutils.Vector((1 / math.sqrt(2), 1 / math.sqrt(2), 0))
cylinder_radius = 0.005
# 線分を円柱として作成する関数
def create_cylinder(start, end, radius):
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=(end - start).length, location=(start + end) / 2)
cylinder = bpy.context.object
direction = end - start
cylinder.rotation_euler = direction.to_track_quat('Z', 'Y').to_euler()
return cylinder
# 線分を円柱として作成
cylinder = create_cylinder(start_pos, end_pos, cylinder_radius)
コレクションを作る
”線路レール 円柱"
"円周 トーラス"
"視線 rail 右端"
"視線 rail 左端"