中間の`Object Group`がパラメータを持たない設定の場合、詳細パネルで非表示になることがある

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

Mutableプラグインにて仕様か不具合かわからない事象がありましたのでご確認させていただきたいです。

【概要】

MutableエディタのUI生成ロジック(FCustomizableInstanceDetails)において、特定の階層構造を持つインスタンスパラメータが詳細パネルに表示されなくなる事象を確認しました。

この問題は、「中間の親となるObject Group」がUIパラメータを持たない設定(Group Type: “All Options”)であり、かつその「子となるObject Group」がUIを表示する設定(Group Type: “Toggle”)である場合に発生します。

【事象の詳細】

この階層構造では、最下層にあるパラメータ(例:Float Parameter等)およびその親である「Toggle」設定のグループ自体が、詳細パネルのリストから完全に消失します。

また、UIの更新における不整合も確認しています。中間の親を一度 “Toggle” に変更してコンパイルし、再度 “All Options” に戻すと、最下層のパラメータだけが孤立して表示されることがありますが、その直接の親である “Toggle” グループは非表示のままとなるなど、表示状態が不安定になります。

添付画像にて、この表示不良の様子をご確認いただけます。

  • [画像1, 2, 3: 修正前の表示不良]
    • これらの画像では、詳細パネルに「Head」と「Body」のパラメータのみが表示されており、本来表示されるべき「Acc」グループおよび「AccParam」がリストに一切存在しません。

[Image Removed]

【原因の推測】

FCustomizableInstanceDetails::GenerateParametersView 内から呼ばれるロジックの不備と思われます。

FillChildrenMap メソッドが子要素の __ParentParamName メタデータを読み取る際、親が描画処理を行うことを前提として、無条件で ParamHasParent = true と設定しています。

しかし、親が “All Options” の設定によってUIパラメータを持たない場合、親が ParametersTree に存在しないため、子要素への再帰的な描画(Draw呼び出し)が実行されず、結果として非表示になってしまいます。

【修正案】

FillChildrenMap を修正し、親パラメータが現在の表示リスト(ActiveParameterNames)に実際に存在するかどうかを確認した上で、子要素フラグを設定するようにすることで解決できると考えています。

void FCustomizableInstanceDetails::FillChildrenMap(int32 ParamIndexInObject, const TSet<FString>& ActiveParameterNames)
{
  const UCustomizableObject* CustomizableObject = CustomInstance->GetCustomizableObject();
  const FString& ParamName = CustomizableObject->GetParameterName(ParamIndexInObject);
  FMutableParamUIMetadata UIMetadata = CustomizableObject->GetParameterUIMetadata(ParamName);
 
  if (const FString* ParentName = UIMetadata.ExtraInformation.Find(FString("__ParentParamName")))
  {
    // FIX: Only register as a child if the parent parameter is actually going to be drawn
    if (ActiveParameterNames.Contains(*ParentName))
    {
      ParamChildren.Add(*ParentName, ParamIndexInObject);
      ParamHasParent.Add(ParamIndexInObject, true);
    }
  }
}

修正案を適用した結果が、以下の画像となります。

  • [画像4, 5, 6: 修正案適用後の正常な表示]
    • 修正後は、期待通り「Acc」グループおよび「AccParam」が詳細パネルに表示され、操作可能になっていることが確認できます。

[Image Removed]

【確認事項】

このようなインスタンスパラメータの表示制限は、Mutableの現在の仕様によるものでしょうか?

それとも意図しない不具合(バグ)でしょうか?

バグである場合、「修正案」の方法でよいでしょうか?

また、今後のアップデートでの修正がございますでしょうか?

ご確認のほど、よろしくお願いいたします。

[Attachment Removed]

再現手順
以下の手順で、親の非表示設定が子の表示を阻害する挙動を再現可能です。

(以下、Customizable Object = CO、Customizable Object Instance = COIと略します)

【前提となる階層構造のイメージ】

Body CO (Root)

└── Head CO (Object Group: “Head”)

└── Acc CO (Object Group: “Acc”)

  └── AccParam (Float Parameter)

【手順】

階層構造の構築:

  • Rootとなる Body CO を作成し、そのグラフ内に Head CO を参照する Object Group ノード「Head」を追加します。
  • Head CO のグラフ内に Acc CO を参照する Object Group ノード「Acc」を追加します。
  • Acc CO のグラフ内に AccParam という名前の Float Parameter ノードを追加します。

Object Groupの設定:

  • Body CO 内で、Head Object Group の Group Type を “All Options” に設定します。(※これにより、HeadのUIパラメータは生成されなくなります)
  • Head CO 内で、Acc Object Group の Group Type を “Toggle” に設定します。

確認:

  • コンパイルを実行します。
  • 生成された CO、または COI を開き、詳細パネル(Detailsパネル)のパラメータ一覧を確認します。リストに「Acc」および「AccParam」が表示されないことが確認できます。
    [Attachment Removed]

Hi Daniel, nice to meet you.

I am sorry you are having trouble with this part of mutable. I will take a look at the issue you describe as soon as possible. I would recommend you go with the fix you proposed for now if that works for you while we find and apply a long-term fix from our end.

Thank you for the in-depth testing you have done and for the reproduction case provided; it is quite welcome.

Have a nice day. I will keep you posted.

[Attachment Removed]

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

すでにEpicのチームからご返信申し上げました通り、本件は開発側で調査に入っております。

「仕様」ではなく、不具合と考えており、社内のバグトラッカーに起票いたしました。

Public Issueとして承認され次第、下記のURLから修正情報の追跡が可能となります。承認まで数営業日、お待ちください。

https://issues.unrealengine.com/issue/UE\-372150

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

[Attachment Removed]

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

迅速なご確認と、バグトラッカーへの起票(UE-372150)をいただき誠にありがとうございます。

本件が仕様ではなく不具合であること、承知いたしました。

Public Issueの公開につきましても承知いたしました。承認されるまでお待ちしております。

引き続き、よろしくお願いいたします。

[Attachment Removed]

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

Issue公開のご連絡ありがとうございます。内容確認いたしました。

本件、解決いたしましたので、チケットをクローズしていただいて大丈夫です。

ご対応ありがとうございました。また何かあればよろしくお願いいたします。

[Attachment Removed]

大変お待たせいたしました。

Public Issue がようやく公開されました。通常、数営業日で公開されるのですが、今回システムトラブルで時間がかかってしまいました。申し訳ございません。

https://issues.unrealengine.com/issue/UE-372150

弊社開発チームより直接返信申し上げました通り、現状はお手元の回避パッチを利用して不具合を回避していただいて問題はございません。

あわせて本チケットも管理の都合上、一旦Closeさせていただこうかと考えております。

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

[Attachment Removed]

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

それでは本件は一旦Closeとさせていただきます。

引き続き、よろしくお願いいたします。

[Attachment Removed]