この質問は、以下のスレッドに関連して作成されました: [FastGeo and texture [Content removed]
お世話になっております。
UE5.7を利用していて FastGeoプラグインを試していますが、
TEXTURE STREAMING POOL OVER ~ BUDGET
という警告表示がその機能を利用しているレベルで発生するようになりました。
実際近距離のテクスチャが高解像度になるのにかなり時間がかかるような症状も発生しております
関連スレッドの
s.StreamableAssets.UseSimpleStreamableAssetManager=1
も DefaultEngine.ini に設定してみましたが
症状はかわりませんでした。
こちら他に必要な設定などありますでしょうか?
よろしくお願いいたします
[Attachment Removed]
"s.StreamableAssets.UseSimpleStreamableAssetManager=1"を設定した後、テクスチャが不用意に最大解像度でロードされている状態が続いている状態でしょうか?
“ListStreamingTextures” コンソールコマンドを実行することで各テクスチャのWantedMips(表示面積から計算された理想的なサイズ)やMaxAllowedなどの値が確認できます。不自然に解像度が高くなってプールを圧迫しているものが無いかご確認いただけますでしょうか?
ちなみにFastGeoを無効化するとテクスチャストリーミングはバジェット内に収まっている状態でしょうか?
FastGeo無効化版と有効化版のListStreamingTexturesの出力を比較することでどのあたりに問題があるか推測できるかもしれません。
[Attachment Removed]
すいません ListTextures と間違えて確認しましたが、一応その情報だけ記載しておきます
FastGeo 無効だとバジェットオーバーのエラーは発生していません。
FastGeo 有効にして+ワールドセッティングにFastGeoを利用する設定をしたときのみに
ListTextures に存在するテクスチャが1000以上 それ以外にも FastGeo利用時のほうがCurrentSizeが大きいものが多数あるようでした。
そのすべてが TextureGroup_World or TextureGroup_WorldNormalMap のカテゴリテクスチャでした。
追記 FastGeo 利用時は s.StreamableAssets.UseSimpleStreamableAssetManager=1 も設定した状態となります
[Attachment Removed]
ListStreamingTextures で確認しました
以下同じレベルと場所・状況での結果
FastGeo無効時
1024x1024以上のサイズ要求しているテクスチャ数:214
FastGeo有効時
1024x1024以上のサイズ要求しているテクスチャ数:583
ListStreamingTextures ででてくる総テクスチャ数は大きくはかわりませんでした
( 無効時 3460 有効時 3495 )
[Attachment Removed]
ご調査ありがとうございます。
最大解像度に固定されているわけではないようなので、SimpleStreamingManagerは有効になっているようです。
次の調査としてFastGeoの無効時と有効時に特に差があるテクスチャをいくつか選定し、
InvestigateTexture [テクスチャ名]のコマンドを入力するとテクスチャに紐づいたSceneProxy毎の位置やバウンズのサイズ、UV密度などから作り出されるスクリーンサイズが出力されます。このスクリーンサイズに応じてストリーミングが要求されています。
この値が適切かどうか調べると原因が特定できそうです。
恐らくFastGeoと同時にISM化のセルトランスフォーマーも設定されていると思うのですが、大きいセルサイズを設定している場合にメッシュがセル全体にまばらに存在しているためにコンポーネントのバウンズが極端に大きくなり、上記スクリーンサイズが極端に大きくなってしまうことがあり得ます。
対処のためにセルトランスフォーマーISMの実装をベースにして適切なバウンズサイズの範囲内でISMを割り当てるような実装が機能するかもしれません。
[Attachment Removed]
すいません テクスチャの件は明日中に確認させていただきますが、
FastGeo関連で別途質問があります。
多くのInstancedStaticMesh コンポーネントを持つ建物などが、Packed Level Actor をつかって作成され、それらが密集して配置されている場所で、UWorld::UpdateLevelStreaming の負荷が問題となっています。
こちら FastGeo を有効にしても対象外になるようでしたが
Packed Level Actor で作成されたBPは対象に含めるようにはできないでしょうか?
[Attachment Removed]
配置されているPackedLevelActorはFastGeoの対象です。
Engine\Plugins\Experimental\FastGeoStreaming\Config\FastGeoStreaming.ini
設定ファイルにBuiltinAllowedActorClassesとして登録されています。
ただしブループリントクラスなのでComponentだけがFastGeo化されてアクターは省略されません。
FastGeo化が妨げられれているようであればTransformer配列中のFastGeoのAllowedClassやDisallowedClassの設定を確認し、
Debug Mode On Selectionを有効化してPLAを選択することでログにFastGeo化に関する情報をご確認ください。
こちらを確認してください。
[Image Removed]本題のテクスチャストリーミングの件は、UnknownRefが出ている旨承知しました。重ね重ねになってしまいますが、エディタまたはランタイムで
s.StreamableAssets.UseSimpleStreamableAssetManagerを入力して1が設定されているか今一度ご確認いただいてもよろしいでしょうか?
[Attachment Removed]
PackedLevelActor に関しても いただいた情報をもとに確認しましたが、
Can’t transform: Hierarchical instanced static mesh component というログが多くでていて、
PackedLevelActor 内容に Hierarchical instanced static mesh component が多く含まれているのが原因のようなので InstancingStaticMesh 化を検討しようと思います。
ありがとうございます
[Attachment Removed]
Packed Level Actor を Fast Geo の Debug Mode on Seelection をつかったデバッグ出力の
Hierarchical instanced static mesh component に関して追加情報記載しておきます
Hierarchical instanced static mesh componentは基本的に、デカール用途でつかわれていましたが、それらは低ポリゴンのものでLODが不要なのに複数LODが含まれており LOD数を1にすると
選択時のデバッグ表示から その Hierarchical instanced static mesh component の表示は消えることを確認しました
LogFastGeoStreaming: - FastGeoStreaming Debug Mode: Transformation on 1 selected actors
LogFastGeoStreaming: * Can’t transform: Component StaticMeshActor_UAID_3CECEF291FE58D4D02_1826802820.BillboardComponent_0 class is unsupported (BillboardComponent)
LogFastGeoStreaming: * Can’t transform: Actor StaticMeshActor_UAID_3CECEF291FE58D4D02_1826802820 is a Blueprint and can’t be fully transformed.
LogFastGeoStreaming: - Non-Transformable Actors = 1 (100.0%)
それでも上記のような、エディタ用のに内部的に追加されている? BillboardComponent の警告だけはでていましたが、 この警告のみであればプレイ中 FastGeo の対象となりました。(FastGeo.Show 0 で消えることを確認しました)
1つでも Hierarchical instanced static mesh component の警告が残っている状態だと instancedStaticMeshComponent なども含めてまるっと対象外になるようでした
(これも FastGeo.Show での確認です)
[Attachment Removed]
セクション違いで s.StreamableAssets.UseSimpleStreamableAssetManager が機能していなかった旨承知しました。解決に至ったようでなによりです。
PackedLevelActorについても非NaniteでHISM化されたケースについてもFastGeo化の対象となることを確認しておりましたが、
LOD数によって挙動が変ることを失念しておりました。大変お手数をおかけしました。
それでは本件をクローズさせていただきます。
[Attachment Removed]
こちら確認しました
適切なサイズでロードされている(FastGeoを使っていないケース)では
複数のメッシュコンポーネント(確認した状況ではすべてHLOD)のスクリーンサイズなどが表示されるのですが、
FastGeo をつかっているケースでは
UnkownRef とだけ表示されてコンポーネント側のスクリーンサイズなどが表示されない状態でした
FastGeo未使用
Wanted size [2D Mips]: 64x64 [7]
FastGeo使用
Wanted size [2D Mips]: 1024x1024 [11]
ちなみにワールドパーティションのセルサイズは256メートルとなっています
<追記>
ちなみに FastGeo のワールドセッティングと DefaultEngine.ini の設定をして
パッケージングを行って確認しているいるのみでHLODのリビルドなどはしていませんが必要でしょうか?
[Attachment Removed]
HLODをビルドしても特に結果は変わりませんでした
(ログでUnkownRefになっている点も同じでした)
[Attachment Removed]
DefaultEngine.ini 自体には
s.StreamableAssets.UseSimpleStreamableAssetManager=1
と記載しているのに 0になっていましたが
記載箇所を
[SystemSettings]
以下に変更してパッケージングしなおしたら
値が 1 になり テクスチャストリーミングバジェットオーバーのエラー表示も消えるようになり無事解決しました。
お手数をおかけしてしまい申し訳ありません。
[Attachment Removed]
すいません Packed Level Actor に関して理解不十分でしたが Instanced StaticMesh 生成で Hierarchical かどうかは自動で選択されているんですね
とりあえず FastGeo 関連は動作していそうなので 現状で運用してみます。ありがとうございます
[Attachment Removed]