2023年6月3日土曜日

20230604 sun 球体と 3つの線路

 







blender python で スクリプト全体を コードを「code block」の形式で示す


半径1の球体

中心 0,0,0


半径√2の球体

中心 0,0,0


半径√3の球体

中心 0,0,0



大きい球体から


透明 青

透明 ミドリ

透明 赤 


オブヘクト名を 付ける

sphere √3B

sphere √2G

sphere 1 R


RGBA で 色を設定する


マテリアル プロパティ

alpha 15%

blend mode を alpha blend 選択 



コレクション 名を 球体√  を作る

オブジェクトを入れるが リンクを作らない


オブジェクトをリンクなしで

コレクションに移動




マテリアル プロパティ

alpha 15%b 変更できない



import bpy


# Create a sphere with radius 1 and center at (0, 0, 0)

bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))

sphere1 = bpy.context.object

sphere1.name = "sphere 1 R"


# Create a sphere with radius sqrt(2) and center at (0, 0, 0)

bpy.ops.mesh.primitive_uv_sphere_add(radius=2**0.5, location=(0, 0, 0))

sphere2 = bpy.context.object

sphere2.name = "sphere √2G"


# Create a sphere with radius sqrt(3) and center at (0, 0, 0)

bpy.ops.mesh.primitive_uv_sphere_add(radius=3**0.5, location=(0, 0, 0))

sphere3 = bpy.context.object

sphere3.name = "sphere √3B"


# Assign materials to the spheres

material1 = bpy.data.materials.new(name="Sphere1 Material")

material1.use_nodes = True

material1.blend_method = 'BLEND'

material1.node_tree.nodes["Principled BSDF"].inputs[0].default_value = (0.0, 0.0, 1.0, 0.15)  # Transparent blue with alpha blend


material2 = bpy.data.materials.new(name="Sphere2 Material")

material2.use_nodes = True

material2.blend_method = 'BLEND'

material2.node_tree.nodes["Principled BSDF"].inputs[0].default_value = (0.0, 1.0, 0.0, 0.15)  # Transparent green with alpha blend


material3 = bpy.data.materials.new(name="Sphere3 Material")

material3.use_nodes = True

material3.blend_method = 'BLEND'

material3.node_tree.nodes["Principled BSDF"].inputs[0].default_value = (1.0, 0.0, 0.0, 0.15)  # Transparent red with alpha blend


sphere1.data.materials.append(material3)

sphere2.data.materials.append(material2)

sphere3.data.materials.append(material1)


# Create a collection named "SphereRoot" without linking the objects

collection = bpy.data.collections.new(name="SphereRoot")

bpy.context.scene.collection.children.link(collection)


# Add the spheres to the collection without creating links

collection.objects.link(sphere3, False)

collection.objects.link(sphere2, False)

collection.objects.link(sphere1, False)


# Create a collection named "球体√" and move the objects into it without linking

sub_collection = bpy.data.collections.new(name="球体√")

collection.children.link(sub_collection)


# Unlink the objects from the previous collection and link them to the new collection

collection.objects.unlink(sphere1)

collection.objects.unlink(sphere2)

collection.objects.unlink(sphere3)

sub_collection.objects.link(sphere3)

sub_collection.objects.link(sphere2)

sub_collection.objects.link(sphere1)








 


blender python で スクリプト全体を コードを「code block」の形式で示す


円柱を作る


円柱上面 中心

-10,0,0


円柱中心 0,0,0

円柱長さ 20


y軸を回転軸に 90度回転



さらに 複製を2つを 追加する

複製の中心は 0,1,0と 0,2,0


3つの円柱を 作って 中心は 0,0,0 0,1,0 0,2,0

y軸を回転軸に 90度回転



import bpy

import math


# Create collection for the cylinders

collection_name = "線路レール"

collection = bpy.data.collections.get(collection_name)


if collection is None:

    collection = bpy.data.collections.new(collection_name)


# Link the collection to the scene

if collection.name not in bpy.context.scene.collection.children:

    bpy.context.scene.collection.children.link(collection)


# Create cylinder 1

bpy.ops.mesh.primitive_cylinder_add(

    radius=0.02,

    depth=20,

    location=(0, 0, 0)

)

cylinder1 = bpy.context.object

cylinder1.rotation_euler[1] += math.radians(90)


# Create cylinder 2

bpy.ops.mesh.primitive_cylinder_add(

    radius=0.02,

    depth=20,

    location=(0, 1, 0)

)

cylinder2 = bpy.context.object

cylinder2.rotation_euler[1] += math.radians(90)


# Create cylinder 3

bpy.ops.mesh.primitive_cylinder_add(

    radius=0.02,

    depth=20,

    location=(0, 2, 0)

)

cylinder3 = bpy.context.object

cylinder3.rotation_euler[1] += math.radians(90)









blender python で スクリプト全体を コードを「code block」の形式で示す


コレクション名 トーラスを作る


トーラスを3つ作る

中心は 0,0,0


メジャー半径大きさは

√3

√2

√1


マイナー半径は どれも 0.01



import bpy

import math


# Create collection for the tori

collection_name = "トーラス"

collection = bpy.data.collections.get(collection_name)


if collection is None:

    collection = bpy.data.collections.new(collection_name)


# Link the collection to the scene

if collection.name not in bpy.context.scene.collection.children:

    bpy.context.scene.collection.children.link(collection)


# Create torus 1

bpy.ops.mesh.primitive_torus_add(

    align='WORLD',

    major_radius=math.sqrt(3),

    minor_radius=0.01,

    location=(0, 0, 0)

)

torus1 = bpy.context.object



# Create torus 2

bpy.ops.mesh.primitive_torus_add(

    align='WORLD',

    major_radius=math.sqrt(2),

    minor_radius=0.01,

    location=(0, 0, 0)

)

torus2 = bpy.context.object



# Create torus 3

bpy.ops.mesh.primitive_torus_add(

    align='WORLD',

    major_radius=math.sqrt(1),

    minor_radius=0.01,

    location=(0, 0, 0)

)

torus3 = bpy.context.object