2023年3月23日木曜日

aaa

指定された座標に向けて等速で移動させる
Blender Pythonスクリプトを作って








ad jazzion
x**2 +y**2 =30 に 等間隔で16個の半径1の球体を作り

0,ー30,0へ 移動させる
移動中の速度は 同じにする


0,ー30、0から 
半径1の球体 16個を
-30,0,0から 30,0,0の 等間隔の位置に移動させる


移動中の速度は 同じに設定
blender python スクリプト書いて


 

import bpy
import math

# オブジェクトを作成する関数
def create_sphere(location, radius):
    bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed):
    distance = math.sqrt((target_location[0] - obj.location[0]) ** 2 + (target_location[1] - obj.location[1]) ** 2 + (target_location[2] - obj.location[2]) ** 2)
    for frame in range(start_frame, end_frame + 1):
        obj.location = obj.location.lerp(target_location, speed / distance)
        obj.keyframe_insert(data_path="location", frame=frame)

# 2点間の距離を計算する
start_location = (10, 10, 10)
end_location = (-10, -10, -10)
distance = math.sqrt((end_location[0] - start_location[0]) ** 2 + (end_location[1] - start_location[1]) ** 2 + (end_location[2] - start_location[2]) ** 2)

# 16個の球体を作成する
for i in range(16):
    angle = 2 * i * math.pi / 16
    x = 10 * math.cos(angle)
    y = 10 * math.sin(angle)
    z = 0
    location = (x, y, z)
    radius = 1
    create_sphere(location, radius)
    obj = bpy.context.active_object
    set_animation(obj, 1, 500, end_location, distance / 500)




import bpy
import math

# オブジェクトを作成する関数
def create_sphere(location, radius):
    bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)

# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location speed_factor=0.1 ):
    distance = math.sqrt((target_location[0] - obj.location[0]) ** 2 + (target_location[1] - obj.location[1]) ** 2 + (target_location[2] - obj.location[2]) ** 2)
    speed = distance / (end_frame - start_frame)
    for frame in range(start_frame, end_frame + 1):
        obj.location = obj.location.lerp(target_location, speed)
        obj.keyframe_insert(data_path="location", frame=frame)

# 16個の球体を作成する
for i in range(16):
    angle = 2 * i * math.pi / 16
    x = 30 * math.cos(angle)
    y = 30 * math.sin(angle)
    z = 0
    location = (x, y, z)
    radius = 1
    create_sphere(location, radius)
    obj = bpy.context.active_object
    set_animation(obj, 1, 500, (0, -30, 0))



speed_factorという引数を追加し、デフォルト値を1に設定します。この引数は速度の倍率を表します。元の速度の1/10にしたい場合は、set_animation関数を呼び出す際にspeed_factorに0.1を渡します。





speed_factorという引数を追加し、デフォルト値を1に設定します。この引数は速度の倍率を表します。元の速度の1/10にしたい場合は、set_animation関数を呼び出す際にspeed_factorに0.1を渡します。



# アニメーションを設定する関数
def set_animation(obj, start_frame, end_frame, target_location, speed_factor=1):
    distance = math.sqrt((target_location[0] - obj.location[0]) ** 2 + (target_location[1] - obj.location[1]) ** 2 + (target_location[2] - obj.location[2]) ** 2)
    speed = distance / (end_frame - start_frame) * speed_factor
    for frame in range(start_frame, end_frame + 1):
        obj.location = obj.location.lerp(target_location, speed)
        obj.keyframe_insert(data_path="location", frame=frame)














import bpy
import random


# 円錐の半径と高さを設定
radius = 0.5
height = 1.0

for i in range(50):
    # 円錐の初期位置と移動先の位置をランダムに設定
    x = random.uniform(-30, 30)
    loc_a_start = (x, 0, 0)
    loc_a_end = (0, 30, 0)

    # 円錐Aを作成し、初期位置を設定する
    bpy.ops.mesh.primitive_cone_add(radius1=radius, radius2=0, depth=height, location=loc_a_start)
    obj_a = bpy.context.object



    # アニメーションのフレーム設定を行う
    start_frame = 1  # アニメーションの最初のフレーム
    distance = (((0-0)**2 + (x-0)**2 + (30-0)**2)**0.5)  /30
    end_frame_a = int(distance * 20 * bpy.context.scene.render.fps)  # 円錐Aの移動が終わるフレーム
    bpy.context.scene.frame_start = start_frame  # アニメーションの開始フレームを設定
    bpy.context.scene.frame_end = end_frame_a  # アニメーションの終了フレームを設定

    # キーフレームを設定する
    obj_a.location = loc_a_start  # 円錐Aの開始位置を設定
    obj_a.keyframe_insert(data_path="location", frame=start_frame)  # 開始フレームでキーフレームを設定
    obj_a.location = loc_a_end  # 円錐Aの終了位置を設定
    obj_a.keyframe_insert(data_path="location", frame=end_frame_a)  # 終了フレームでキーフレームを設定

# アニメーション再生
bpy.ops.screen.animation_play()  # アニメーションを再生








bbb



連番 007 未来光円錐 過去光円錐 円周中心からの球体放出

aaa 参考 2023年3月26日日曜日 製作 002b 未来光円錐の方向 線路レールで https://ia2023sha.blogspot.com/2023/03/002b.html import bpy import math zion_co...