IlluGenからインポートしたメッシュで、頂点カラー(Alpha)を使用したマテリアル制御が反映されない

JangaFXのIlluGenを使用して雷のエフェクトを作成し、Unreal Engineで表示させようとしていますが、マテリアルの挙動について不明点があり質問させていただきます。

【実現したいこと】 以下のチュートリアル動画を参考に、IlluGenで生成したメッシュをUEでアニメーションさせたいと考えています。

https://youtu.be/3DwmiRRln68?si=6F4CwI2LETPT-BQF&t=43

具体的には、メッシュの頂点カラー(アルファチャンネル)に格納されたFrameIDを利用して、マテリアル内で表示/非表示(Opacity Mask)を制御しようとしています。

【環境】

  • Unreal Engine: 5.6.0

  • OS: Windows 11

  • DCCツール: JangaFX IlluGen 1.1.1

【行った手順】

  1. IlluGen側:

    • 8本の束になった雷のメッシュを作成。

    • それぞれの束のアルファチャンネルにFrameID(連番情報)を格納。

    • FBXとしてエクスポート。

  2. UE側:

    • FBXをインポート(オプションはデフォルト)。

    • 新規マテリアルを作成。

    • 動画を参考に、Vertex ColorのAlpha値と「Test Frame(パラメータ)」を比較し、IfノードでOpacity Maskを切り替える簡易的なロジックを作成。

【発生している問題】 マテリアルエディタ上のプレビューで、プリミティブ(球体など)に適用した場合は、「Test Frame」の数値を変更すると正常に表示/非表示が切り替わります。 しかし、インポートしたスタティックメッシュ(雷のモデル)でプレビューすると、「Test Frame」の数値に関わらず常にメッシュが表示されたままになってしまいます。

【検証・確認したこと】

  • マテリアルグラフは添付画像の通り簡略化してテストしています。

  • プレビュー用のメッシュを球体に変えると動作するため、マテリアルのロジック自体は機能していると思われます。

【添付ファイル】

  • Unreal Engine プロジェクトファイルその他* 本記事参照

  • IlluGen で作成したFBXファイル

この現象について、アドバイスをや解決策をご存知の方がいらっしゃいましたら、ご教示いただけますと幸いです。

必要な情報に不足があった場合は教えてください。

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

添付ファイルのfbxをインポートして、ScreenShot2のマテリアルを作成してプレビュー(UE5.6.1)してみました。

TestFrameの値を変更することで、表示/非表示が切り替わりました。(たぶん、こう動いてほしいという動作だと思われます。)

MaterialVertexColor


ここからは、推測ですが、スタティックメッシュのインポートの問題なような気がします。

スタティックメッシュをインポートした時に、オプション「Vertex Color Import Option」が「Replace」以外になっていたりしないでしょうか?(デフォルト「Replace」なので、可能性は低いような気がしますが…)

1 Like

スタティックメッシュのVertexColorをUnrealEditorで確認する方法です。

「メッシュペイントモード」で「カラー表示モード」を「Alpha Channel」にすると確認できます。

CheckVertexColor

これで、インポートしたスタティックメッシュの状況をまずは確認してみるのが良いかと…。

1 Like

manul7catさん、ご検証ありがとうございます。

まず、スタティックメッシュをインポートした際の「Vertex Color Import Option」は「Replace」になっていました。おっしゃる通りデフォルト設定なのでそのままです。

ただ、manul7catさんの動画の Material Overview ノードと私のノードの設定(有効ピンの種類)が違うので、動画に合わせてオパシティマスクからオパシティに繋ぎ変えたところ、無事雷の筋が切り替わるようになりました。ありがとうございます。

参考にしたチュートリアル動画ではオパシティマスクに繋いだままで同じことができていたのはなぜだったのか、という疑問は残っていますが、そこは調べてみようと思います。UE初心者なのでマテリアルグラフの勉強にもなります。(もちろんヒントをご存じでしたら教えていただけると助かります)

また頂点カラーの見かたの解説もありがとうございます。どこで見れるんだろうと思っていたので大変助かりました。ちなみに頂点カラーは正しく設定されていました。

疑問の解決はできたのでこのチケットは解決済みとさせていただきます。改めてありがとうございました。

解決済みとなったので、もう見ないかも知れませんが…。


マテリアルの「Blend Mode」= Masked だったのですね。

私の最初の回答は、「Blend Mode」= Translucent にしていました。ちょっと、回答がずれていたようなので、もう少し調べてみました。


マテリアルのプレビューの表示は、Naniteを無効化して行うか、参考程度にみてビューポートで確認するのが良いようです…。


マテリアルの「Blend Mode」= Masked にした場合の、マテリアルエディタのプレビューは、StaticMeshのNaniteが有効化されていると、正しく反映されないことがあるようです。(EPIC Developer Assistantの回答では、既知の制限とのことでした…。もちろん、EPIC Developer Assistantが必ずしも正しい回答をしているとは限りませんが…。)


Naniteを無効化すると、マテリアルエディタのプレビューで、TestFrameの変更で、表示・非表示が切り替わりました。(それでも、YouTubeのチュートリアル動画とは表示が違うので、他にも何か設定があるのかも知れません…)

CheckVertexColor_Masked

StaticMeshのNaniteの無効化の手順の例

StaticMesh_DisableNanite

StaticMeshのNaniteが有効の場合でも、ビューポートで表示した場合は、TestFrameの値で表示・非表示が切り替わりました。

Viewport_TestFrame2

1 Like

追加のご検証ありがとうございます!

Nanite の無効化は気づきませんでした。私の環境でも同じようにプレビューシーンとビューポート両方で切り替えできるようになりました。

とはいえプレビューにこだわりすぎるのもよくないということですね。今後はあくまで参考程度で、実際のビューポートで確認するようにします。

改めてありがとうございます。