takeyohのおぼえがき

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

mixamoを使ったアニメーション作成(続き)

以前、mixamoを使って作ったモデルをblender経由でもassettocorsaで使える方法を書きました。

あれから、もう少し弄っていて、一つモデルを作って、あとはアニメーションを追加していくというやり方ができないか?と前後ろが逆なのが気になっていて、それを直せたので、覚書第2弾です。

まず、アニメーションさせたい人物の3Dデータをblenderにインポートします。

AモデルまたはTモデルがやりやすいです。

オブジェクトプロパティでモデルの回転をX=90,Y=0,Z=0に設定。(X=90が必要なのかどうかがまだ完全に検証できてません・・・)

あとスケールはX,Y,Zすべて1にします。

この状態で、人物のオブジェクトを選択し編集モードに切り替え。

グローバル座標で-Y(マイナスY)方向が正面になるようにする。(ローカル座標では+Z方向)

(↑この部分が前回と異なってます。)

あわせて、編集モードのまま、オブジェクトサイズを変更して、身長を適切な高さに修正します。

 

調整ができたら、fbxでエクスポートします。→①

設定は”サイズは0.01,-Z(マイナスZ)が前方”です。

 

①のfbxをmixamoにアップして、リグを作成し、お好きなアニメーションを設定し、fbxをダウンロードします。

このプロセスは前回の覚書と同じなので、そちらをご参照ください。

 

ここからがちょっと変わります。

考え方としては、ボーンとウェイトが設定された基本のモデルをkn5で作成し、アニメーションの作成を切り離し、アニメーションを複数作っても、モデルは一つだけあればOKという状態を作ります。

 

まず、基本モデルとなるkn5の作成です。

ダウンロードしたfbxをまたblenderでインポートします。→②

設定は”サイズは100、-Z(マイナスZ)が前方"です。

アーマチュアを選択して、ポーズモードに切り替えます。

オブジェクトデータプロパティでビューポート表示にある、「最前面」というところにチェックを付けると、オブジェクトの中に埋まって見えないボーンも見えるようになります。操作が楽になるので、お勧めです。

ポーズモードの状態で、左上のポーズからトランスフォームをクリア→すべてを選択すると、ボーンが設定された状態のTポーズ・Aポーズに戻ります。

続いて、設定されているアニメーションを削除します。

右上のツリーをビューレイヤーからBlenderファイルに切り替えます。

アクションの中にある項目を削除します。

削除するとアニメーションの設定がすべて消えます。

 

ここまでできたら、kn5を作成するためのfbxをエクスポートします。

(オブジェクトの面数が65535を超えているとksEditorでは取り込めないので、あまり複雑な形状のキャラクタは調整が必要な場合があります。)

エクスポートの設定は”サイズは0.01、-Z(マイナスZ)が前方”です。アーマチュアにもチェック入れるのを忘れずに!→③

 

③のファイルをksEditorで読み込みます。

シェーダーやマテリアルの設定は、前回の覚書と同様です。

使用可能なシェーダーが限られてますのでご注意を。

設定が出来たらkn5を生成します。

これで、ベースとなるkn5は完成です。car modとして利用が可能です。(ドライバモデルとしては使えません。)

 

次にアニメーション作成です。

kn5を作成するときに読み込んだ上記②をもう一度行います。

設定は”サイズは100、-Z(マイナスZ)が前方"です。

アニメーションのフレームで最後のフレームの番号を確認し、”終了”のフレーム番号を変更します。この例だと最後のフレーム番号は32なので、終了を32に変更します。

そしてfbxをエクスポートします。→④

設定は”サイズは0.01、-Z(マイナスZ)が前方”です。

アーマチュアのチェックと、アニメーションをベイクの設定を忘れずに。

ksEditorで③を読み込んだ後、fbx animationファイルとして、④を読み込みます。

この辺も前回の覚書と同じです。④を読み込むとfbxと同じフォルダにksanimファイルが生成されます。

ここから先は車のmodと同じ要領でkn5とアニメーションを設置し、ext_config.iniでksanimを実行する設定を書いてゲームをスタートさせれば、アニメーションすると思います。

 

前回の覚書では車の進行方向に対して、キャラが後ろを向いてしまいましたが、今回の手順で作ったものは、キャラが車の進行方向を向いているので、歩くシーンなんかをつくっても違和感なくできると思います。

 

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