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