■[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] を調整(線形補間)の動画](https://monogucervas-gamevfx-memorandum.com/wp-content/uploads/2025/11/2025-11-24_RemapValue00_02_02.webp)
![[Input Low/High] を調整(逆線形補間)](https://monogucervas-gamevfx-memorandum.com/wp-content/uploads/2025/11/2025-11-24_RemapValue00_02_03.webp)
■補足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」のスムーズ補間がない物が欲しい、という思いからたどり着いたマテリアルノードでした。
改めて機能について自分なりにまとめてみましたが、こちらがなにか参考になれば幸いです。

コメント