UE4 アセットロード周り
-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
Slideshare対応ダミー
自己紹介
● Twitter: com04
● ゲームプログラマー
● 最近は最適化
● 横浜×酒×UE4
3
自己紹介
● マーケットプレイスに出品しました
− ComMaterialTools
● https://www.unrealengine.com/marketplace/commaterialtools
● マテリアル検索の便利ツール
● 過去スライド
− https://www.slideshare.net/com044/presentations
● エンジン改造ってどうなの?
● マテリアル基礎・初級
● UE4でのチーム製作
● アニメーションBP基礎
● もっとアニメーションBP
● LODs for Optimization -Beginner-
● エンジンの内部挙動について 4
もくじ
● アセットがロードされたか確認する方法
○ Develop用
○ Shipping用
● マテリアルのテクスチャ
○ TextureParameter2D
○ マテリアル関数の引数のPreview
○ TextureObjectを渡されるTextureSample2D
○ 繋がってないTextureObject
● パーティクルのPreview用メッシュ
version: UE4.20.1
はじめに
アセットを設定した際にメモリにロードされるかを検証した
情報です。
主にWindowsパッケージングした際を調べました。
間違ってたらごめんなさい。
アセットがロードされたか確認する方法
アセットがロードされたか確認する方法
Develop用
アセットがロードされたか確認する方法 - Develop用
Develop用。パッケージ版を起動して、「@」キーを2回押し
て下記のような画面に
アセットがロードされたか確認する方法 - Develop用
obj list Class=<アセット種類>
と打ち込むと、読み込んだアセットが一覧で出てくる
● obj list Class=Texture2D
○ テクスチャ
● obj list Class=SkeletalMesh
○ スケルタルメッシュ
アセットがロードされたか確認する方法
Shipping用
アセットがロードされたか確認する方法 - Shipping用
Shippingだと「@」キーでのコマンド欄が表示されない。な
ので、BP側で仕込みを入れる。
アセットがロードされたか確認する方法 - Shipping用
適当なBPを用意して、調べたいアセット型で「Soft Object
Reference」で変数を作成する
アセットがロードされたか確認する方法 - Shipping用
BPのGraphに先程の変数を出して、「Resolve Soft
Reference」を使用する。
アセットがロードされていなかったら、Noneが返ってくる。
(ハズ)
アセットがロードされたか確認する方法 - Shipping用
PrintString等はDevelopでしか動作しないので、UMGのテ
キスト等を使って結果を表示する
マテリアルのテクスチャ
マテリアルのテクスチャ
TextureParameter2D
マテリアルのテクスチャ - TextureParameter2D
マテリアルのTextureParameter2Dノードにテクスチャを設
定
マテリアルのテクスチャ - TextureParameter2D
マテリアルインスタンス側でテクスチャを上書き
マテリアルのテクスチャ - TextureParameter2D
ゲーム中ではマテリアルインスタンスのみ使用
(ノードに設定したデフォルトは一切使用されない)
マテリアルのテクスチャ - TextureParameter2D
パッケージ化した状態で確認。ロードされている。
Develop / Shipping両方で確認。
マテリアルのテクスチャ - TextureParameter2D
マテリアルインスタンスで上書き前提の
TextureParameter2Dノードならダミー用の小さいテクス
チャを設定しておきましょう
マテリアルのテクスチャ
マテリアル関数の引数のPreview
マテリアルのテクスチャ - マテリアル関数の引数のPreview
マテリアル関数の引数に「Texture2D」を指定した際の
Previewに使うTextureObject。
あくまで確認用でマテリアル側では出てこない
マテリアルのテクスチャ - マテリアル関数の引数のPreview
マテリアル関数を使用しているマテリアル内では引数に
TextureObjectを引き渡してる
マテリアルのテクスチャ - マテリアル関数の引数のPreview
パッケージ化した状態で確認。ロードされている。
Develop / Shipping両方で確認。
マテリアルのテクスチャ - マテリアル関数の引数のPreview
Previewが必要なタイミングが終わったらダミー用の小さい
テクスチャに差し戻しておきましょう。
(何気にエンジン内のコンテンツでも幾つか……)
マテリアルのテクスチャ
TextureObjectを渡されるTextureSample2D
マテリアルのテクスチャ - TextureObjectを渡されるTextureSample2D
TextureSample2Dノードにテクスチャを設定。
けどTexピンでTextureObjectを受け取っている場合。
プレビューにすら一切出てこない。
マテリアルのテクスチャ - TextureObjectを渡されるTextureSample2D
パッケージ化した状態で確認。ロードされている。
Develop / Shipping両方で確認。
マテリアルのテクスチャ - TextureObjectを渡されるTextureSample2D
TextureSampleノードでテストした後、引数を追加してTex
ピン繋ぐとか良くある。注意しましょう
マテリアルのテクスチャ
繋がってないTextureObject
マテリアルのテクスチャ - 繋がってないTextureObject
そもそも何にも繋がってないTextureObjectノード
マテリアルのテクスチャ - 繋がってないTextureObject
パッケージ化した状態で確認。ロードされている。
Develop / Shipping両方で確認。
マテリアルのテクスチャ - 繋がってないTextureObject
グラフを作り直した際に、古いのを置いておく等も駄目。
繋がっていないから、と油断せずに気をつけよう。
マテリアルのテクスチャ
ちなみにこれら4パターンとも、
ReferenceViewerを見ると参
照が繋がっている。
パーティクルのPreview用メッシュ
パーティクルのPreview用メッシュ
パーティクルシステムの「Skel Vert/Surf Location」モ
ジュールには確認用の
メッシュ設定枠がある
パーティクルのPreview用メッシュ
パッケージ化して確認するとロードされていない。
Developでもロードされていない。
パーティクルのPreview用メッシュ
ただ、これはReferenceViewerで見ると参照されている。
パーティクルのPreview用メッシュ
Referenceされていても、ロードされずに済む要因はソース
コード側で、該当のアセット変数が
「WITH_EDITORONLY_DATA」でパッケージ時は除外さ
れているから。
(ソースコード読む人以外はパッケージングして確認するしか無いネ……)
まとめ
まとめ
● マテリアル内のテクスチャは気をつける
○ 大抵使ってなくてもアウト
○ 間違って入っても大丈夫なダミー用の極小テクスチャを用意し
ておく
● 基本的にReferenceViewerで確認して繋がっていたら
パッケージ化しても駄目
○ パーティクルのEditor用メッシュとか例外は有り
以上!

UE4 アセットロード周り-アセット参照調査-