#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 左端"
blender python で
円柱を描く
円柱半径 0.05
円柱中心軸が -1,0,0から +1,0,0
円柱の両端 その中心が x=-1と X=+1 にしたのに違うぞ
「円柱の両端」が 円になってる
その「円中心」位置が
-1,0,0と
+1,0,0
円柱を作る
長さ2
半径 0.05
回転軸を Y軸にして 90度回転させる
import bpy
import math
# 円柱のパラメータ
radius = 0.05
height = 2.0
# 円柱を作成する
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height)
# 作成したオブジェクトを選択する
cylinder = bpy.context.object
cylinder.select_set(True)
bpy.context.view_layer.objects.active = cylinder
# Y軸を中心に90度回転する
bpy.ops.transform.rotate(value=math.radians(90), orient_axis='Y')
円柱を作る
長さ2
半径 0.05
回転軸を Y軸にして 90度回転させる
円柱を y軸に +1移動させる
import bpy
import math
# 円柱のパラメータ
radius = 0.05
height = 2.0
# 円柱を作成して移動させない
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height)
cylinder1 = bpy.context.object
cylinder1.name = "Cylinder1"
# 円柱を作成してY軸に-1移動させる
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height)
cylinder2 = bpy.context.object
cylinder2.location[1] -= 1.0
cylinder2.name = "Cylinder2"
# 円柱を作成してY軸に+1移動させる
bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=height)
cylinder3 = bpy.context.object
cylinder3.location[1] += 1.0
cylinder3.name = "Cylinder3"
円柱の複製を作る
円柱をy軸方向に +1移動させる
円柱中心位置
0,0,-1
0,0,+1
視線作成
blender python
コレクションを作る
" 視線 線路右端"
球体を21個作る
球体半径 0.01
均等間隔に配置する
0,0,0から 2,2,0
import bpy
# Create a new collection
collection = bpy.data.collections.new("視線 レール右端")
bpy.context.scene.collection.children.link(collection)
import bpy
# Create 21 spheres with a radius of 0.002 and evenly spaced them
for i in range(21):
x = i * 0.1
y = i * 0.1
z = 0
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.002, location=(x, y, z))
obj = bpy.context.active_object
objects.append(obj)
collection.objects.link(obj)
# Select the collection
bpy.context.view_layer.objects.active = collection.objects[0]
collection.objects[0].select_set(True)
bpy.context.view_layer.update()
# Set the 3D cursor location
bpy.context.scene.cursor.location = (0, 0, 0)
# Align the selected objects to the 3D cursor
bpy.ops.object.align(align_mode='OPT_3', relative_to='OPT_4', align_axis={'X'})
import bpy
import math
# 球体のパラメータ
radius = 0.005
count = 21
distance = 2 / (count - 1)
# 球体の作成と配置
for i in range(count):
x = i * distance
for j in range(count):
y = j * distance
z = 0
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(x, y, z))
sphere = bpy.context.object
sphere.name = f"球体{i}-{j}"
円周
中心 000
半径 1 の
x^2+y=1の
(-1/√2, 1/√2、0)
(1/√2, 1/√2、0)
の線分を 円柱にする
半径 0.005
aaaaaa