うろ覚えなのでソース確認しないとだな
・二等辺三角形と三角関数を利用したRの決定
・レールにカントがついている場合のrot決定
・KFMでそれらを記述する方法
・二等辺三角形と三角関数を利用したRの決定
扇形軌道の視点と終点の接線の角度と直線での二点間距離で
二等辺三角形を作図するです
ベジェとか出やったほうがきれいに出るけどめんどくさいでしょあれ
なので先にRとθだけで作図出来る方法をやるです
まず現在の向きと位置をpos1,rot1として
ターゲットとなるガイドオブジェクトの位置をpos2,rot2とします
んでrot1とrot2に<1,0,0>を掛けて導き出した方向ベクトルをvec1,vec2
方向ベクトルから導き出した平面上での方角をdir1 dir2とします
dir1 = llAtan2(vec1.y,vec1.x);
dir2 = llAtan2(vec2.y,vec2.x);
んでこっからRを算出しますが
これはpos1,pos2間の距離とdirの角度の差を利用します
確か X=Rsinθ辺りの式を変形するとRを出せる式になるです
なので まずXを決定します
Xはpos1とpos2の中点座標までの距離で出てくるので
そっからX= llVecMag(pos2-pos1)/2とかだったかな
θ = (dir2-dir1)/2 だったっけかなぁ
これでパラメータ全部埋まったのでXとθからRが出ます
んでRが出たらそっから移動速度とフレーム数で円周上の距離を割ると
移動モーションで扇形軌道を描く線を通すための
Rとθが決定するので
あとは頑張って座標プロットしてモーション組んでください
・レールにカントがついている場合のrot決定
割と単純な座標計算です
<0,0,1>のベクトルをrot掛けてvec1_1出してな
これの前に出したdirの式使って正規化する
vec1_1=vec1_1/llEuler2Rot(<0,0,dir>);
これで正規化した”傾き”のvectorが出るからな
そしたら kant = llAtan2(vec1_1.z,vec1_1.y);
これでいけっかなぁ
まぁ航空機でのピッチロールヨーを出す数式と基本的に一緒
航空機と違うのは表示機ではなく実際の移動に使う部分だな
・KFMでそれらを記述する方法
とりあえず円は多角形で近似出来るだろー
フレーム最小のθとR使ってフレーム間距離出してな~
そしたら曲がる角度と移動距離が決定されるので
あとはそれをKFMに記述するだけでOK
大体この辺でいけるはずだ
んでこの理論で組んだモーターコアつくって
移動速度の外部コマンドでコントロール出来るブラックボックスにすれば
ツアーライドとかあのへんに汎用的に使えるんじゃねーの的な
以上
0 件のコメント:
コメントを投稿