2023年7月14日金曜日

20230715 窓面への投影

 




#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 左端"