2023年3月23日木曜日

aaa






-30,0,0 から 30,0,0 に 等間隔で11個の球体を作り 0,-30,0 へ 同じ速度で移動するアニメ ー、ー30,0への到着時刻は 異なることになる



同時刻 到着


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)

# -30,0,0 から 30,0,0 に等間隔で11個の球体を作成する
for i in range(11):
    x = -30 + i * 6
    y = 0
    z = 0
    location = (x, y, z)
    radius = 1
    create_sphere(location, radius)
    obj = bpy.context.active_object
    set_animation(obj, 1, 250, (0, -30, 0))




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)

# -30,0,0 から 30,0,0 に等間隔で11個の球体を作成する
for i in range(11):
    x = -30 + i * 6
    y = 0
    z = 0
    location = (x, y, z)
    radius = 1
    create_sphere(location, radius)
    obj = bpy.context.active_object

    # 等速直線運動のアニメーションを設定する
    start_frame = 1
    end_frame = 250
    distance = math.sqrt((30 - x) ** 2 + (0 - y) ** 2 + (0 - z) ** 2)
    speed = distance / (end_frame - start_frame)
    duration = end_frame - start_frame
    arrival_time = duration * (30 - x) / distance
    target_location = (x, -30, 0)
    set_animation(obj, start_frame, start_frame + int(arrival_time), target_location















このスクリプトでは、16個の球体を作成し、それらを座標(0, 0, 0)に移動するアニメーションを設定しています。アニメーション速度を変えるには、以下のように set_animation 関数内の start_frame と end_frame の値を調整します。

scss
Copy code


# アニメーションを設定する関数
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, 500, (0, 0, 0)) # アニメーション速度を変える




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, 500, (0, -30, 0))






import bpy

# 現在のアニメーションの設定を取得する
scene = bpy.context.scene
frame_start = scene.frame_start
frame_end = scene.frame_end
fps = scene.render.fps

# 新しいアニメーションの設定を計算する
frame_end_new = frame_start + int((frame_end - frame_start) * (500 / 250))
fps_new = fps * 2

# アニメーションの設定を更新する
scene.frame_end = frame_end_new
scene.render.fps = fps_new
このスクリプトを実行すると、現在のアニメーションの設定を取得し、新しいアニメーションの設定を計算して、それらを更新します。新しいフレームレートは現在のフレームレートの倍になります。













bbb

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

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