Unreal Engine 5を使ってみる その17(開発中に気になったこと集)
はじめに
今回はUnreal Engine 5で開発しながらちょっと気になったことを集めてみました。
Unreal Engineを使い始めて1年ぐらいになりますが、基本的に外部と通信してPythonやNode-REDを併用しているので、まだまだUnreal Engineに関する知見は浅いです。ノードの挙動やストレージ容量の問題など、気になることがいろいろあります。
▼以前の記事はこちら
タッチディスプレイ用のジョイスティックが表示される
プロジェクトを作成したときに、タッチディスプレイ用のジョイスティックが表示されることがありました。
▼薄く表示されています。

編集→プロジェクト設定から、エンジン-インプットの「タッチインターフェースを常に表示」をオフにすると解決しました。
▼オフにしてから起動すると、表示されなくなりました。


Possessすると球体が表示される
例えばロボットアームのブループリントをPossessしたときに、謎の球体が表示されることがありました。
▼こちらの球体です。

▼この動画にも映り込んでいます。
ゲームモードを変更すると、表示されなくなりました。
▼FunctionalTestGameModeにすると表示されませんでした。


ゲームモードによって、デフォルトのポーンクラスが異なるようです。このポーンクラスが残っていたのではないかと思います。
プレイ中にマウスカーソルを表示したい
デフォルトではプレイを開始したときにマウスカーソルが非表示になって、ゲーム画面の外に出せないです。これでは他のソフトウェアを併用するときに不便だったので、常に表示するようにして使っています。
▼レベルブループリントでShow Mouse Cursorを有効にすると表示されるようになりました。

これでプレイを開始してもマウスが表示されたままになりました。
なおゲーム画面上からマウスが離れると、追従しなくなるようです。
For Each LoopにDelayを入れたい
カメラを大量に配置して、順番に撮影するフローを作成していました。カメラを配列に入れて、For Each Loopで順番に要素を代入して処理するようにしていたのですが、一瞬で処理が終わるような挙動が見られました。
▼それぞれのカメラでスクリーンショットを行っていました。

▼スクリーンショットの方法については、以下の記事で紹介しています。
スクリーンショットに時間がかかるのですが、その処理が終わる前にすべての要素が代入されていたようでした。例えば1番目から52番目までのカメラの撮影画像が保存されることを意図していたのに、52番目だけ保存されていました。Loop BodyにDelayを入れても変わりませんでした。
For Each Loopのマクロを編集してDelayを入れる方法が紹介されていたので、試してみました。
▼以下のページを参考にしました。
▼Loopの要素ごとの処理に、Delayが入るようにしました。

これでノードに設定したDelayの時間だけ、処理を待つようになりました。それぞれのカメラでの撮影も行うことができました。
ただしノードの処理をDelayで待つのはPCの処理速度によっても変わりそうなので、変数で順番に処理することもあります。ノードが複雑になりますが、処理が終わってから次に進むので、そちらの方が確実かもしれません。For Loop無し縛りですね。
グラフィック処理の性能を制限したい
私のPCはGPUの性能がそれほど高くないので、いつも性能を制限しています。
▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。
特にオープンワールドのプロジェクトを作成すると、処理が重くなっていました。
▼GPUが不足していると表示されます。

場合によってはフリーズして強制終了してしまうので、エンジンの拡張機能設定で制限しています。
▼中なら大体動きます。

▼もう少し性能のいいPCでYOLOによる物体検出と併用したときは、低でないとリアルタイム処理が厳しそうでした。City Sampleはさすがに規模が大きいです。
床のマテリアルをタイル表示したい
床の大きさを変更したときに、マテリアルも拡大縮小することがありました。
▼Blankで作成したレベルの、デフォルトの床はこんな感じ。

▼10倍の大きさにすると、見た目が変わります。


Megascansの木目の床にすると、大きくなっているのが分かりやすいです。
▼床を大きくすると、不自然な大きさの木目になっています。


どう調べたら解決策が出てくるのか分からなかったのですが、UVの拡大と縮小に関する記事が参考になりました。
▼こちらの記事です。
https://zenn.dev/yukiya25/books/632aed9cf3a2be/viewer/1ff497
ScaleUVsByCenterで変更しました。
▼数値はConstantノードで入力しています。

床を10倍の大きさにしていたので、Texture Scaleを0.1にしています。
▼床のタイルの表示が小さくなりました。

容量が大きいので保存先を変えたい
私のPCのCドライブは500GBで、2ndスロットのSSD1TBと外付けSSDの1TBもあります。Cドライブはできるだけ空けておいて、他のストレージにインストールするようにしているのですが、それでもCドライブの容量が少なくなっていました。
Unreal Engineのエンジン部分は容量が大きいです。これはエンジンをインストールするときにCドライブ以外を選択して、他の場所にインストールしています。
▼Unreal Engine 5.5で37GBぐらいあります。5.3、5.4もインストールしているので、これだけで100GBぐらいになります。

プロジェクトを新規作成するときに容量が足りないと表示されました。調べてみると、プロジェクトを作成するときの一時フォルダであるVaultCacheのデフォルトの保存先がCドライブになっていました。
▼こちらの記事で紹介されていました。
https://historia.co.jp/archives/20469
確かにVaultCacheにいろいろ保存されていました。
▼これだけで130GBぐらい使っていました。

Epic Games Launcherで設定すると、保存先を変更できました。
▼設定→ダウンロード設定に移動すると、保存先を指定できます。


これで容量問題は解決しました。
▼今ではFabライブラリだけで280GBぐらいあります。

最後に
今後も開発しながら、ちょっと気になったことがあったらまとめようと思っています。マテリアルやアニメーションなどは深入りするとややこしそうな印象があるのですが、ロボットのシミュレーションをするのに取り組みたいところです。