import bpy
import math
zion_collection_name = "300 last_frame "
# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)
import bpy
import math
zion_collection_name = "200 last_frame"
# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)
import bpy
import math
zion_collection_name = "100 last_frame"
# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)
import bpy
import math
zion_collection_name = "固定点 移動開始時"
# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)
import bpy
import math
zion_collection_name = "移動終点 同時到着"
# コレクションを作成する
col = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(col)
import bpy
import math
from mathutils import Vector
# 目標位置を指定する
target_location = Vector((0, 30, 0))
# フレーム数を指定する
last_frame = 300
# 移動する距離を指定する
distance_per_frame = 0.2
# 16個の球体を作成する
spheres = []
for i in range(16):
angle = 2 * i * 3.14159 / 16
x = 30 * math.cos(angle)
y = 30 * math.sin(angle)
z = 0
location = Vector((x, y, z))
radius = 1
bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)
obj = bpy.context.active_object
obj.name = "300Sphere_" + str(i) # オブジェクトに名前を付ける
spheres.append(obj)
# アニメーションを設定する
for i, sphere in enumerate(spheres):
start_location = sphere.location
direction = (target_location - start_location).normalized()
for frame in range(1, last_frame + 1):
sphere.location += distance_per_frame * direction
sphere.keyframe_insert(data_path="location", frame=frame)
import bpy
import math
from mathutils import Vector
# 目標位置を指定する
target_location = Vector((0, 30, 0))
# フレーム数を指定する
last_frame = 100
# 移動する距離を指定する
distance_per_frame = 0.2
# 16個の球体を作成する
spheres = []
for i in range(16):
angle = 2 * i * 3.14159 / 16
x = 30 * math.cos(angle)
y = 30 * math.sin(angle)
z = 0
location = Vector((x, y, z))
radius = 1
bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)
obj = bpy.context.active_object
obj.name = "100Sphere_" + str(i) # オブジェクトに名前を付ける
spheres.append(obj)
# アニメーションを設定する
for i, sphere in enumerate(spheres):
start_location = sphere.location
direction = (target_location - start_location).normalized()
for frame in range(1, last_frame + 1):
sphere.location += distance_per_frame * direction
sphere.keyframe_insert(data_path="location", frame=frame)
import bpy
import math
from mathutils import Vector
# 目標位置を指定する
target_location = Vector((0, 30, 0))
# フレーム数を指定する
last_frame = 200
# 移動する距離を指定する
distance_per_frame = 0.2
# 16個の球体を作成する
spheres = []
for i in range(16):
angle = 2 * i * 3.14159 / 16
x = 30 * math.cos(angle)
y = 30 * math.sin(angle)
z = 0
location = Vector((x, y, z))
radius = 1
bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)
obj = bpy.context.active_object
obj.name = "100Sphere_" + str(i) # オブジェクトに名前を付ける
spheres.append(obj)
# アニメーションを設定する
for i, sphere in enumerate(spheres):
start_location = sphere.location
direction = (target_location - start_location).normalized()
for frame in range(1, last_frame + 1):
sphere.location += distance_per_frame * direction
sphere.keyframe_insert(data_path="location", frame=frame)
import bpy
# アクティブなシーンの再生設定を取得
scene = bpy.context.scene
# 再生時間を350フレームに設定
scene.frame_end = 350
#固定 移動開始位置
import bpy
import math
from mathutils import Vector
# 16個の球体を作成する
spheres = []
for i in range(16):
angle = 2 * i * 3.14159 / 16
x = 30 * math.cos(angle)
y = 30 * math.sin(angle)
z = 0
location = Vector((x, y, z))
radius = 1
bpy.ops.mesh.primitive_uv_sphere_add(location=location, radius=radius)
obj = bpy.context.active_object
obj.name = "300Sphere_" + str(i) # オブジェクトに名前を付ける
spheres.append(obj)
速度一緒の失敗
https://ipadtestnote2023.blogspot.com/2023/04/blog-post_84.html#more
2023年3月24日金曜日
速度 バラバラ 目標へ 同時着の 円周からの球体
https://ia2023sha.blogspot.com/2023/03/blog-post_24.html
# zion_collection_name = "移動終点 同時到着"
import bpy
import math
from mathutils import Vector
# 目標位置を指定する
zion_target = Vector((0, 30, 0))
# ラストフレームを指定する
zion_last_frame = 500
# 速度を計算する関数
times = 5.0
def calculate_speed(distance, duration):
return times * distance / duration
# オブジェクトを作成する関数
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 = (target_location - obj.location).length
duration = distance / speed
for frame in range(start_frame, end_frame+1):
t = (frame - start_frame) / duration
obj.location = obj.location.lerp(target_location, t)
obj.keyframe_insert(data_path="location", frame=frame)
# 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 = Vector((x, y, z))
radius = 1
create_sphere(location, radius)
obj = bpy.context.active_object
spheres.append(obj)
# アニメーションを設定する
for i, sphere in enumerate(spheres):
start_frame = 1
end_frame = zion_last_frame
location = sphere.location
distance = (zion_target - location).length
speed = calculate_speed(distance, zion_last_frame - start_frame)
set_animation(sphere, start_frame, end_frame, zion_target, speed)