blender python
半径1の円周
中心000
半径2の円周
中心000を作る
名付ける
"時間円周 r=1"
半径の長さを使う
円周を トーラスにする
メジャー半径 0.01
トーラス1の円周
(-1,0,0) から(0,1,0)を通過して(1,0,0)を
球体半径 0.03を均等間隔で21個配置する
球体は "torus1 連番”で名付ける
import bpy
import math
# トーラスのパラメータ設定
major_radius = 1.0
minor_radius = 0.01
num_major_segments = 64
num_minor_segments = 64
# トーラスの頂点座標を計算
vertices_torus = []
for i in range(num_major_segments):
theta_major = 2.0 * math.pi * i / num_major_segments
for j in range(num_minor_segments):
theta_minor = 2.0 * math.pi * j / num_minor_segments
x = (major_radius + minor_radius * math.cos(theta_minor)) * math.cos(theta_major)
y = (major_radius + minor_radius * math.cos(theta_minor)) * math.sin(theta_major)
z = minor_radius * math.sin(theta_minor)
vertices_torus.append((x, y, z))
# トーラスのメッシュを作成
mesh_torus = bpy.data.meshes.new(name="Torus1")
mesh_torus.from_pydata(vertices_torus, [], [])
obj_torus = bpy.data.objects.new("Torus1", mesh_torus)
bpy.context.collection.objects.link(obj_torus)
# 球体を配置する
num_spheres = 21
for i in range(num_spheres):
u = i / (num_spheres - 1)
theta = u * math.pi
x = major_radius * math.cos(theta)
y = major_radius * math.sin(theta)
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.03, location=(x, y, 0))
sphere = bpy.context.active_object
sphere.name = f"torus1_{i+1:02}" # 連番を含む名前を設定
トーラス2の円周
(-2,0,0) から(0,2,0)を通過して(2,0,0)を
球体半径 0.03を均等間隔で21個配置する
球体は "torus2 連番”で名付ける
import bpy
import math
# トーラスのパラメータ設定
major_radius = 2.0
minor_radius = 0.01
num_major_segments = 64
num_minor_segments = 64
# トーラスの頂点座標を計算
vertices_torus = []
for i in range(num_major_segments):
theta_major = 2.0 * math.pi * i / num_major_segments
for j in range(num_minor_segments):
theta_minor = 2.0 * math.pi * j / num_minor_segments
x = (major_radius + minor_radius * math.cos(theta_minor)) * math.cos(theta_major)
y = (major_radius + minor_radius * math.cos(theta_minor)) * math.sin(theta_major)
z = minor_radius * math.sin(theta_minor)
vertices_torus.append((x, y, z))
# トーラスのメッシュを作成
mesh_torus = bpy.data.meshes.new(name="Torus2")
mesh_torus.from_pydata(vertices_torus, [], [])
obj_torus = bpy.data.objects.new("Torus2", mesh_torus)
bpy.context.collection.objects.link(obj_torus)
# 球体を配置する
num_spheres = 21
for i in range(num_spheres):
u = i / (num_spheres - 1)
theta = u * math.pi
x = major_radius * math.cos(theta)
y = major_radius * math.sin(theta)
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.03, location=(x, y, 0))
sphere = bpy.context.active_object
sphere.name = f"torus2_{i+1:02}" # 連番を含む名前を設定
円錐を作る
円錐頂点 000
円錐底面 中心 0,0,-1
円錐の向きを逆にする
円錐の高さ中心 Z=ー0.5
import bpy
# 円錐を作成
bpy.ops.mesh.primitive_cone_add(vertices=32, radius1=0, radius2=1, depth=1, location=(0, 0, -0.5))
# 作成したオブジェクトを取得
cone = bpy.context.active_object
# 円錐を逆さにする(高さ方向のスケールを-1に設定)
cone.scale.z = -1.0
# 名前を設定
cone.name = "円錐 r=1"
import bpy
# 円錐を作成
bpy.ops.mesh.primitive_cone_add(vertices=32, radius1=0, radius2=2, depth=2, location=(0, 0, -1))
# 作成したオブジェクトを取得
cone = bpy.context.active_object
# 円錐を逆さにする(高さ方向のスケールを-1に設定)
cone.scale.z = -1.0
# 名前を設定
cone.name = "円錐 r=2"
21個の球体を作る
球体半径 0.02
均等間隔に配置する
(-2,0,-2)から (2,0,-2)
名前は "t=-2 rail 連番”
import bpy
# 配置する球体の数と半径を設定
num_spheres = 21
radius = 0.02
# 配置範囲の設定
start_x = -2
end_x = 2
z_position = -2
# 球体を配置する間隔を計算
interval = (end_x - start_x) / (num_spheres - 1)
# 球体を配置する
for i in range(num_spheres):
x = start_x + i * interval
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(x, 0, z_position))
sphere = bpy.context.active_object
sphere.name = f"t=-2 rail {i+1:02}" # 連番を含む名前を設定
21個の球体を作る
球体半径 0.02
均等間隔に配置する
(-2,0,-1)から (2,0,-1)
名前は "t=-1 rail 連番”
import bpy
# 配置する球体の数と半径を設定
num_spheres = 21
radius = 0.02
# 配置範囲の設定
start_x = -2
end_x = 2
z_position = -1
# 球体を配置する間隔を計算
interval = (end_x - start_x) / (num_spheres - 1)
# 球体を配置する
for i in range(num_spheres):
x = start_x + i * interval
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(x, 0, z_position))
sphere = bpy.context.active_object
sphere.name = f"t=-1 rail {i+1:02}" # 連番を含む名前を設定
21個の球体を作る
球体半径 0.02
均等間隔に配置する
(-2,0,0)から (2,0,0)
名前は "t=0 rail 連番”
# コレクションを作る 重複の場合 作らない
import bpy
# List of collection names
collection_names = [
"21_ r=1",
"21_ r=2",
"均等 Torus",
"線分線路 rail",
"rail t=-2",
"rail t=-1",
"rail t=0",
"途中 制作途中",
"円錐"
]
# Function to create a new collection if it doesn't exist
def create_collection_if_not_exists(name):
if name not in bpy.data.collections:
collection = bpy.data.collections.new(name)
bpy.context.scene.collection.children.link(collection)
# Create collections
for name in collection_names:
create_collection_if_not_exists(name)
基本系 配布 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