アニメーションのサムネイルを強制更新したい

お世話になっております。

アニメーションのサムネイルですが、一度生成されてしまった後にエディターのメニューなどから更新する方法はございますでしょうか?プレビューメッシュの中のデータが変わってもエディターを立ち上げなおすと古いサムネイルで表示されてしまいます。

また、このときファイルを開いて再度保存するだけでは更新されず、アニメーションのパラメーターを変更してサムネイル更新のもととなっているハッシュ値?を変更しないとサムネイルの更新がかかりません。

プレビューメッシュの更新を検知してサムネイルが更新されるでもよいのですが、どのパラメーターでサムネイルが更新されてほしいかなどはプロジェクトによりケースバイケースなので、手動でアーティストがサムネイルを強制更新する手段がないか探しています。

ThumbnailTools::GenerateThumbnailForObjectToSaveToDisk() を使用すればサムネイルの強制更新は可能かと思いますが、スクリプトなどを作らずVanillaのエンジンにはそういった機能ございませんでしょうか?

よろしくお願いいたします。

[Attachment Removed]

再現手順

  • アニメーションにプレビューメッシュを設定します
  • プレビューメッシュのデータの変更を行います(マテリアルを外すなど)
  • プレビューメッシュを保存します
  • サムネイルが更新されているのでアニメーションを保存します
    • この時点ではプレビューメッシュの反映が正しく行われます、また、同じプレビューメッシュを使用しているアニメーションは、マウスオーバーすることでサムネイルの更新が行われます(マウスオーバーしない限りは古いサムネイルのままです)
  • エディターを立ち上げなおします
  • アニメーションのサムネイルが古いままとなっており、マウスオーバーでも変化はありません
  • アニメーションアセットを開くとサムネイルの更新が行われます
    [Attachment Removed]

ご質問ありがとうございます。

大変恐縮ながら、ヴァニラのエンジンではサムネイルを強制更新する機能が準備されておらず、何らかのツールを書いていただく必要があります。

この更新は、Engine/Plugins/ChaosClothAsset/Source/ChaosClothAssetEngine/Private/ChaosClothAsset/ClothAssetBase.cpp:1265に類似コードがあるのですが、

AnimationAsset->MarkPackageDirty();
 
FPropertyChangedEvent EmptyEvent(nullptr);
FCoreUObjectDelegates::OnObjectPropertyChanged.Broadcast(AnimSequence, EmptyEvent);

のようにして、空のPropertyChangedイベントを通知することで、パラメータの変更なくサムネイルの再生成を促すことが可能です。これをアニメーションシーケンスアセットの右クリックメニューに追加すれば、手動強制変更の手段になりえると思いますが、ご要件を考えますと、スケルタルメッシュ側の右クリックメニューにも機能を追加し、関連するアニメーションシーケンスをイテレートして上記のコードを実行できるようにしておいても便利ではないかと思います。

右クリックメニューの拡張については、

Engine/Source/Developer/AssetTools/Public/IAssetTypeActions.h:165-219

のテンプレートコード(HOW TO ADD ASSET EXTENSION MENUS)をご参照ください。

大変お手数をおかけしますが、よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

デフォルトではないとのことですのでPython用の公開API関数を作ってそちらを使用してもらうことにします。

ありがとうございました!

[Attachment Removed]

ご確認ありがとうございました。

それでは本件は対応済みとしてCloseさせていただきます。

今後ともなにかご不明点が出てきましたら、ぜひお気軽にEPSにご投稿ください。

以上、よろしくお願いいたします。

[Attachment Removed]