takeyohのおぼえがき

気になったこと、試したことの記録です。

ドアのアニメーションを作る

car modを作る際、車のパーツのアニメーションがうまくできないというコメントを頂きました。
各自の環境に依存するところが多数あるので、個別のサポートは難しいのですが、私の環境ではこのように作れましたということで、ご紹介したいと思います。

今回は、Todayのパトカーの左側ドアを例にします。

アニメーションのフレームは今回1~9としています。
最初のフレームに位置を合わせて、左ドアを動かすためのエンプティを追加します。
ドア周辺のオブジェクトを非表示にして、ドアが見えやすくし、ドアの稼働部分(開くときの軸になる部分)にエンプティを追加します。

ここでは、DOOR_Lという名前にしました。

そしてこのエンプティのオブジェクトプロパティで、回転Xを90度、Yを0度、Zを180度に設定します。
次に、ドアのアニメーションで動かしたいオブジェクト(今回は左ドアを構成するパーツ群)をこのエンプティ(DOOR_L)の下に入れます。
必ず、エンプティの回転設定を変更してから、オブジェクトを入れてください。入れてからエンプティを回転させるとうまくいきません。

結果はこんな感じ。

次に、アニメーションのフレームが最初の位置(今回は1)になっているのを確認したら、エンプティ(DOOR_L)のオブジェクトプロパティで位置のX,Y,Zと回転のX,Y,Zの6つの項目を記憶します。(白いひし形のマークがつきますね。)

続いて、アニメーションのフレームを最後の位置(今回は9)に移動させます。
そしてエンプティ(DOOR_L)をローカル座標でY軸を中心に回転させて、ドアを開いた状態にします。
開いた状態にしたら、また位置のX,Y,Zと回転のX,Y,Zの6つの項目を記憶します。

ちなみに、下記の絵では、回転Zのみ記憶しています。

最初のフレームで位置と回転の合計6項目の記憶ができていれば、それ以降の設定は差分だけの設定でも、想定通りアニメーションは実装できます。
が、不安だったり、確実にわかりやすくやりたい方は、都度6項目ともチェックをつけてもよいです。

これでアニメーションの設定は終了です。
続いてエクスポート。

エンプティの追加とドアのオブジェクト移動を行っていますので、車自体のエクスポートをやり直します。
アニメーションのフレームを最初の位置に戻すのを忘れずに!

車のデータのfbxエクスポートの設定はこうですね。スケールは0.01、前方は「Zが前方」、アニメーションをベイクのチェックを外します。

続いて、作成した左ドアのアニメーションをエクスポートします。
アニメーションを設定したエンプティ(DOOR_L)を選択します。
対象の「選択したオブジェクト」にチェックをつける、アニメーションをベイクにもチェックをつける、その下の4つの項目のチェックは外します。
オブジェクトはエンプティだけ選択。

左のドアのアニメーションはcar_DOOR_L.fbxという名前でエクスポートしておくとよいです。

エクスポートが出来たら、ksEditorを起動し、まず車のfbxを読み込んで、kn5を作成します。
続いて、アニメーション用のfbx(car_DOOR_L.fbx)をFileメニューのOpen FBX Animationを選択して、読み込みます。
すると、fbxファイルがあるフォルダと同じところに、car_DOOR_L.ksanimをいうファイルができます。
ksanimの作成は、車のfbxを読み込んでいない状態(ksEditor上に車が見えていない状態)でも生成することはできます。
ですが、車のfbxを読み込んでから、アニメーションのfbxを追加で読み込むと、ksEditor下部にあるAnimationsというタブのスライダーを動かすことでアニメーションの様子が確認できます。

アニメーションのfbxを読み込んだ瞬間、対象のパーツ(今回の例でいうと左のドアパーツ)が消えたり、スライダーを動かしたとき意図しない方向に動いたりするときは、Blenderでのアニメーション設定が正しく行えていないです。
その時は、Blender上でドアのオブジェクトをいったんエンプティの外に戻し、エンプティを削除して、最初から作り直すことをお勧めします。
一度変な動きをするエンプティはBlender上で修正してもksEditorに正しく反映されてないことが多いです。(なぜだろう・・?)
頑張って修正しようとして変にドはまりするより、さっさと作り直した方が、結果的に早く解決すると思います。

kn5ファイルをcar modフォルダに、car_DOOR_L.ksanimファイルはcar modフォルダの下にあるanimationsというフォルダの下にいれます。
左右のドアのアニメーションファイルは命名規則があり、car_DOOR_L.ksanimが左側のドア、car_DOOR_R.ksanimが右側のドアのアニメーションになります。これらを設定しておくと、ゲーム開始時にドアが開いた状態になったり、カスタムショールームでドアの開け閉めができるようになったりします。

/* -----codeの行番号----- */