import bpy
import math
# 初期設定
sphere_radius = 0.05 # 球体の半径
animation_duration = 20 # 移動アニメーションの時間(秒)
frame_rate = bpy.context.scene.render.fps
clockwise = False # 時計回り: False, 反時計回り: True
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(-1, 0, 0)) # 描画開始位置
sphere = bpy.context.active_object
# ゴール時間を設定
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
x_center = math.cos(angle)
y_center = math.sin(angle)
sphere.location.x = x_center
sphere.location.y = y_center
sphere.keyframe_insert(data_path="location", frame=frame)
# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')
# endを530フレームに設定
bpy.context.scene.frame_end = 530
import bpy
# シーンのフレームレンジを設定
bpy.context.scene.frame_start = 1
bpy.context.scene.frame_end = 530
# 球体を追加
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.05, location=(-1, 0, 0))
sphere = bpy.context.object
# アニメーションキーフレームを設定
sphere.location.x = -1
sphere.keyframe_insert(data_path="location", frame=1)
sphere.location.x = 1
sphere.keyframe_insert(data_path="location", frame=270)
sphere.location.x = -1
sphere.keyframe_insert(data_path="location", frame=530)
#直線移動
import bpy
import math
# 初期設定
sphere_radius = 0.07 # 球体の半径
animation_duration = 20 # アニメーションの時間(秒)
transition_duration = 10 # 移動時間(秒)
frame_rate = bpy.context.scene.render.fps
# 球体1を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(1, 0, 0)) # 描画開始位置
sphere1 = bpy.context.active_object
# 球体2を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(-1, 0, 0)) # 描画開始位置
sphere2 = bpy.context.active_object
# ゴール時間を設定
goal_frame = animation_duration * frame_rate
transition_frames = transition_duration * frame_rate
# アニメーションを設定
for frame in range(1, goal_frame + 1):
bpy.context.scene.frame_set(frame)
if frame <= transition_frames:
# 移動中
t = frame / transition_frames
sphere1.location.x = 1 - 2 * t
sphere2.location.x = -1 + 2 * t
elif frame <= goal_frame - transition_frames:
# 待機
pass
else:
# 戻る
t = (frame - (goal_frame - transition_frames)) / transition_frames
sphere1.location.x = -1 + 2 * t
sphere2.location.x = 1 - 2 * t
sphere1.keyframe_insert(data_path="location", frame=frame)
sphere2.keyframe_insert(data_path="location", frame=frame)
# endを530フレームに設定
bpy.context.scene.frame_end = 530
基本系 配布 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 との対話 修正記録 と メモ・ノート
ああああああああああああああああああああああああああああああああああああああああああああ