x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

RetainerBoxのマテリアル適用後のプレビュー

お世話になっております

UMGのRetainerBoxにて、Effect Materialを設定し、 RetainerBox下のSlateアイテムを任意の図形にクリッピングして表示する、という利用法をしています

このとき、Effect Material適用後の見た目(クリッピングしたあとの見た目)は、 作成したウィジェットをレベルで表示しないと確認できないという認識でおります

イテレーションの高速化のため、 WidgetBlueprintエディターのDesignerタブ上で、マテリアル適用後の見た目が確認したいのですが、 こうした機能は既存のものや、UE4.17以降で計画されている実装にありますか?

あるいは、上記RetainerBoxのプレビュー機能を独自実装しようとする場合、 参考にできそうなエンジンコードの情報をご教示いただけますでしょうか


感覚としては、Imageウィジェットではマテリアル適用後の見た目をプレビューできているので、 このあたりに流用できる部分があるのかなと思っています。

一方、レベル中で行われるRetainerBoxの描画ではFWidgetRenderer::DrawWindow から、 一度RenderTargetに書き込んでから描画、というステップを踏んでいると思いますので、 そうしたRetainerBox固有の描画をエディター上で再現する方法についても理解する必要があるのかと考えています。

Product Version: Not Selected
Tags:
more ▼

asked Sep 05 '18 at 05:44 AM in Japanese

avatar image

Answers.Archive STAFF
1.9k 209 316 689

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

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

申し訳ありませんが、現状はお送り頂いた内容を実現する機能・実装予定はありません。こちら機能要望としてリクエストといたします。
UE-55621 Request for Confirming the result of Retainer Box's Effect Material on the UMG Editor

取り急ぎの対応として、SRetainerWidget.cppのOnPaint関数にて以下の対応を行うとエディタ上でのマテリアル適用後のプレビューが行えることを確認いたしました。

 int32 SRetainerWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const
 {
     STAT(FScopeCycleCounter PaintCycleCounter(MyStatId);)
 
     SRetainerWidget* MutableThis = const_cast( this );
 
     MutableThis->RefreshRenderingMode();
 
     // add : comment out
     // if ( bEnableRetainedRendering && IsAnythingVisibleToRender() )
     {
         SCOPE_CYCLE_COUNTER( STAT_SlateRetainerWidgetPaint );
         CachedAllottedGeometry = AllottedGeometry;
         CachedWindowToDesktopTransform = Args.GetWindowToDesktopTransform();
 
 ...


ただしこの対応だけでは常に余計な処理が走ってしまうため、例えばURetainerBoxにプレビュー用のbool変数を追加し、プレビューしたい時( bool変数がtrue )は今回コメントアウトした判定部分をスキップするなどの対応が必要になります。

お手数ですが、こちらの挙動を一度ご確認頂けますと幸いです。
よろしくお願いいたします。

more ▼

answered Sep 05 '18 at 05:44 AM

avatar image

Answers.Archive STAFF
1.9k 209 316 689

avatar image Answers.Archive STAFF Sep 05 '18 at 05:44 AM

ご返答ありがとうございました

UE4Editorでご紹介いただいた if文にかかわる変数の変更タイミングを調べまして、 UMGのエディター中で、上記if文内の描画を有効化する処理を書くことができました。

具体的には以下のような実装を行っています。

 void URetainerBox::SynchronizeProperties()
 {
     Super::SynchronizeProperties();
 
     MyRetainerWidget->SetEffectMaterial(EffectMaterial);
     MyRetainerWidget->SetTextureParameter(TextureParameter);
     MyRetainerWidget->SetWorld(GetWorld());
 
     // @third party code - BEGIN
     // to preview "effect material" in Widget Blueprint Designer
     if (IsDesignTime())        // It means editor only proc
     {
         if (EffectMaterial)
         {
             MyRetainerWidget->SetRetainedRendering(true);
         }
         else
         {
             MyRetainerWidget->SetRetainedRendering(false);
         }
     }
     // @third party code - END
 }

差支えなければ、 公式なエンジンのバージョンへの適応をご検討いただけないでしょうか

avatar image Answers.Archive STAFF Sep 05 '18 at 05:44 AM

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

コードをご共有頂き、誠にありがとうございます。頂いたコードを担当者にも共有し、公式に組み込むことができないかを依頼致します。

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

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question