2020/11/18(水) [n年前の日記]
#1 [godot] Godot Engineで3Dモデルデータをインポート
Godot Engine 3.2.3 x64 を使って3D表示の簡単なシューティングゲームっぽいものを作る。
今回は、3DCGソフト blender 2.83.9 x64 LTS で作成した飛行機(自機)や敵のモデルデータをインポートしたい。
今回は、3DCGソフト blender 2.83.9 x64 LTS で作成した飛行機(自機)や敵のモデルデータをインポートしたい。
◎ 自機のモデルデータをblenderからエクスポート。 :
blender で飛行機っぽいモデルデータを作ってみた。CC0 / Public Domain ってことで。中には blender用のファイル airplane_type_b.blend やテクスチャ画像が入っている。
_airplane_type_b_20201108.zip
Godot Engine はいくつかの3Dモデルデータフォーマットに対応しているけれど、アニメーションを含まない形状データだけなら glTF 2.0 でやり取りするのが良さそうな気がする。glTF 2.0 なら、他のフォーマットと違ってテクスチャもそのまま反映されるので。
blenderから glTF 2.0形式でエクスポートする。ファイル → エクスポート → glTF 2.0 (.glb/.gltf)を選択。
フォーマットは「glTFバイナリ (.glb)」にした。その他の設定はスクリーンショットを参考に。airplane_type_b.glb としてエクスポート。
_airplane_type_b_20201108.zip
Godot Engine はいくつかの3Dモデルデータフォーマットに対応しているけれど、アニメーションを含まない形状データだけなら glTF 2.0 でやり取りするのが良さそうな気がする。glTF 2.0 なら、他のフォーマットと違ってテクスチャもそのまま反映されるので。
blenderから glTF 2.0形式でエクスポートする。ファイル → エクスポート → glTF 2.0 (.glb/.gltf)を選択。
フォーマットは「glTFバイナリ (.glb)」にした。その他の設定はスクリーンショットを参考に。airplane_type_b.glb としてエクスポート。
◎ Godot Engineにインポート。 :
◎ Godot Engine で開く。 :
インポートした .glb を右クリックして「シーンを開く」を選択。
確認ウインドウが開く。とりあえず「新規の継承」を選択。
Godot Engine のエディタ画面内にモデルデータが表示された。
Godot Engine のシーンとして保存しておく。res://assets/ の下に、airplane_type_b.tscn として保存した。
確認ウインドウが開く。とりあえず「新規の継承」を選択。
Godot Engine のエディタ画面内にモデルデータが表示された。
Godot Engine のシーンとして保存しておく。res://assets/ の下に、airplane_type_b.tscn として保存した。
◎ プレイヤーのモデルデータを差し替える。 :
今まで仮で表示していたプレイヤーキャラのモデルデータを差し替える。
プレイヤーのシーン、Player.tscn を開いて、新規インスタンスを読み込むボタンをクリック。airplane_type_b.tscn を開く。
Player の下に airplane_type_b ノードとして追加された。
PlayerModel の下にドラッグして移動して、向きや大きさを変更する。
今まで表示していた仮モデルは、目のアイコンをクリックして非表示にする。仮モデルを今後一切使わない予定なら、右クリックして「削除」してしまってもいい。
アタリ範囲を修正。CollisionShape を選択して大きさや位置を修正する。
シーンを保存して動作確認。Mainシーンを開いてF6キーを押す。
これで、プレイヤーキャラのモデルデータを、今回インポートしたモデルデータで差し替えることができた。
プレイヤーのシーン、Player.tscn を開いて、新規インスタンスを読み込むボタンをクリック。airplane_type_b.tscn を開く。
Player の下に airplane_type_b ノードとして追加された。
PlayerModel の下にドラッグして移動して、向きや大きさを変更する。
今まで表示していた仮モデルは、目のアイコンをクリックして非表示にする。仮モデルを今後一切使わない予定なら、右クリックして「削除」してしまってもいい。
アタリ範囲を修正。CollisionShape を選択して大きさや位置を修正する。
シーンを保存して動作確認。Mainシーンを開いてF6キーを押す。
これで、プレイヤーキャラのモデルデータを、今回インポートしたモデルデータで差し替えることができた。
◎ 敵のモデルデータをblenderからエクスポート。 :
敵のモデルデータをエクスポートする。これも blender で作成した。CC0 / Public Domain ってことで。
_enemy_type_b_20201108.zip
解凍すると、blender用のファイル、enemy_type_b_fix.blend が入っている。このモデルデータは、両手がくるくると回るアニメーションデータを含んでいる。
現時点では、こういった複数のアニメーションを持っているデータに関しては、ESCN (.escn) 形式で ―― Godot Engine にとってネイティブ(?)な形式でエクスポートしておくと、比較的真っ当にアニメーションのデータをエクスポート・インポートできるらしい。
blender から ESCN形式でエクスポートするためにはアドオンのインストールと有効化が必要になる。該当アドオンはgithub上で公開されてる。
_godotengine/godot-blender-exporter: Addon for Blender to directly export to a Godot Scene
blenderのユーザ設定フォルダは、Windows環境ならおそらく以下にあるはず。
io_scene_godotフォルダをコピーしたらアドオンを有効化する。
敵のモデルデータを blender からエクスポートする。ファイル → エクスポート → Godot Engine (.escn) を選択。
保存先フォルダは、Godot Engine のプロジェクトフォルダ\imports\ を指定しておく。その他の設定はスクリーンショットを参考に。enemy_type_b_fix.escn というファイル名で保存した。
_enemy_type_b_20201108.zip
解凍すると、blender用のファイル、enemy_type_b_fix.blend が入っている。このモデルデータは、両手がくるくると回るアニメーションデータを含んでいる。
現時点では、こういった複数のアニメーションを持っているデータに関しては、ESCN (.escn) 形式で ―― Godot Engine にとってネイティブ(?)な形式でエクスポートしておくと、比較的真っ当にアニメーションのデータをエクスポート・インポートできるらしい。
blender から ESCN形式でエクスポートするためにはアドオンのインストールと有効化が必要になる。該当アドオンはgithub上で公開されてる。
_godotengine/godot-blender-exporter: Addon for Blender to directly export to a Godot Scene
- 上記ページ内の、「Code」と書かれた緑色のボタンをクリック → 「Download ZIP」を選択。godot-blender-exporter-master.zip がダウンロードできる。
- 解凍して、io_scene_godot というフォルダを blender のユーザ設定フォルダにコピーすればインストールできる。
blenderのユーザ設定フォルダは、Windows環境ならおそらく以下にあるはず。
C:\Users\<ユーザアカウント名>\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\
io_scene_godotフォルダをコピーしたらアドオンを有効化する。
- blender を起動して、編集 → プリファレンス → アドオン。
- 検索欄に「godot」と打ち込めば「Import-Export: Godot Engine Exporter」がリストアップされる。
- チェックを入れて有効化。
敵のモデルデータを blender からエクスポートする。ファイル → エクスポート → Godot Engine (.escn) を選択。
保存先フォルダは、Godot Engine のプロジェクトフォルダ\imports\ を指定しておく。その他の設定はスクリーンショットを参考に。enemy_type_b_fix.escn というファイル名で保存した。
◎ Godot Engineで敵のモデルデータを開く。 :
Godot Engine で敵のモデルデータを開く。enemy_type_b_fix.escn をダブルクリック。
Godot Engine のエディタ画面内に、敵のモデルデータが表示された。
Godot Engine のシーンファイルとして保存しておく。res://assets/ の下に enemy_type_b_fix.tscn として保存した。
Godot Engine のエディタ画面内に、敵のモデルデータが表示された。
Godot Engine のシーンファイルとして保存しておく。res://assets/ の下に enemy_type_b_fix.tscn として保存した。
◎ アニメーション設定を修正。 :
この敵のモデルデータはアニメーションデータを持っているけど、発生と同時にアニメーションを再生したり、アニメーションをループさせたりしたい。そのために少しだけ設定をし直す。
設定を変更するために、継承をクリアしておく。enemy_type_b_fix を右クリックして「継承をクリア」。
アニメーションを管理しているノード、AnimationPlayer を選択して、自動再生とループ再生のアイコンをクリックして有効にしておく。
この状態で、enemy_type_b_fix.tscn を一旦保存。
設定を変更するために、継承をクリアしておく。enemy_type_b_fix を右クリックして「継承をクリア」。
アニメーションを管理しているノード、AnimationPlayer を選択して、自動再生とループ再生のアイコンをクリックして有効にしておく。
この状態で、enemy_type_b_fix.tscn を一旦保存。
◎ 敵のモデルデータを差し替える。 :
敵のモデルデータを差し替える。res://assets/EnemyZako.tscn を開く。インスタンス追加アイコンをクリック。enemy_type_b_fix.tscn を開く。
enemy_type_b_fix.tscn が表示された。
Mainシーンを開いて、F6キーを押して動作確認。
これで、敵のモデルデータも差し替えることができた。
位置や大きさについては、なんとなくイイ感じの見た目になるように、その都度修正のこと。
次回は、背景についてもモデルデータを差し替えたい。
enemy_type_b_fix.tscn が表示された。
- enemy_type_b_fix の位置、大きさ、向きを調整。
- enemy_type_b_fixノードを EnemyZakoModel の下に配置。
- 今まで表示していた仮モデルは非表示にする。
- CollisionShape を選択してアタリ範囲を修正。
Mainシーンを開いて、F6キーを押して動作確認。
これで、敵のモデルデータも差し替えることができた。
位置や大きさについては、なんとなくイイ感じの見た目になるように、その都度修正のこと。
次回は、背景についてもモデルデータを差し替えたい。
[ ツッコむ ]
以上です。