コマンドラインでResavePackagesするとサムネイルがなくなります

コマンドラインでResavePackagesすると手動で設定したサムネイルがなくなってしまいます

<br/>

このため、プロジェクトメンバーが設定したサムネイルがCIでResaveするとなくなってしまいます

<br/>

回避方法はありますか?

[Attachment Removed]

UE5.7で修正されたバグに リセーブコマンドレットによってサムネイルが破棄されるというものを見つけましたが、この修正はUE5.7であれば適用済みです(CL-42420601)

再現方法を確認させてください。

  • スタティックメッシュやブループリントに対して コンテンツブラウザでカスタムサムネイルモードに入りサムネイルを編集し保存
  • エディタを終了
  • コマンドレットで再セーブを行う

{エンジンパス} {uprojectpath} -run=resavepackages -Package=/Game/{アセットへのパス}* エディタを開き対象コンテンツのサムネイルを確認する

で確認しましたが再現のための手順に相違があればご指摘ください。

特定のアセットのみに影響がでるなどや再セーブ時のログに特異な部分があればご共有ください。

[Attachment Removed]

手順の共有ありがとうございます。

問題を再現することが出来たので、本件を UE-379269 Resavepackages commandlet strips level package thumbnails としてバグ登録させていただきました。

問題としてはレベルパッケージは二つのサムネイルを保持している状態になりますが、二つ目が正しいデータで一つ目はダミーになっています。

ResavePackage時のサムネイルロード処理では空のサムネイルに遭遇するとループを終了してしまうため正しいデータのロードに失敗してしまいます。

ひとまず仮の修正として以下のワークアラウンドが機能するはずです。

FLinkerLoad::ELinkerStatus FLinkerLoad::SerializeThumbnails( bool bForceEnableInGame/*=false*/ )
{
...
				// Load the image data
				FObjectThumbnail LoadedThumbnail;
				LoadedThumbnail.Serialize(DataStream.EnterElement());
				if (!LoadedThumbnail.HasValidImageData())
				{
#if 1 // ワークアラウンド
                    if (IsTextFormat())
					{
    					        // If we failed to load the thumbnail, stop loading as it might be unsafe
    					        // to continue reading the stream.
						break;
					}
					else
					{
                                                // バイナリフォーマットでは毎回シークが行われるのでループを継続し次要素移行のサムネイルをロードできる
						continue; 
					}
#endif // ワークアラウンド終わり
                }
				// Store the data!
				ThumbnailMap.Add(CurThumbnailInfo.ObjectFullName, LoadedThumbnail);

正式な修正は Unreal Engine Issueでバグ修正の進捗を確認していただけると幸いです。

[Attachment Removed]

1、レベルをViewPortで開き、ContentBrowserで右クリック>AssetAction>Capture Thumbnail でサムネイルを更新

2、レベルをsubmitしてエディタを終了

3、コマンドレットでresaveを行いsubmit

4、エディタを起動するとサムネイルが剥げている

という手順です

対象ファイルに対してログなどにエラー等は出ておりません

レベルファイルであれば現状は確定で起きています

[Attachment Removed]

無事、Resave後もサムネイルが保持されました

ご教授ありがとうございました

[Attachment Removed]