かなり昔の問題ですが、UE4.13以前のバージョンを使っている状態で、Windows 10のCreators Updateを適用すると、右クリック時などのメニュー全般が表示されないという問題があります。
4.14以降を使っている場合には既に修正済みなため問題は発生しませんが、もし書籍などを使って学習している際に古いUE4を使っていると問題により、学習が進めらないという問題が発生します。
実際にこの問題に遭遇している方を発見したため、念のために対処方法を記事化しておきたいと思います。
続きを読むUE4.17からアセットマネージメントフレームワーク(Asset Management Framework)と呼ばれるものが正式版として利用可能になりました。この仕組みは必要のない人には全く不要の機能です。UE4のアセットのロードやアンロードは自動的に行われており、それらを細かく制御する必要がありませんでした。
ただし、コンソールゲーム開発やモバイルゲーム開発ではこのようなやり方をとっていると致命的な問題になってきます。メモリーが足りていない状況や、一気にアセットを読み込むと負荷が問題になるようなケースがありますが、このような場合にアセットマネージメントフレームワークを使うことで、より細かいアセットの読み込みが可能となります。
では早速アセットマネージメントフレームワークもとい、アセットマネージャーについて解説をしていきたいと思います。
続きを読む現在UE4.17のPreview 2が既にダウンロード可能となっています。
4.17もかなりの追加機能があり、まだその全容は掴めていません。今回は4.17で追加された、ブループリントを使ってエディタースクリプティングによる、アセット操作をやってみます。
エディタースクリプティングはブループリントやその他のスクリプト言語からUE4のエディター機能が呼び出せるようになる仕組みです。公式ではPythonによるサポートも追加される予定です。
以前にもBlutilityという機能を紹介したことがありますが、今回はそれを更に推し進めたもののように見えます。
新たに4.17ではブループリントに『Editor Scripting』というカテゴリーが追加されています。特にBlutilityクラスを作成し、その中で『Editor Scripting』のカテゴリーを検索すると、更にノードの数が増えます。
見ているだけで色々できそうです!
事前にBlutilityのアセットをダブルクリックするとイベントが実行されるようにしておきます。
それでは早速これらでどのようなことができるか見てみましょう。
まずは簡単な例として、Asset Toolsと呼ばれるものを作ってアセットを作成してみます。以下のような具合にノードを組んでみました。
これを実行すると、フォルダーが作成されてスタティックメッシュが生成されました。
ただし、このスタティックメッシュは何もメッシュ情報が割り当てられていないため、開こうとするとエディターがクラッシュしてしまいます。現状の方法のまま使用するのはダメなようです。
ひとまずアセットの生成自体は上手くいっているのでよしとしましょう。
次はアセットのインポートを試してみます。
このノードを使うと呼び出した瞬間にダイアログが表示されてインポート処理が実行されます。"Destination Path"にインポートするパスを指定します。
今回はFBXをインポートしようとしてみました。これでそのままOKを押すと…
いつものようにインポートが完了し、スタティックメッシュとして認識されます。でもこれだけだとあまり意味はないですね。
他にも自動的にインポートを行う"Import Assets Automated"やアセットのエクスポートを行う"Export Assets"やアセットのリネームを行う"Rename Assets"が用意されていますが、いずれもなぜか純粋関数になっており、そのままでは呼び出すことが不可能です。
おそらくこの辺りのノードは公開されているけどまだ使用不可能な状態です。近い将来にきっと使えるようにはずです。
エディタースクリプティングには新規レベルを作成する機能がありました。
これで新規レベルが作成され、選択中のアクターをその新規レベルに移動させるという機能です。ただし、4.17 Preview 2現在ではまだこれらの新規作成を行うだけで確実にクラッシュしてしまいます…
しかし間違いなく面白い機能なので、ちゃんと動くと強力そうです。
他にも"New Blank Map"で空のレベルを作成したり、"New Map from Template"でテンプレートから新しいレベルを作成するノードがありますが、こちらも漏れ無くクラッシュしてるのでまだ使えません…
更にレベルを開く機能もあります。
"Load Map with Dialog"ではダイアログを開き、そこからレベルを選択すると、そのマップを開きます。"Load Map"は指定したファイル名のマップを開きますが、やはりこれも開いた瞬間にクラッシュ…
レベル関係は総じてまだこれからといった感じですね。
ソースコントロールが操作できるようにいくつかのノードが追加されています。
指定したファイルをソースコントールに追加したり、チェックアウトができるようになります。更にファイルのコピーを行い、そのファイルをそのままソースコントロール下に追加することができます。
これ以外にもファイルパスを相対パスから絶対パスに変換するノードがあります。
こんな感じで指定してあげると…
プロジェクト相対パスが絶対パスに変換されていることがわかります。"Package Filenames"と"Absolute Filenames"はどちらも絶対パスに変換するノードのようですが、細かい違いまではわかっていません。(そもそもFile NameとPackage Nameの違いは?)
まだこちらも実験的な機能だと思いますので、今後ノードが追加が追加される可能性は高いです。
次はアクターに対する操作です。操作といっても現状はほとんどアクターの状態をとれるノードがほとんど。唯一、"Set Is Temporarily Hidden in Editor"のノードはこのように組むことでエディター内で非表示モードの切り替えができます。
取得できるのは主に『選択しているか?』『編集しているか?』『エディター上で隠されているか』あたりの情報がメインです。
そして次はグループ化です。例えば以下のようにノードを組みます。
更にビューポート上で複数のアクターを選択して、Blutilityを実行すると…
アクターがグループ化されました。これでひとつのピボットで移動などの操作ができます。
他にグループをアクティブ化したり、グループを解除したり、グループをロックするなどの機能が一通りあります。大量のアクターを管理している時などは非常に便利ですね。
"Get All Actors Of Class"ノードなどを使って、特定クラスのアクターのみをグループ化したり、特定タグを持つものをグループ化したりもできるはずです。使い方次第でかなり便利そう。
更にマテリアル関係の操作もあります。
これらはマテリアルの存在をチェックし、そのマテリアルが存在する場合には、Material Interfaceを取得します。存在しない場合にはエラー情報を取得できます。
それとは別に"Material Editing"カテゴリーには更にマテリアルを操作できるノードがあります。例えば以下のようにノードを組みます。マテリアルは予め空のものを作成しておきます。
そしてこれを実行すると…
マテリアル内に指定したマテリアルノードが作成されています。現状では"Connect Material Expressions"ノードを使うとピンとピンのワイヤー接続もできるようですが、この辺りの指定の名前がまだよくわからないので、使い方が曖昧です。
ただし、マテリアルのノード生成までをブループリントのノードから行えるというのは非常に大きい強みとなります。
他にもマテリアルインスタンスやマテリアル関数の更新やセット行うノードや、マテリアルインスタンス内のパラメーターの操作や取得、マテリアルノードの追加や削除、マテリアルのシェーダー再コンパイルなど実に様々なノードがあり紹介しきれません。
現状ではまだまだこれらは追加途中の機能という感じで、まだ実用は難しそうですが本格的に利用できるようになればブループリントだけでマテリアルワークフローの改善ができるようになりそうです。
UE4でライティングを行う際に可動性(Mobility)をスタティック、またはステーショナリーにすることで、ライティングビルドを実行すると、ライトマップ(光と陰の情報)のベイク(焼き付け)を行うことが可能です。
ライティングそのものについては公式ドキュメントを参照してください。
しかしライティングビルドというものはとても時間がかかります。短い場合でも数分、長いと数時間以上かかってしまいます。
そこで複数PCを活用することで、ライティングビルドを分散化してビルド時間を短縮することが可能です。
前提として、複数PCが同一ネットワーク内に存在する必要があります。複数PCが同一ネットワークにあるのを確認したら早速やってみましょう。
続きを読むUE4にはAIを移動させるための機能が沢山あります。
ちょっと多すぎて、いつも移動はできるのに、どれで停止させられるのかわかりづらいですね…
個人的な備忘録も兼ねてまとめておきたいと思います。
まずUE4でAIに移動で使うための機能は大きく2種類あります。
・ブループリントで利用するMoveTo系
・ビヘイビアツリーで利用するMoveTo系
大きく分けると、この2種類ですが、それぞれに色々なノードがあります。
これらの移動系ノードと停止系ノードについて解説していきましょう。
ちなみにビヘイビアツリーの場合には、移動はビヘイビアツリーで行いますが、停止は全てブループリント上で行いますので注意してください。