blender pytohn
球体11個を作る
半径0.2
xyz=-1,0,-1 から
xyz=-1,0,1 等間隔に
import bpy
# 初期設定
radius = 0.2
num_spheres = 11
start_position = (-1, 0, -1)
end_position = (-1, 0, 1)
# 等間隔に配置するためのステップ計算
step = (
(end_position[2] - start_position[2]) / (num_spheres - 1)
)
# 球体を作成して配置
for i in range(num_spheres):
z = start_position[2] + step * i
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(start_position[0], start_position[1], z))
これを
10秒間で
x軸+1まで平行で動かすアニメ
球体1つを動かす
import bpy
# 初期設定
radius = 0.2
start_position = (-1, 0, 0)
end_position = (1, 0, 0)
animation_duration = 10 # 移動アニメーションの時間(秒)
stop_duration = 3 # 停止アニメーションの時間(秒)
repeat_count = 3 # アニメーションの繰り返し回数
# フレーム数を設定
bpy.context.scene.frame_end = 350
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=start_position)
sphere = bpy.context.active_object
for repeat in range(repeat_count):
# アニメーションを設定
for frame in range(1, (animation_duration * bpy.context.scene.render.fps) + 1):
bpy.context.scene.frame_set(frame)
x_offset = frame * (2.0 / (animation_duration * bpy.context.scene.render.fps))
sphere.location.x = start_position[0] + x_offset
sphere.keyframe_insert(data_path="location", frame=frame)
# アニメーションが完了した後に停止
stop_frame = (animation_duration * bpy.context.scene.render.fps) + 1
bpy.context.scene.frame_set(stop_frame)
sphere.location.x = end_position[0]
sphere.keyframe_insert(data_path="location", frame=stop_frame)
# 停止キーフレームを追加
stop_end_frame = stop_frame + stop_duration * bpy.context.scene.render.fps
bpy.context.scene.frame_set(stop_frame)
sphere.keyframe_insert(data_path="location", frame=stop_frame)
bpy.context.scene.frame_set(stop_end_frame)
sphere.keyframe_insert(data_path="location", frame=stop_end_frame)
# 再開フレームを追加
resume_frame = stop_end_frame + 1
bpy.context.scene.frame_set(resume_frame)
sphere.location.x = start_position[0]
sphere.keyframe_insert(data_path="location", frame=resume_frame)
# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')
Z=0平面に トーラスを作る
中心 000
マイナー半径 0.02
メッジャー半径 1
import bpy
# トーラスを作成
bpy.ops.mesh.primitive_torus_add(
align='WORLD',
location=(0, 0, 0),
rotation=(0, 0, 0),
major_radius=1,
minor_radius=0.02
)
torus = bpy.context.active_object
import bpy
import math
# 初期設定
radius = 0.2
animation_duration = 10 # 移動アニメーションの時間(秒)
stop_duration = 3 # 停止アニメーションの時間(秒)
repeat_count = 3 # アニメーションの繰り返し回数
# 球体を作成(直線を動く球体)
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(-1, 0, 0))
sphere1 = bpy.context.active_object
# 2つ目の球体(円周を動く球体)
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=(0, 0, 0))
sphere2 = bpy.context.active_object
# ゴール時間を設定
goal_frame = (animation_duration + stop_duration) * repeat_count * bpy.context.scene.render.fps
# アニメーションを設定
for repeat in range(repeat_count):
for frame in range(1, (animation_duration * bpy.context.scene.render.fps) + 1):
bpy.context.scene.frame_set(frame)
# 直線を動く球体の位置を設定
x1 = -1 + (frame / (animation_duration * bpy.context.scene.render.fps)) * 2
sphere1.location.x = x1
sphere1.keyframe_insert(data_path="location", frame=frame)
# 円周を動く球体の位置を設定
angle = -math.pi * (frame / (animation_duration * bpy.context.scene.render.fps))
x2 = math.cos(angle)
y2 = math.sin(angle)
sphere2.location.x = x2
sphere2.location.y = y2
sphere2.keyframe_insert(data_path="location", frame=frame)
# アニメーションが完了した後に停止
stop_frame = (animation_duration * bpy.context.scene.render.fps) + 1
bpy.context.scene.frame_set(stop_frame)
sphere1.location.x = 1
sphere1.keyframe_insert(data_path="location", frame=stop_frame)
sphere2.location.x = -1
sphere2.location.y = 0
sphere2.keyframe_insert(data_path="location", frame=stop_frame)
# 停止キーフレームを追加
stop_end_frame = stop_frame + stop_duration * bpy.context.scene.render.fps
bpy.context.scene.frame_set(stop_frame)
sphere1.keyframe_insert(data_path="location", frame=stop_frame)
sphere2.keyframe_insert(data_path="location", frame=stop_frame)
bpy.context.scene.frame_set(stop_end_frame)
sphere1.keyframe_insert(data_path="location", frame=stop_end_frame)
sphere2.keyframe_insert(data_path="location", frame=stop_end_frame)
# 再開フレームを追加
resume_frame = stop_end_frame + 1
bpy.context.scene.frame_set(resume_frame)
sphere1.location.x = -1
sphere1.keyframe_insert(data_path="location", frame=resume_frame)
sphere2.location.x = -1
sphere2.location.y = 0
sphere2.keyframe_insert(data_path="location", frame=resume_frame)
# 最後の位置に移動
sphere1.location.x = 1
sphere1.keyframe_insert(data_path="location", frame=goal_frame)
sphere2.location.x = 1
sphere2.location.y = 0
sphere2.keyframe_insert(data_path="location", frame=goal_frame)
# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')
基本系 配布 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 との対話 修正記録 と メモ・ノート
ああああああああああああああああああああああああああああああああああああああああああああ