2023年3月24日金曜日

成功 円周からの 等速移動

aaa


1つ1つの球体速度を
(終点位置ー開始位置)の 直線距離で 割って

zion_speed = 10

zion_speed を 掛けて








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.dist(obj.location, target_location)  # 初期位置と目標位置の直線距離を計算
    duration = distance / speed  # 移動に必要な時間を計算
    obj.keyframe_insert(data_path="location", frame=start_frame)
    obj.location = target_location
    obj.keyframe_insert(data_path="location", frame=start_frame + duration)

# 16個の球体を作成する
spheres = []
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
    spheres.append(obj)

# すべての球体の速度を変更する
zion_speed = 10
for sphere in spheres:
    distance = math.dist(sphere.location, (0, -30, 0))
    speed = 1 / distance * zion_speed
    set_animation(sphere, 1, 250, (0, -30, 0), speed)









作動するけど 到着時刻 同じ球体 16個


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):
    obj.keyframe_insert(data_path="location", frame=start_frame)
    obj.location = target_location
    obj.keyframe_insert(data_path="location", frame=end_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, 250, (0, -30, -30))









このスクリプトでは、set_animation()関数が更新され、オブジェクトの速度を計算しています。 set_animation()関数は、移動するオブジェクト、開始フレーム、終了フレーム、目標位置、およびオブジェクトの速度を引数として受け取ります。start_locationdistance変数を使用して、オブジェクトの現在位置から目標位置までの直線距離を計算します。duration変数は、オブジェクトが目標位置に到達するのに必要なフレーム数を計算します。最後に、オブジェクトの速度に基づいてフレーム数を計算し、アニメーションを設定します。

16個の球体が作成され、set_animation()関数が呼び出されて、各オブジェクトが目標位置に移動するアニメーションが作成されます。オブジェクトの速度は、 set_animation()関数が自動的に計算するため、速度は手動で計算する必要はありません。



bbb

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

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