球体が -10,0,0 に着いたら
さらに新たな球体 半径0.3 を
-10,0,0 から 出発させ
0,10,0 に進ませる 加える
以下のスクリプトで sphere 1だけ修正する
0,0,0 出発
10,0,0 に到着したら
sphere1の速度の 1/1.41 に変更し
0,10,0 を目指す 到着したら 速度を元の速度に戻す
0,0,0 から再度出発し 10,0,0 へ
以下のスクリプト修正で
sphere 1 が 10,0,0 に到着したら
そこから 0,10,0 を到着位置に移動する
10,0,0 から 0,,10,0 の移動速度は1/1.41 で移動し
0,10,0 に到着したら 0,0,0からの動きを繰り返す
残りの球体の動きは 以下のスクリプトと同じ
ああああああああああああああああああああああああああ
以下のスクリプトで sphere 1だけ修正する
0,0,0 出発
10,0,0 に到着したら
sphere1の速度の 1/1.41 に変更し
0,10,0 を目指す 到着したら 速度を元の速度に戻す
0,0,0 から再度出発し 10,0,0 へ
python スクリプトを書いて
ああああああああああああああああああああああああああああ
以下のスクリプトで sphere 4を追加する
球体1 が10,0,0 に到着したら
sphere4を -10,0,0 から sphere1速度の 1/1.41 で移動させ
0,10,0 を目指す 到着したら この球体を消す
import math
import bpy
# 1つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere1 = bpy.context.object
# 2つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere2 = bpy.context.object
# 3つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere3 = bpy.context.object
# 移動アニメーションを作成
anim_data1 = sphere1.animation_data_create()
anim_data2 = sphere2.animation_data_create()
anim_data3 = sphere3.animation_data_create()
anim_data1.action = bpy.data.actions.new(name="sphere_anim1")
anim_data2.action = bpy.data.actions.new(name="sphere_anim2")
anim_data3.action = bpy.data.actions.new(name="sphere_anim3")
# 移動のキーフレームを設定
for i in range(2):
loc1 = [0, 0, 0] if i == 0 else [-10, 0, 0]
loc2 = [0, 0, 0] if i == 0 else [10, 0, 0]
loc3 = [0, 0, 0] if i == 0 else [0, 10, 0]
sphere1.location = loc1
sphere2.location = loc2
sphere3.location = loc3
sphere1.keyframe_insert(data_path="location", frame=i*240+1)
sphere2.keyframe_insert(data_path="location", frame=i*240+1)
sphere3.keyframe_insert(data_path="location", frame=i*240+1)
# 繰り返すアニメーションを作成
anim_data1.action.frame_range = (1, 480)
anim_data2.action.frame_range = (1, 480)
anim_data3.action.frame_range = (1, 480)
anim_data1.action.repeat = True
anim_data2.action.repeat = True
anim_data3.action.repeat = True
anim_data1.action.extrapolation = 'LINEAR'
anim_data2.action.extrapolation = 'LINEAR'
anim_data3.action.extrapolation = 'LINEAR'
# 4つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(-10, 0, 0))
sphere4 = bpy.context.object
# sphere4の移動アニメーションを作成
anim_data4 = sphere4.animation_data_create()
anim_data4.action = bpy.data.actions.new(name="sphere_anim4")
# sphere4のキーフレームを設定
loc4_start = [-10, 0, 0]
loc4_end = [0, 10, 0]
frames_to_reach = int(240 / 1.41) # 1/1.41の速度で移動するためのフレーム数
for i in range(frames_to_reach):
frac = i / frames_to_reach
loc4 = [loc4_start[j] + frac * (loc4_end[j] - loc4_start[j]) for j in range(3)]
sphere4.location = loc4
sphere4.keyframe_insert(data_path="location", frame=240+i+1)
# 球体1のアニメーションの最後のキーフレームで、sphere4のアニメーションを開始する
sphere1.animation_data.action.frame_end = 480
sphere4.animation_data.action.frame_start = 481
# sphere4が目標に到着したら、球体を消すアニメーションを作成
anim_data5 = sphere4.animation_data_create()
anim_data5.action = bpy.data.actions.new(name="sphere_anim5")
loc5_start = [0, 10, 0]
loc5_end = [0, 11, 0] # 目標に到着したとみなす座標
frames_to_reach = int(240 / 1.41) # 1/1.41の速度で移動するためのフレーム数
for i in range(frames_to_reach):
frac = i / frames_to_reach
loc5 = [loc5_start[j] + frac * (loc5_end[j] - loc5_start[j]) for j in range(3)]
sphere4.location = loc5
sphere4.keyframe_insert(data_path="location", frame=721+i+1)
sphere4.keyframe_insert(data_path="scale", frame=721, value=[0, 0, 0]) # 球体を消す
# 繰り返すアニメーションにsphere4のアニメーションを追加する
anim_data1.action.frame_range = (1, 720)
anim_data2.action.frame_range = (1, 720)
anim_data3.action.frame_range = (1, 720)
anim_data4.action.frame_range = (1, 720 + frames_to_reach)
anim_data5.action.frame_range = (1, 720 + frames_to_reach + 1)
anim_data1.action.fcurves.remove(anim_data1.action.fcurves[-1]) # 終了フレームを削除
bbb
togetter.com/t/c2022meetzionad
togetter.com/t/b2022meetzionad
twitter 新着検索 Dürer & 測距儀
aaa
bbb
twitter zionadchat
twitter に追い出されたら 連絡先は Gettr https://gettr.com/user/zionadchat
twitter サブアカウント https://twitter.com/2022zionad
old page いいい
new page いいい
目次 2022の目次 単純トリック hatena zionadchat
いいいいいいいい