2023年10月9日月曜日

20231010b 地球自転の 東京 京都 博多




blender python
コレクションだけを作る

Torus radius 1.0
Torus radius 2.0
Ball radius 0.07
Ball radius 0.03
Ball long radius 0.05



import bpy

# コレクション名のリスト
collection_names = ["Torus radius 1.0", "Torus radius 2.0", "Ball radius 0.07", "Ball radius 0.03"]

# コレクションを作成
for name in collection_names:
    new_collection = bpy.data.collections.new(name)
    bpy.context.scene.collection.children.link(new_collection)








半径0.3の球体
中心 10,0,0
中心 10,10,0

名前は t=0太陽 t=1太陽 

透明度 20%
alpha blend


import bpy

# 球体1の中心座標
center1 = (10, 0, 0)

# 球体2の中心座標
center2 = (10, 10, 0)

# 球体の半径
radius = 0.3

# 透明度
alpha = 0.2

# 球体1を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=center1)

# 作成した球体1のオブジェクトを取得
sphere1 = bpy.context.active_object

# オブジェクトの名前を設定
sphere1.name = "t=0太陽"

# マテリアルを作成または取得
if sphere1.data.materials:
    material1 = sphere1.data.materials[0]
else:
    material1 = bpy.data.materials.new(name="太陽マテリアル1")
    sphere1.data.materials.append(material1)

# 透明度を設定
material1.use_nodes = True
nodes1 = material1.node_tree.nodes
shader1 = nodes1.get("Principled BSDF")
shader1.inputs["Alpha"].default_value = alpha  # 透明度を設定
material1.blend_method = 'BLEND'  # Alpha Blendモードに設定

# 球体2を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=center2)

# 作成した球体2のオブジェクトを取得
sphere2 = bpy.context.active_object

# オブジェクトの名前を設定
sphere2.name = "t=1太陽"

# マテリアルを作成または取得
if sphere2.data.materials:
    material2 = sphere2.data.materials[0]
else:
    material2 = bpy.data.materials.new(name="太陽マテリアル2")
    sphere2.data.materials.append(material2)

# 透明度を設定
material2.use_nodes = True
nodes2 = material2.node_tree.nodes
shader2 = nodes2.get("Principled BSDF")
shader2.inputs["Alpha"].default_value = alpha  # 透明度を設定
material2.blend_method = 'BLEND'  # Alpha Blendモードに設定








light を sun で 
位置 10,0,0        光線の方向を 10,10,0 
位置 10,10,0      光線の方向を 10,10,0 


import bpy

# 太陽光源1を作成
bpy.ops.object.light_add(type='SUN', location=(10, 0, 0))

# 作成した太陽光源1のオブジェクトを取得
sun_light1 = bpy.context.active_object

# 太陽光源1の名前を設定
sun_light1.name = "太陽光源1"

# 光線の方向を設定
sun_light1.rotation_euler = (0, 0, 0)  # 光線の方向を(10, 10, 0)に向ける

# 太陽光源2を作成
bpy.ops.object.light_add(type='SUN', location=(10, 10, 0))

# 作成した太陽光源2のオブジェクトを取得
sun_light2 = bpy.context.active_object

# 太陽光源2の名前を設定
sun_light2.name = "太陽光源2"

# 光線の方向を設定
sun_light2.rotation_euler = (0, 0, 0)  # 光線の方向を(10, 10, 0)に向ける





2つ円柱を作る 半径0.1
000で 長さ2で作って x軸に 90度回転
移動させる 1,0,0 名前は t=0線路レール
移動させる 1,10,0 名前は t=1線路レール


import bpy

import math


# 円柱の半径

radius = 0.1


# 円柱の長さ

length = 2.0


# ステップ数(t=0とt=1)

steps = [(1, 0, 0, "t=0線路レール"), (1, 10, 0, "t=1線路レール")]


for step in steps:

    # 円柱を作成

    bpy.ops.mesh.primitive_cylinder_add(vertices=32, radius=radius, depth=length, location=(0, 0, 0))


    # 作成した円柱のオブジェクトを取得

    cylinder = bpy.context.active_object


    # X軸に90度回転

    cylinder.rotation_euler.x += math.radians(90)


    # 移動させる

    cylinder.location = (step[0], step[1], step[2])


    # オブジェクトの名前を設定

    cylinder.name = step[3]





半径1の球体
中心000
中心0,10,0
名前は t=0地球   t=1 地球





 

基本系 配布 001 単位円 torus と xyz軸 円柱

https://drive.google.com/file/d/1adh0pC0n5MUfaPnsQcab8CnTvHu_JqLg/view?usp=drive_link

 

基本系 配布 002 単位2長さ balls

https://drive.google.com/file/d/1vyg5oFWmw_TK8nwp5TmVSfLH94I6rTaY/view?usp=drive_link

 

基本系 配布 003 単位2長さ balls 光時計セット 

https://drive.google.com/file/d/1u2Rn_nVBcewe39Vokua9C5n25cdivyyL/view?usp=drive_link

 

blender 基本系 配布 カタログ 2023 - zionad_mainのブログ https://mokuji000zionad.hatenablog.com/entry/2023/07/31/095208 





20231010a 光行差の望遠鏡







コレクションだけを作る

Torus radius 1.0
Torus radius 2.0
Ball radius 0.07
Ball radius 0.03
Ball long radius 0.05

import bpy

# コレクション名のリスト
collection_names = ["Torus radius 1.0", "Torus radius 2.0", "Ball radius 0.07", "Ball radius 0.03"]

# コレクションを作成
for name in collection_names:
    new_collection = bpy.data.collections.new(name)
    bpy.context.scene.collection.children.link(new_collection)










blender pyhton


21個の球体を 等間隔に作る
球体半径 0.01
(-1,-2,0)から (1,2,0)


import bpy
import math


# 球体の数と半径を指定
num_spheres = 21
radius = 0.07

# 球体を作成する位置の範囲を指定
start_point = (-1, -2, 0)
end_point = (1, 2, 0)

# 21個の球体を作成
for i in range(num_spheres):
    # 位置を計算
    t = i / (num_spheres - 1)  # 0から1までの範囲で分割
    x = start_point[0] + t * (end_point[0] - start_point[0])
    y = start_point[1] + t * (end_point[1] - start_point[1])
    z = start_point[2] + t * (end_point[2] - start_point[2])

    # 球体を作成
    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(x, y, z))
    sphere = bpy.context.object

    # オブジェクト名に連番とXYZの位置情報を組み合わせて設定
    sphere.name = f"球体{i+1}_X{x:.2f}_Y{y:.2f}_Z{z:.2f}"






トーラスを21個作る

メジャー半径 1.0
マイナー半径 0.05


原点000で トーラスを作る
x軸で90度回転

トーラス中心を等間隔で
(-1,-2,0)から (1,2,0)

オブジェクト名に トーラスのメジャー半径を加える


import bpy
import math

# トーラスのパラメータ
major_radius = 2.0
minor_radius = 0.05
num_toruses = 21

# トーラスの中心を配置する範囲
start_position = (-1, -2, 0)
end_position = (1, 2, 0)

# トーラスの間隔を計算
spacing_x = (end_position[0] - start_position[0]) / (num_toruses - 1)
spacing_y = (end_position[1] - start_position[1]) / (num_toruses - 1)

# 21個のトーラスを作成して配置
for i in range(num_toruses):
    x_position = start_position[0] + i * spacing_x
    y_position = start_position[1] + i * spacing_y
    torus = bpy.ops.mesh.primitive_torus_add(
        align='WORLD',
        location=(x_position, y_position, start_position[2]),
        rotation=(math.radians(90), 0, 0),
        major_radius=major_radius,
        minor_radius=minor_radius,
        major_segments=48,
        minor_segments=12
    )
    
    # トーラスのオブジェクト名にメジャー半径を加える
    bpy.context.object.name = f"トーラス_{major_radius}"







blender pyhton


21個の球体を 等間隔に作る
球体半径 0.01
(-1,-2,0)から (1,2,0)


import bpy
import math


# 球体の数と半径を指定
num_spheres = 41
radius = 0.05

# 球体を作成する位置の範囲を指定
start_point = (-2, -4, 0)
end_point = (2, 4, 0)

# 41個の球体を作成
for i in range(num_spheres):
    # 位置を計算
    t = i / (num_spheres - 1)  # 0から1までの範囲で分割
    x = start_point[0] + t * (end_point[0] - start_point[0])
    y = start_point[1] + t * (end_point[1] - start_point[1])
    z = start_point[2] + t * (end_point[2] - start_point[2])

    # 球体を作成
    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(x, y, z))
    sphere = bpy.context.object

    # オブジェクト名に連番とXYZの位置情報を組み合わせて設定
    sphere.name = f"球体{i+1}_X{x:.2f}_Y{y:.2f}_Z{z:.2f}"