import bpy
import math
# 初期設定
torus_major_radius = 1.0 # トーラスのメジャー半径
torus_minor_radius = 0.03 # トーラスのマイナー半径
sphere_radius = 0.07 # 球体の半径
animation_duration = 20 # アニメーションの時間(秒)
frame_rate = bpy.context.scene.render.fps
clockwise = True # 時計回り: False, 反時計回り: True
# トーラスを作成
bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0)) # 描画開始位置
torus1 = bpy.context.active_object
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(-1, 0, 0)) # 描画開始位置
sphere1 = bpy.context.active_object
# 球体をトーラスにリンク設定
sphere1.parent = torus1
# ゴール時間を設定
goal_frame = animation_duration * frame_rate
# アニメーションを設定
for frame in range(1, goal_frame + 1):
bpy.context.scene.frame_set(frame)
# トーラスを回転させる
angle = 2 * math.pi * (frame / (animation_duration * frame_rate))
if clockwise:
angle = -angle
torus1.rotation_euler.z = angle
torus1.keyframe_insert(data_path="rotation_euler", frame=frame)
# 球体もアニメーション
sphere1.rotation_euler.z = angle
sphere1.keyframe_insert(data_path="rotation_euler", frame=frame)
# 2つ目のトーラスを作成
bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0)) # 描画開始位置
torus2 = bpy.context.active_object
# 2つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(0, 1, 0)) # 描画開始位置
sphere2 = bpy.context.active_object
# 2つ目の球体をトーラスにリンク設定
sphere2.parent = torus2
# アニメーションを設定
for frame in range(1, goal_frame + 1):
bpy.context.scene.frame_set(frame)
# 2つ目のトーラスを回転させる
angle = 2 * math.pi * (frame / (animation_duration * frame_rate))
if clockwise:
angle = -angle
torus2.rotation_euler.z = angle
torus2.keyframe_insert(data_path="rotation_euler", frame=frame)
# 2つ目の球体もアニメーション
sphere2.rotation_euler.z = angle
sphere2.keyframe_insert(data_path="rotation_euler", frame=frame)
# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')
# endを530フレームに設定
bpy.context.scene.frame_end = 530
2つの球体の間に 等間隔で 9つの球体を
球体半径 0.04 で 作って
ただし 9つの真ん中の球体だけ 0.06
1番トーラスの2つの球体の間
2番トーラスの2つの球体の間に 作って
トーラスの回転に連動させる
以下 ChatGPT との対話 修正記録 と メモ・ノート
ああああああああああああああああああああああああああああああああああああああああああああ