[UnrealEngine]RemapValueRangeのメモ

UnrealEngine

■[UnrealEngine]RemapValueRangeのメモ

・今回は「RemapValueRange」に関するメモになります。

■ノードとパラメータ

・Input :入力値
・Input Low :入力マッピング範囲の最小値
・Input High :入力マッピング範囲の最大値
・Target Low :出力範囲の最小値
・Target High :出力範囲の最大値

 ・[RemapValueRange]ノードは、入力された値の内、ある数値の範囲[Input Low/High]を、別の数値の範囲[Target Low/High]へと線形(リニア)に変換します。
 (内部的には、「逆線形補間(unLerp)」と「線形補間(Lerp)」の組み合わせを、一つのノードで実現できるようにしたもの、だそうです。)

■検証マテリアル

・[TexCoord]のRを元に、[RemapValueRange]の挙動を確認していきます。
 最近になって[PlotFunctionOnGraph]という値をグラフ化・視認化できるノードを知りましたので、併用してみます。

■初期状態

・Input Low/High  = 0/1
・Target Low/High = 0/1
 変化をさせていないデフォルト状態。
 加算表示させたグラフは左下(0.0)から右上(1.1)となっています。

■[Target Low/High] を調整(線形補間)

・Input Low/High  = 0.0/1.0
・Target Low/High = 0.25/0.75
 [Input]を動かさず、[Target]の値を変化させた場合の図です。
 この場合は、0の値が[Target Low]に、1の値が[Target High]になるように補完されます。
 こちらは[線形補間(Lerp)]ノードと同じような挙動になります。

■[Input Low/High] を調整(逆線形補間)

・Input Low/High  = 0.25/0.75
・Target Low/High = 0.0/1.0
 この場合は、[Input Low]から[Input High]の間が0-1になるように補完されます。
 こちらの挙動は「逆線形補間(unLerp)」というらしく、スムーズ補間のない、リニアな[SmoothStep]のような挙動だと思います。

■補足:動画で動かしてみた図
[Target Low/High] を調整(線形補間)の動画
[Input Low/High] を調整(逆線形補間)
■補足2:[Input Low/High][Target Low/High] を同値で動かした場合

・Input Low/High  = 0.25/0.75
・Target Low/High = 0.25/0.75
 [Input Low/High]と[Target Low/High]を同値にした場合は、[Input]に入れたのと同じ値を返します。


■おまけ:[逆線形補間(unLerp)]運用のマテリアル関数を作ってみる

 ・[Target Low/High]の値を[0.0/1.0]に固定して[Input Low/High]を調整する[逆線形補間(unLerp)]は、[SmoothStep]の線形補間として使いたくなる場合が多いので、個別に関数化してよく使っています。

▼[RemapValueRange]の内部ノード

 ・[RemapValueRange]はエンジンコンテンツの青マテリアル関数なので、中身を見ることができます。

▼上記をコピー・改修した[逆線形補間(unLerp)]運用のマテリアル関数

・こちらがコピーして作成したマテリアル関数です。
 (余談ですが、筆者は前述の理由により、[SmoothStep]に寄せたパラメータ名と関数名で使っていました)

・今回は以上となります。
 筆者にとっては「SmoothStep」のスムーズ補間がない物が欲しい、という思いからたどり着いたマテリアルノードでした。
 改めて機能について自分なりにまとめてみましたが、こちらがなにか参考になれば幸いです。

コメント

タイトルとURLをコピーしました