2023年8月8日火曜日

20230809 完成 トーラスと 球体 リンク回転 フレーム530




import bpy

import math


# 初期設定

torus_major_radius = 1.0  # トーラスのメジャー半径

torus_minor_radius = 0.05  # トーラスのマイナー半径

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))  # 描画開始位置

torus = bpy.context.active_object


# 球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(1, 0, 0))  # 描画開始位置

sphere = bpy.context.active_object


# 球体をトーラスにリンク設定

sphere.parent = torus


# ゴール時間を設定

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

    torus.rotation_euler.z = angle

    torus.keyframe_insert(data_path="rotation_euler", frame=frame)


# アウトライナで全てのオブジェクトを選択解除

bpy.ops.object.select_all(action='DESELECT')


# endを530フレームに設定

bpy.context.scene.frame_end = 530






import bpy
import math

# 初期設定
torus_major_radius = 1.0  # トーラスのメジャー半径
torus_minor_radius = 0.05  # トーラスのマイナー半径
sphere_radius = 0.07  # 球体の半径
animation_duration = 20  # アニメーションの時間(秒)
frame_rate = bpy.context.scene.render.fps
clockwise = False  # 時計回り: False, 反時計回り: True

# トーラスを作成
bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0))  # 描画開始位置
torus = bpy.context.active_object

# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(-1, 0, 0))  # 描画開始位置
sphere = bpy.context.active_object

# 球体をトーラスにリンク設定
sphere.parent = torus

# ゴール時間を設定
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
    torus.rotation_euler.z = angle
    torus.keyframe_insert(data_path="rotation_euler", frame=frame)

# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')

# 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 





test

ああああああああああああああああああああああああああああああああああああああああああああ


うごい




import bpy

import math


# 初期設定

torus_major_radius = 1.0  # トーラスのメジャー半径

torus_minor_radius = 0.05  # トーラスのマイナー半径

sphere_radius = 0.07  # 球体の半径

animation_duration = 20  # アニメーションの時間(秒)

frame_rate = bpy.context.scene.render.fps

clockwise = False  # 時計回り: False, 反時計回り: True


# トーラスを作成

bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0))  # 描画開始位置

torus = bpy.context.active_object


# 球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(1, 0, 0))  # 描画開始位置

sphere = bpy.context.active_object


# 球体をトーラスにリンク設定

sphere.parent = torus


# ゴール時間を設定

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

    torus.rotation_euler.z = angle

    torus.keyframe_insert(data_path="rotation_euler", frame=frame)


# アウトライナで全てのオブジェクトを選択解除

bpy.ops.object.select_all(action='DESELECT')


# endを530フレームに設定

bpy.context.scene.frame_end = 530






import bpy
import math

# 初期設定
torus_major_radius = 1.0  # トーラスのメジャー半径
torus_minor_radius = 0.05  # トーラスのマイナー半径
sphere_radius = 0.07  # 球体の半径
animation_duration = 20  # アニメーションの時間(秒)
frame_rate = bpy.context.scene.render.fps
clockwise = False  # 時計回り: False, 反時計回り: True

# トーラスを作成
bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0))  # 描画開始位置
torus = bpy.context.active_object

# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(-1, 0, 0))  # 描画開始位置
sphere = bpy.context.active_object

# 球体をトーラスにリンク設定
sphere.parent = torus

# ゴール時間を設定
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
    torus.rotation_euler.z = angle
    torus.keyframe_insert(data_path="rotation_euler", frame=frame)

# アウトライナで全てのオブジェクトを選択解除
bpy.ops.object.select_all(action='DESELECT')

# 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 





20230809 トーラスと球体 リンク連動

ああああああああああああああああああああああああああああああああああああああああああああ



トーラスと球体 リンク連動


import bpy

import math


# 初期設定

torus_major_radius = 1.0  # トーラスのメジャー半径

torus_minor_radius = 0.05  # トーラスのマイナー半径

sphere_radius = 0.07  # 球体の半径

animation_duration = 20  # アニメーションの時間(秒)

frame_rate = bpy.context.scene.render.fps

clockwise = False  # 時計回り: False, 反時計回り: True


# トーラスを作成

bpy.ops.mesh.primitive_torus_add(align='WORLD', major_radius=torus_major_radius, minor_radius=torus_minor_radius, location=(0, 0, 0))  # 描画開始位置

torus = bpy.context.active_object


# 球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=(1, 0, 0))  # 描画開始位置

sphere = bpy.context.active_object


# 球体をトーラスにリンク設定

sphere.parent = torus


# ゴール時間を設定

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

    torus.rotation_euler.z = angle

    torus.keyframe_insert(data_path="rotation_euler", frame=frame)


# アウトライナで全てのオブジェクトを選択解除

bpy.ops.object.select_all(action='DESELECT')


# 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 





20230809  球体回転 530フレーム

ああああああああああああああああああああああああああああああああああああああああああああ


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)



20230809 円柱代替 球体11個を動かす 失敗

ああああああああああああああああああああああああああああああああああああああああああああ








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