2023年8月8日火曜日

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 






以下 ChatGPT との対話 修正記録 と メモ・ノート


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