大変お世話になっております。
表題のとおり、マテリアルなどに作成したスカラーパラメータを、プレイゲーム中にウィジェットなどで数値を変更して、動的に見た目の変化を確認できるようにしたいのですが、マテリアルのスカラーパラメータをレベルBPなどに読み込み及び値の設定をする手段はありますでしょうか。
マテリアルパラメータコレクションを使用して同様の動作はできたので、これで実装するかと思ったところ、作ってもらっていたマテリアルが、コレクションを使用していないパラメータがほとんどだったので、これを個別にコレクションに置き換えるのは骨が折れそうだ。何かいいやり方はないかと思い、質問させていただきました。
ご存知の方いらっしゃいましたらお伺いできると幸いです。
毎度大変申し訳ありませんがよろしくお願いいたします。
スカラ/ベクタパラメータを弄る際は、動的マテリアルインスタンス(MaterialInstanceDynamic)を利用します。
元となるマテリアルから下図の様に動的マテリアルインスタンスを生成して、そこから各パラメータにアクセ
スします。
メッシュ等に割り当てる場合はコンストラクションスクリプトで動的マテリアルインスタンスに差し替えるのが良いかと思います。
画像つきでのご説明ありがとうございます!ノードでダイナミックに変換できるのですね。勉強になります。
理解が足らずお恥ずかしいのですが、運用につきまして、
①動的変化させたいパラメータ分記載いただきました画像のノード群を作成して、それぞれのParameterNameに変更する。
②マテリアルパラメータコレクションを作成して、そこに先ほど入力したParameterNameをそれぞれ入力し保存。
③運用先でMateriallibraryがターゲットのSetScalarParameterValueで呼び出し、任意の設定をしていく。
といった手順でよろしかったでしょうか。私の理解が足らずお手を煩わせてしまい申し訳ありません。お時間ございましたらお伺いできると幸いです。
以上よろしくお願いいたします。
ちょっと例としては雑だったので、ThridPersonTemplateで一例を。
まずベクタパラメータを持つマテリアルを用意します。(パラメータ名はColorとする)
次にThirdPersonCharacterブループリントのConstructionScriptでマテリアルの差し替えを行う。
Jumpボタンが押される度にスカラパラメータにアクセスして色を替える。
これがスカラ/ベクタパラメータにアクセスする一連の流れです。
コレクションに関しては一意見なんですが、本当にアプリ全体で必要な機能ではない限り利用しません。
利用することになったとしても本当に必要なのか慎重に考えます。
画像つきでとてもわかりやすくご説明いただきありがとうございます!
ダイナミックはコレクションでないと操作できないと思い込んでいましたので、今回やり方をお伺いできて大変勉強になりました。
コレクションはやはり同名の全パラメータに影響を及ぼすため、好まれないということでしょうか…ともあれ教えていただいた手法のほうがアセットのやり取りが少なくなり分かりやすいと思いましたので、さっそくこちらで作業を進めていこうかと思います。
重ねてになりますがお礼申し上げます。この度はご丁寧にありがとうございました。