Unreal Engine 5を使ってみる その19(glTFRuntime、実行中に3Dモデルの取り込み)

はじめに

 今回はUnreal Engineの実行中に3Dモデルを取り込むことができる、glTFRuntimeプラグインを試してみました。

 最近は3Dモデルも生成AIで生成できるようになってきたので、相性が良さそうだなと思っています。

▼Showcaseとして、デモ動画がありました。コリジョンも設定して取り込めるようです。便利に使えそうですね。

▼以前の記事はこちら

Unreal Engine 5を使ってみる その1(Datasmith、DUALSHOCK 4)

はじめに  ロボットのシミュレーションをしようということで、Unreal Engine 5を触ることになりました。これまでハードウェアとソフトウェアの両面でロボットの製作をし…

Unreal Engine 5を使ってみる その9(Remote Control API、Node-RED)

はじめに  以前HTTP Blueprintを使ってUnreal Engine 5(UE5)からNode-REDへの通信は試したのですが、今回はその逆です。  HTTP Remote Control APIを使ってNod [&hell…

プラグインを追加する

▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。

ちょっと買い物:新しいノートPCとSSDの増設

はじめに  今回はこれまで使っていたPCが壊れたので買い替えましたという話です。  以前はよく分からないGPUが載っていたノートPCを使っていたのですが、最近はUnreal E…

 glTFRuntimeについては、Fabでも追加できます。今回はGitHubに公開されているものを利用します。

▼Fabでのページはこちら

glTFRuntime | Fab

▼GitHubでのページはこちら。READMEに書かれていますが、STLやFBXなどの他のデータ形式についてもプラグインが用意されています。

rdeioris/glTFRuntime: Unreal Engine Plugin for loading glTF files at runtime

 Releasesのページから、バージョンにあったものをダウンロードします。

▼Releasesのページはこちら

Releases · rdeioris/glTFRuntime

 今回はUnreal Engine 5.5の環境に追加するので、glTFRuntime_20241122_ue55.zipをダウンロードして解凍しました。その後、Unreal Engineのプロジェクトの、Pluginsフォルダに追加しました。

▼以前の記事でも利用していたXV3DGSも同じ手順で追加しています。

Unreal Engine 5を使ってみる その15(Scaniverseのデータ取り込み2回目、SuperSplat)

はじめに  今回はScaniverseで3DスキャンしたデータのUnreal Engine 5 (UE5)への取り込みについて、再び試してみました。  以前の取り込み方だとScaniverseでの見た目と…

 その後、プロジェクトを起動します。

▼ビルドが必要でした。

▼プラグインが追加されました。

3Dモデルを実行中に追加する

サンプルの実行

 glTFRuntimeのドキュメントを参考に進めます。

▼ドキュメントはこちら

https://github.com/rdeioris/glTFRuntime-docs

 ドキュメントにサンプルモデルが含まれています。

▼元々はこちらのリポジトリにあったものだそうです。

https://github.com/KhronosGroup/glTF-Sample-Models

 このglTF-Sample-Modelsのモデルを取り込んでみます。作成中だったワールドで試してみました。

▼レベルブループリントで以下のようにノードを配置しました。

▼以下のURLのgltfファイルを読み込むようにしています。アクセスすると、ファイルの中身が表示されます。

https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Duck/glTF-Embedded/Duck.gltf

 スポーンする位置は原点ではなく、プレイヤーの前方にスポーンするようにしています。この状態で実行してみました。

▼ゲーム開始時に、アヒルのモデルが表示されました!

 glTF Load Asset from Url以外は既存のノードですね。

 このモデルにはコリジョンがありませんでした。デモ動画にもあった、コリジョンを考慮して取り込む方法を試してみました。

▼以下のREADMEの記述を参考にしました。

https://github.com/rdeioris/glTFRuntime-docs/blob/master/README.md#collisions

 画像のノード通りに接続してもスポーンしなかったのですが、先程のようにSpawn Actorに接続するとスポーンしました。

▼いろいろ試した結果、Static Mesh Configに接続するとコリジョンを設定できました。

 Box CollisionやSphere Collisionの大きさの設定もできるようですが、今回はしていません。Make GlTFRuntime Static Mesh ConfigのBuild Simple Collisionだけ有効にして実行してみました。

▼起動後にF8で操作を離れてコリジョンを確認したところ、直方体のシンプルなコリジョンが設定されていました。

 Complex Collisionも適用したかったのですが、チェックボックスを有効化するだけでは適用されませんでした。

▼コリジョンが全く表示されていません。実際すり抜けていました。

▼Build Simple Collisionを有効にして、Collision ComplexityをUse Complex Collision As Simpleにするとメッシュのような線が表示されました。

 First PersonのRifleの球を当ててみたのですが、アヒルのコリジョンが無い部分でも跳ね返っているように見えました。Rifleの挙動が特殊なのかもしれませんが、衝突判定はSimple Collisionのままの可能性もあります。

 特に衝突判定にこだわらないのであれば、Simple Collisionで十分だと思います。

▼glTFRuntimeConvexCollisionsというものがあったので、こちらの方が適切に設定できるかもしれません。

https://github.com/rdeioris/glTFRuntimeConvexCollisions

生成AIのモデル取り込み

 以前LumaAIのGenieで、生成AIによる3Dモデルの生成を試していました。Genieで生成したモデルも取り込んでみました。

▼こちらの記事で試していました。

Luma AIのGENIEを使ってみる(生成AIによる3Dモデルの生成、3Dプリンターでの出力)

はじめに  今回はAIツールのGENIEで、3Dモデルを生成してみました。いろいろ調べているときに、参考になる記事を見つけました。 ▼こちらの記事で紹介されていました。  …

▼今回はロボットっぽいモデルを生成してみました。

 ゲーム開始時にファイルの絶対パスを渡してファイルを読み込み、スポーンさせるようにしてみました。

▼レベルブループリントでglTF Load Asset from Filenameを利用してファイルを読み込み、先程の関数を呼び出しています。

▼スポーンできました!

 なお、今回はエディタで利用しましたが、パッケージ化したビルドでも利用できるようです。

▼以下に注意事項があります。

https://github.com/rdeioris/gltfruntime-docs#notes-when-packaging-a-game

最後に

 生成AIで生成したモデルを実行中に取り込めたので、表現の幅が増えそうです。モデルの作成と配置をユーザーにも体験してもらうことで、何かできないか考えています。

▼最近VRゴーグルのハンドトラッキングで遊んでいたのですが、組み合わせて使えそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です