UE4 距離に応じて値を変化させる(Sphere Mask)
距離に応じて色を変化させる方法です。
こちらを参考にさせていただきました!
UE4 SphereMaskで距離に応じて色を変える - ゲームエフェクトデザイナーのブログ (新) https://t.co/mrxzK576y9
— moko (@moko_03_25) 2018年5月15日
・UE4 SphereMaskで距離に応じて色を変える
http://effect.hatenablog.com/entry/2018/05/16/025859
距離に応じて色を変化させるには「Sphere Mask」ノードを使います。

「A」にはチェックするポイントの位置を指定します。
「B」には球の真ん中を表す位置を指定します。
「Radius」には距離の計算に使用する半径を指定します。
「Hardness」にはトランジションのエリアのサイズを指定します。
徐々に変化させる場合の距離といったものですね。
moko さんの記事に詳しく画像付きで書いてあります。
書いてあるとおり、0.0でいい感じにグラデーションして、1.0だと即値が変化するようです。Hardnessは 0 から 1 に遷移する長さという感じで、1 にすると即値が変わりますが 0 にするとカメラの位置までかけて緩やかなグラデーションが付きます。
感覚的には逆なので厄介ですね…。
0.0から1.0の値が出力されるようdす。
公式ドキュメントはこちら。
・SphereMask
http://api.unrealengine.com/JPN/Engine/Rendering/Materials/ExpressionReference/Utility/index.html#q-z
ノードを組んでみるとこんな感じに。

上記はポストプロセスマテリアルを組んだもので
カメラからの距離を取得して、距離に応じて黒くしていくといったものですね。
結果はこんな感じに。

簡単にいうとフォグですね。
といった感じの使い方もできそうなので便利そうですね。エフェクトでの使用例で言えば、パーティクルがカメラに近付いた際に突き刺さらないよう消えるようにしたりは定番と思いますが、World position OffsetとParticleSizeノードを併用してカメラに近付いたパーティクルのサイズを小さくしたりとかもできそうです。
この時、ピクセル単位ではなくパーティクル全体に影響するので良ければSphereMaskのAに入力するのはParticlePositionノードが良いかと思います。
| UE4 | 13:04 | comments:0 | trackbacks:0 | TOP↑