とあるcar modをいじらせていただいていたとき、サスペンションの上下幅が少なすぎて、デフォルトのサスペンションアニメーションでは沈みすぎて車体がタイヤに刺さる羽目に。
なんとかサスペンションの可動域を制御したいということで、サスペンションアニメーションの覚書です。
ただし、サスペンションアニメーションはかなり細かく設定できる代物ですが、今回は本当に必要最小限しか実装していません。かなり深い知識が必要になるので表面部分だけ。ご容赦ください。
まずオブジェクトの構成から。
サスペンションアニメーションを実現するためには最低限下記の構成が必要です。
HUB_LF
+- SUSP_LF
+- WHEEL_LF
HUB_LR
+- SUSP_LR
+- WHEEL_LR
HUB_RF
+- SUSP_RF
+- WHEEL_RF
HUB_RR
+- SUSP_RR
+- WHEEL_RR
すべてエンプティで構成されています。
それぞれ、位置はホイールの中心部分でとりあえず大丈夫、回転はX=90,Y=0,Z=180、スケールはX,Y,Zともに1.000で設定しました。
ホイールの中心部分にエンプティを配置するのを目で見て設定するのはかなり大変だと思います。
私はLFなら、
1)左前のホイールオブジェクトを選択し、原点をジオメトリに移動。
2)Shift+Sで「カーソル→選択物」を選択。(これで3Dカーソルがホイールの真ん中に来る。
3)追加で「エンプティ」を選択。→2)の3Dカーソルがある場所に新規のエンプティが挿入される。
って感じでやってます。
次に、タイヤと一緒に回転するオブジェクト(タイヤとかホイールとかブレーキディスクとか)はWHEEL_XXのエンプティ内に入れます。
#ほんとは、ホイール用、ブレーキディスク用のエンプティもあります。がここでは省略してます。
タイヤと連動するけど回転はしないオブジェクト(ブレーキパットとか、回転しないホイールカバーとか?)はSUSP_XXに入れます。
最後はHUB_XXの4つに対して、アニメーションを設定します。
アニメーションフレームは20フレーム分(開始1~開始21)固定です。
1フレーム目がサスペンションが一番伸び切った位置、11フレーム目が通常時のサスペンションの位置、21フレーム目がサスペンションが一番縮まった位置に設定します。
1フレーム目(伸びきった位置)
11フレーム目(通常時)
21フレーム目(一番縮まった状態)
アニメーションが設定出来たら、アニメーション部分だけfbxでエクスポートします。
1)HUB_LFを選択
2)FBXでエクスポート
・選択したオブジェクトにチェック(HUB_LFのアニメーションだけを対象に)
・以下設定はアニメーションをエクスポートするのと同じです。
3)ファイル名は、「CAR_SUSP_LF.fbx」でエクスポート
これをLR, RF, RRについても同様にやります。
そうすると、CAR_SUSP_XX.fbxというのが4つできますよね?
次にこれをksanimデータにします。
1)いつものksEditorを起動。
2)FileからOpen FBX Animationを選択
これだけで、fbxファイルのあるフォルダに、ksanimデータが生成されます。
#CAR_SUSP_LF.fbxならCAR_SUSP_LF.ksanimファイルが生成されます。
これもLR,RF,RRで同様にやると、同じくksanimファイルが4つできますね。
このksanimファイルをcar mod のanimationsフォルダにコピーします。
(steerとかshiftのksanimファイルと同じ場所です。)
あと、車体そのものの再作成も忘れずに。kn5にHUB_XXのエンプティが含まれていないと、ゲーム起動でエラーになります。
ちなみに、フロント(LFとRF)はステアリングの切れ角に合わせて勝手に左右にアニメーションするので、個別に設定する必要はありませんでした。
(追記)
ksEditorではサスペンションのアニメーションが動くのに、ゲームで走ると全くサスペンションのアニメーションが動かない!というのが起こりました。
これは、サスペンションアニメーションではなく、車の設定そのものの影響です。
一度car.iniの[GRAPHICS]で、
USE_ANIMATED_SUSPENSIONS=0
として、サスのアニメーションをオフにして走ったら、サスペンションが動くかどうか確認します。
オフにしても動かないときは、車自体のサス回りががちがちで動かない設定になっているため、そちらを修正します。
例えばスプリングレートやダンパ回りを変更するならsuspensions.iniを見直します。
あと自分がはまったのは、setup.ini。
”ゲーム内で車の各種設定を変更できるパラメータ”を記載する設定ファイルですが、
ここでサスペンション回りの設定が無いと、ほとんどサスペンションは動きませんでした。ほかの車の設定例を参考にsetup.iniにサスペンション回りの設定も追加してあげると、サスペンションが動くようになりました。
それが確認出来たら、car.iniで
USE_ANIMATED_SUSPENSIONS=1
に変更して、ゲーム開始すると、サスペンションアニメーションが動くと思います。
(もう一つ追記)
USE_ANIMATED_SUSPENSIONS=0だとサスペンションはアニメーションするのに、USE_ANIMATED_SUSPENSIONS=1にしたら動かない!のパターン、もう一つあったのでこちらもメモ。
suspensions.iniとtyres.iniで指定されているタイヤのサイズや位置と、実際のオブジェクトの位置が大きくずれているとアニメーションできなくなるようです。
設定とオブジェクトの位置が合っているかどうかは、カスタムショールーム内で、メニューから車のアイコンをクリックし、PhysicsのなかのWheelsにチェックをつけると、オブジェクトの上に緑の線で設定値が重ね表示されます。
この画面を表示したまま、suspensions.iniやtyres.iniなどのパラメータを変更してファイル保存すると、すぐに画面に反映されるので、これを見ながら値を調整することも可能です。
ここがうまく合っていれば、USE_ANIMATED_SUSPENSIONS=1にするとアニメーションします。