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
bbb
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