UE5(Unreal Engine5)で、マテリアルのインスタンス化を使うと、少し簡単だけ簡単にメタリック(Metallic)やラフネス(Roughness)の数値をスライドで変更できます。マテリアルのプロパティを効率的に管理するための機能で、基本マテリアルを直接変更することなく、MetallicやRoughnessのような特定のプロパティを調整できます。複数のオブジェクトに対して異なる見た目を迅速に適用することが可能になります。
マテリアル インスタンスを作成して使用する
https://docs.unrealengine.com/5.3/ja/creating-and-using-material-instances-in-unreal-engine/
まず基本的な操作をきわめて簡単に説明します。例として、球を追加して、マテリアルのエレメントを開きます。scalar parameter(スカラー パラメータ)を追加します。名前を分かりやすくするためRoughnessにします。そしてラフネスに接続します。
設定が分かりやすくなるように黒色に変更しました。scalar parameter(スカラー パラメータ)を選択して、デフォルト数値と、最小、最大数値を決定します。ラフネス(Roughness)は、0~1の設定範囲で使用します。
コンテンツブラウザーのマテリアルの元を探します。そして「マテリアルインスタンスを作成」します。このマテリアルインスタンスをクリックすると、先ほど設定した項目をスライダーで簡易的に変更できます。
同じようにFBX素材を取り込みscalar parameter(スカラー パラメータ)を設定して、マテリアルインスタンスを作成すると、3Dモデルが違和感がないようにメタリック(Metallic)やラフネス(Roughness)の数値をスライドで変更して、目で見ながら馴染みを確認できます。便利ですね。
さらに発展させてみます。CGソフトで、冷蔵庫の一部を金属質に設定して、テクスチャーでラフネスマスクを作成します。金と銀部分です。
ラフネスマスクは、こんな感じの白黒の画像になります。黒い部分がラフネスですね。逆かな?ラフネスは0が有効で、1が無効?かな。黒と白どちらが有効なのか良く分からなくなります。
ラフネスマスクの有効を0%から100%にしたい場合は、少し複雑ですがいくつかのノードを繋ぎます。以下でマテリアルのノード画面で、右クリックで検索すれば出てきます。
①Linear Interpolate (Lerp)
Linear Interpolate(Lerp)は、二つの値の間で線形補間を行う関数です。指定された比率(通常0から1の間の値)に基づいて、二つの入力値AとBの間で滑らかに遷移させる値を計算します。例えば、Alphaが0の場合、Lerpの結果はAになり、Alphaが1の場合はBになります。Alphaが0.5の場合、AとBの中間の値を返します。これはゲーム開発やグラフィックスで、時間経過による滑らかな変化などを表現するのによく使用されます。
②Constant
Unreal Engineのマテリアルエディタにおいて、「Constant」ノードは、変化しない固定値を表します。スカラー(1つの浮動小数点値)、ベクター(2つ、3つ、または4つの浮動小数点値のセット)、または色など、さまざまなタイプの定数があります。マテリアルのプロパティに「Constant」ノードを接続すると、そのプロパティは他の要因の影響を受けずに、指定された値を常に持つことを意味します。これはシェーダー作成において基本的だが不可欠なコンポーネントで、マテリアルグラフ内で静的な値を定義するために使用されます。
③Scalar Parameter
マテリアルのプロパティ値を動的に変更するためのパラメータです。これを使用すると、マテリアルインスタンスを通じて、マテリアルが適用されるオブジェクトに対して、エディタやゲーム実行時にプロパティ(例えばラフネスや光沢度)の値を調整することができます。Scalar Parameterを利用することで、単一のマテリアルから様々なバリエーションを容易に生成することが可能になります。
Linear Interpolate、Constant、Scalar Parameterの接続など実際に設定してみます。※Scalar Parameterの名前は適宜設定しましょう。