256Ruru ちゃんを Godot Engine に取り込んで回し蹴りさせたい (3/3)

前回 Mixamo からゲットした流流ちゃんのアニメーションファイルをいよいよ Godot Engine にインポートします。いろいろな方法があるみたいですが、Godot Engine はバージョン 4.3 から .fbx を直接インポートできるようになったので、ここでは直接インポートする方法を採ります。
※ いろいろと試行錯誤する中で、わりとうまくいった方法を備忘録として残すものです。もっと簡単な方法とか正しく手順を踏んだやり方とかがあるかもしれません。
目次
インポートする方法いろいろ
.fbx ファイルを Godot にインポートする方法は、大きく分けて 3 通りあるみたいです:
- Character Animation Combiner で .gltf / .glb ファイルを作ってインポートする
- Blender で .gltf / .glb ファイルを作ってインポートする
- .fbx を直接インポートする
方法 1 は Character Animation Combiner というオンラインサービスを使う方法です。個人的にオンラインサービスにはなるべく依存したくないので、今回は見送りです。方法 2 は私の環境のせいなのかスキル不足のせいなのかよくわかりませんが、うまくいきませんでした。
というわけで本稿では方法 3 を採ります。Godot が .fbx を直接インポートできるようになったのはバージョン 4.3 からということで、わりと最近の話みたいです [1] [2]。
具体的な手順については [3] が大変参考になりました。本稿も基本的にこのページで紹介されている手順にしたがっています。
プロジェクトの作成
ここでは Godot の詳細には立ち入りません。とりあえず .fbx ファイルをインポートできることが確認できればいいので、res:// (ゲームオブジェクト、スクリプト、アセットなどを格納するための仮想パス) の下のフォルダ構成なんかも適当にやってます。
まず図 1 みたいな感じで新規の Godot プロジェクトを作ります。
- プロジェクト名: Ruru256
- プロジェクトパス: /somewhere/Ruru256
- レンダラー: 互換性
- バージョン管理メタデータ: Git
Godot エディタを起動して、ファイルドックで res://Assets/ フォルダを作成します。で、前回までに用意した下記のファイル一式を、エクスプローラーから res://Assets/ へドラッグアンドドロップします (図 2)。
- FastRun.fbx
- Ruru_BaseColor.png
- SadIdle.fbx
- SpinKick.fbx
- T-pose.fbx
一旦 Ctrl+S でプロジェクトを保存します。
Player シーンを作る
続いて Player シーンを新規作成します。シーンのツリー構造はこんな感じ (図 3):
- Player (CharacterBody3D)
- CollisionShape3D
- Node3D
ルートノードは CharacterBody3D です。わかりやすいように「Player」にリネームしてます。今回は当たり判定は不要なので CollisionShape3D は無くてもいいんですけど、無いとルートノード (CharacterBody3D) の横に
「このノードにはシェイプがないため、他のオブジェクトと衝突したり相互作用したりすることはできません。CollisionShape3D または CollisionPolygon3D を子として追加して、そのシェイプを定義することを検討してください。」
という警告がついてしまいます。これじゃ落ち着かないので入れています。その CollisionShape3D の横に警告が付いてますが、これはこのあと消える予定です。
また、Node3D はこのあとインポートする T-pose の向きを変えるために入れています。Mixamo の座標系は Maya 等と同じ右手系 (Y-Up) で +Z が前となるので、Mixamo からダウンロードした .fbx ファイルをそのまま Godot にインポートするとキャラクターは +Z 方向を向きます。これに対して Godot は同じ右手系 (Y-Up) でも -Z が前となります [4]。そこで Node3D の子として T-pose を追加して、Node3D のトランスフォームで (Z じゃなくて) Y を反転させるってことをこのあとやります。
Godot でキャラクターシーンを作るときは、だいたいこの構造が定番らしいです。一旦ここまでを Ctrl+S で保存します。保存先は res://Player.tscn としました。
T-pose を追加する
作った Player シーンに T-pose を追加します。ここからがけっこうややこしいです。
- ファイルドックの res://Assets/T-pose.fbx を Node3D の上へドラッグアンドドロップする (図 4)。
- 上のほうで書いたように、このままでは流流ちゃんが Godot ワールド的に後ろ (+Z 方向) を向いてしまっている。Node3D のインスペクターで [Transform] > [Rotation] > [Y] を 180 度に変更すると前 (-Z 方向) を向く (図 5)。
- T-pose ノードを右クリックして [編集可能な子] を選んで T-pose の子ノードである AnimationPlayer を表示させる (図 6)。
- AnimationPlayer ノードを選択して アニメーションパネルを表示させる (図 7)。
- 現状ではT-pose のアニメーション名が "mixamo_com" になっている。これをわかりやすいように "T-pose" にリネームする (図 8):
- [アニメーション] ボタン > [アニメーションの管理]
- [グローバル] の右端にあるフロッピーアイコンをクリック > [ユニーク化]
- "mixamo_com" になっているところを "T-pose" にリネームして OK ボタンをクリックする。
CollisionShape3D の設定 (必要に応じて)
回し蹴りのアニメーションを追加する
ようやくここまでたどり着きました。回し蹴りのアニメーションを追加します。
- res://Assets/SpinKick.fbx を右クリック > [シーンを開く] (図 12)
- 「Advanced Import なんたら」というダイアログが表示されるので、左側の [シーン] タブから "mixamo_com" を選択する (図 13)。
- ダイアログ右側の [ファイルへ保存] を ON にして、{パス} に res://Assets/SpinKick.res を入力する (同図)。 拡張子は .res じゃなくてもいいかも。
- ダイアログ下部の {再インポート} をクリックする (同図)。
- これで res://Assets/SpinKick.fbx は不要になったので削除してもいい。
- T-pose のときと同様にして [アニメーションの管理] ダイアログを開く。
- [グローバル] の右端にあるフォルダアイコンをクリックして (図 14 上段) 先ほど再インポートした res://Assets/SpinKick.res を選んで開く。
- SpinKick アニメーションが追加された (同図中段)。OK ボタンでダイアログを閉じる。
- アニメーションパネルに戻ると、上部のプルダウンに SpinKick アニメーションが追加されている (同図下段)。プルダウンで選択して再生ボタンを押して確認する。ループ再生を ON にして飽くまで眺めるのもいい。
他のアニメーションもやり方は同じなので省略します。
おわりに
ここまできたら次にやりたいと思うのは、ゲームパッドやキーボードでキャラクターを思いどおりに動かしたい!!ってことです。「J」キーを押したらジャンプするとか、
「ORAORAORAORAORAORAORAORAORA
ORAORAORAORAORAORAORAORAORA
ORAORAORAORAORAORAORAORAORA
ORAORAORAORAORAORAAAAORAAAAAAAAAAAAA
ORAORAORAORAORAORAOORAORAORA
ORAORAORAORAORAORAORAORAORAAAA」
と打ち込んだら怒涛のラッシュをお見舞いするとか。でもやりかたがわからないので、またしばらく Godot の学習に戻ります。

参考サイト
| [1] | Godot Engine 4.3 Release Note https://godotengine.org/releases/4.3/#editor |
| [2] | Introducing the improved ufbx importer in Godot 4.3 https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/ |
| [3] | 【Godot 4.3 Animation】Mixamo fbx 利用時、Blender もナンタラCombiner も使わずにアニメーションを追加する方法 https://ore2mo-dekita.hatenablog.jp/entry/godot4-animation-0001 |
| [4] | Introduction to 3D - Coordinate system https://docs.godotengine.org/en/stable/tutorials/3d/introduction_to_3d.html#coordinate-system |
関連記事
- 256Ruru ちゃんを Godot Engine に取り込んで回し蹴りさせたい (1/3)https://retrotecture.jp/godot/import_256ruru1.html
- 256Ruru ちゃんを Godot Engine に取り込んで回し蹴りさせたい (2/3)https://retrotecture.jp/godot/import_256ruru2.html













