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}" # 連番を含む名前を設定
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"
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}" # 連番を含む名前を設定
# コレクションを作る 重複の場合 作らない
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
以下 ChatGPT との対話 修正記録 と メモ・ノート
ああああああああああああああああああああああああああああああああああああああああああああ