takeyohのおぼえがき

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

3Dモデルにアーマチュアを追加&アニメーション設定してcar modとして使う。

単純に3Dのモデルだけの状態に、アーマチュアとボーンを追加し、それらにアニメーションを設定して、car modとして使う方法を試してみたので、その覚書です。

 

まず、モデルはこちら。

チョコボですね。フリーの3Dモデルをお借りしてきました。

こちらのモデルは、骨(ボーン)は入っていません。

最初に、大きさ、向きを調整します。

car modとして使うには、+Y軸方向に正面が向いている状態にします。

大きさはこのモデルの場合、スケールがすべて0.01になっているので、1に修正したのち、編集モードで1/100に縮小しました。(これをやらなくても作成できるのかは未検証ですが、念のためスケールを1に合わせています。)

あと、マテリアルの設定も必要です。今回も全く設定が無かったので、マテリアルの設定を行っていますが、ここでは省略します。

 

それから、超大切なポイントとして、オブジェクトのUVマッピングをしておく必要があります。

オブジェクトにマテリアルを割り当てた後、オブジェクトを選択し編集モードにします。

Aキーで全頂点を選択したのち、UVメニューから「展開」を選びます。

これもUV展開って何?とか、細かい調整とかもした方が良いのですが、ここでは割愛します。(ググってみてください)

とにかく重要なのは、3DモデルのUVマッピングがされていないとこの後ksEditorに取り込むときにksEditorがクラッシュしてしまうということです。

(これはたいころさんに教えていただきました。ホント、ありがとうございます~!)

 

モデルの下準備が出来たら、アーマチュアを追加していきます。

モデルを選択して、原点をジオメトリへ移動。モデルの中心に原点が移動します。

Shift+Sで3Dカーソルをモデルの原点に移動。追加から「アーマチュア」→「単一ボーン」を選択すると、3Dカーソル部分にボーンが一つできます。

ボーンを選択して編集モードに切り替え。ボーンが黄色い線で囲われます。

この状態で、サイズを変更したり、新たにボーンを追加(丸い部分を選択してEキーを押すとそこから生えてくる。)して骨となる形を追加していきます。

アーマチュアの名前が全角文字になっていますので、半角文字に修正します。

 

で、ボーンを追加した結果はこんな感じになります。

 

アーマチュア・ボーンの追加について詳細はググってみてください。(他力本願)

ボーン追加ができたら、オブジェクトにウェイト設定します。

右上のツリー部分で、まずオブジェクトをクリック、続いてアーマチュアをCtrlキー+左クリック、Ctrl+Pでペアレント対象メニューを開き、「自動のウェイトで」を選択。

すると、オブジェクトに自動でウェイトが設定されます。

動きがおかしいときは、ここでウェイトペイントを使って修正しますが、今回は自動設定で特に問題なかったのでこのまま使いました。

 

ここまで作ったデータをいったん保存し、エクスポートします。アーマチュアの選択を忘れないように注意します。

そしてエクスポートしたfbxをksEditorで読み込みます。

繰り返しになりますが、オブジェクトのUVマッピングが設定されていないと、fbxを読み込んだ時、ksEditorがクラッシュして消えます。(エラーもログも何も出ないです。)

車作成と同様、各種マテリアルやシェダーの設定を行います。

アーマチュアで制御されているオブジェクトのシェダーは、必ずksSkinnedMeshかksSkinnedMesh_NMDetailのどちらかであることが必須です。(ksEditor用のiniファイルが存在していなければ、勝手にksSkinnedMeshが選択されます)

設定出来たら、kn5を作って、モデルは完成です。

 

blenderのファイルを複製して走行用のアニメーション作成に入ります。

上記で追加したボーン一つ一つにアニメーションを設定する方法でもよいのですが、全体のバランスを取りながら設定していくのは結構大変だと思います。

ドライバのrigと同じように、各ボーンの動きを制御するためのオブジェクトを追加し、そのオブジェクトとボーンをIK(インバースキネマティスク)で紐づけます。

この辺の作業は説明し始めると、超絶長くなります・・・。しかもassettocorsaともはや関係ない・・・。完全にBlenderの世界ですよね。
もしここの部分を知りたい!という方はお知らせください。別途ご説明の方法を考えます。(^^;

IKの設定で位置のウェイトと回転両方を連携させておくと、位置だけでなく向きも変更できるようになるので、便利です。

今回のチョコボでは頭としっぽ、あと左右の足で合計4つのオブジェクトを作りIKでボーンに紐づけました。

その結果はこんな感じ。

あとは、ドライバのrigと同じ要領で、青い四角のオブジェクトを動かしてアニメーションを設定していくと、各ボーンがそれに追従します。

これで大まかな動きは設定し、あと細かい動き(全体を上下に揺らすとか、足の前後の爪ぶぶんとか)のアニメーションはボーンに個別設定してきます。

 

アニメーションの設定が出来たら、アニメーションファイルを作ります。

こちら、fbxで出力して、ksEditorで読み込んで、ksanimを作って、というプロセスでもよいのかもしれませんが、省力化(いつもこればっか)します。

アーマチュア(上記例ではchocobo)を選択した状態で、エクスポートメニューからAssetto Corsa animationを選択。(このエクスポートアドオンの導入については過去記事見てください。)

「選択したオブジェクト」と「Fix DRIVER: Objects」を選択して、ksanimをエクスポートします。出来たksanimはcar modのanimationsフォルダに入れて、ext_config.iniで動かす設定をしてください。

 

これで、先に作ったオブジェクトとこのアニメーションにより、assettocorsa内でcar modとして動作します。

(タイヤもハンドルも無いですけど…)

 

3Dのモデルにアニメーションを設定して、car modとして動かす方法は以上です。

今回のモデルでは、単純に足を動かして走るというアニメーションを作りました。(雑な作りですが)

理論上はこの方法で、どんなモデルでも自由なアニメーションを設定してcar modとして動かすことが出来るということになります。

さらにassettocorsaの可能性は広がりますが、もはや車ではないので、assettocorsaが目指す世界観とは全く違う方向ですね・・・。ここは人によって好みが分かれるところかと。

使い方によっては、例えば助手席にドライバとは別のキャラクタを載せて、そのキャラに好きなアニメーションさせるとか、そんなことにも応用できるんじゃないかと思います。

 

chocobo modを複製してドライバ設定を変更し、並べて走るとこんな感じになります。

youtu.be

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