godotゲームエンジンについてです。
球面線形補間(slerp)で3dメッシュを回転させると、徐々に加速して最後はゆっくりと動くようになりますよね。山なりのようにです。
これを均等なスピードで回転させるにはどういう公式が必要でしょうか。
なんと調べたら良いかわからないです。
スピードに対して、何らかの値を加えると良いのはわかります。
経過時間が関係していることはわかります。
gdscript
1var spatial_outer 2 3#経過時間 4var currenttime = 0 5#移動にかかる時間 6var transitiontime = 5 7 8func _ready(): 9 spatial_outer = get_tree().get_root().get_node("Spatial/Spatial_outer") 10 11func _physics_process(delta): 12 13 if Input.is_key_pressed(KEY_UP): 14 #回転 15 var start = self.transform.basis 16 var end =spatial_outer.transform.basis 17 var result = start.slerp(end,currenttime/transitiontime) 18 self.transform.basis = Basis(result) 19 20 currenttime = currenttime + delta * 2 21 22 23 else: 24 currenttime = 0
start.slerp(end,currenttime/transitiontime)
と言う部分でslerpを使用しています。第一引数が終点で、第ニ引数は終点までの距離を1フレームあたり何%動かすかという指定だと思います。常に一定のパーセンテージだと終点までの距離が短くなるほど、動く距離が少なくなるということになります。
終盤に行くほどパーセンテージを増やせばいいということはわかります。
しかし、なぜ現在の時間/移動に要する時間
という式でパーセンテージを求められるのでしょうか。
難しい数学はわからないのですが、数学でいうとどのあたりの公式になるんでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。