2023年3月23日木曜日

aaa


  loc_a_start 
    loc_a_end の

直線距離を求めて
distance とし
(frame_end - frame_start) 


# Calculate the speed
speed = distance / (frame_end - frame_start)






0,0,0から 30度方向と90度方向に 10秒間で 同じ距離だけ進むアニメを作って

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

球体半径1

Here's a Blender Python script to create an animation where two spheres move the same distance in 10 seconds in the direction of 30 and 90 degrees from the origin:




import bpy
from math import radians

# Set up scene
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_end = 300

# Create sphere
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))
sphere = bpy.context.active_object

# Calculate direction and distance
direction = (radians(30), radians(90))  # 30 and 90 degrees in radians
distance = 10









それぞれのオブジェクトの
   loc_a_start 
    loc_a_end の

直線距離を求めて
distance とし
(frame_end - frame_start)  で 割った数字が
おなじになるようにする



上記を英語に訳し
Blender Pythonスクリプトを作って

# Set the target coordinate
target = mathutils.Vector((-60, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(-30, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))



Create a Blender Python script that moves an object at a constant speed towards a specified coordinate, and calculates the straight-line distance between the object's starting and ending positions as "distance".

# Get the starting and ending locations of obj_a loc_a_start = obj_a.location loc_a_end = target # Calculate the distance between loc_a_start and loc_a_end distance = (loc_a_end - loc_a_start).length # Set the speed of the object's movement speed = 1.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
このスクリプトを実行すると、現在のアニメーションの設定を取得し、新しいアニメーションの設定を計算して、それらを更新します。新しいフレームレートは現在のフレームレートの倍になります。






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()  # アニメーションを再生










Create a Blender Python script that moves an object towards specified coordinates at a constant speed.

For each object, calculate the straight-line distance between the loc_a_start and loc_a_end positions and assign it to the variable distance. Then, move the object at the same speed along this distance.

Next, create 16 spheres with a radius of 1 at equal intervals along the surface of the sphere defined by the equation x**2 + y**2 = 30. Animate these spheres to move to the coordinates (0, -30, 0).




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

それぞれのオブジェクトの
   loc_a_start 
    loc_a_end の

直線距離を求めて
distance とし

同じ速度で このdistance を進む

上記を英語に訳し
Blender Pythonスクリプトを作って

# Set the target coordinate
target = mathutils.Vector((-60, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(-30, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))










0,0,0
-30,0,0
この2つに
球体半径1を作る

移動先は
0,ー30,0







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

0,ー30,0に移動させるアニメを作る









# Set the target coordinate
target = mathutils.Vector((-30, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(-30, 0, 0))

# Create a sphere at the origin
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))









bbb

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

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