FC2ブログ

凛(kagring)のUE4/UE5とUnityとQt勉強中のゲーム制作ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。ゲーム制作の話題もはじめました。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE4 距離に応じて値を変化させる(Sphere Mask)

マテリアルノードについて勉強中ですメモ。
距離に応じて色を変化させる方法です。

こちらを参考にさせていただきました!

・UE4 SphereMaskで距離に応じて色を変える
http://effect.hatenablog.com/entry/2018/05/16/025859

距離に応じて色を変化させるには「Sphere Mask」ノードを使います。
SphereMask003.png
「A」にはチェックするポイントの位置を指定します。
「B」には球の真ん中を表す位置を指定します。
「Radius」には距離の計算に使用する半径を指定します。
「Hardness」にはトランジションのエリアのサイズを指定します。
徐々に変化させる場合の距離といったものですね。
moko さんの記事に詳しく画像付きで書いてあります。

Hardnessは 0 から 1 に遷移する長さという感じで、1 にすると即値が変わりますが 0 にするとカメラの位置までかけて緩やかなグラデーションが付きます。

書いてあるとおり、0.0でいい感じにグラデーションして、1.0だと即値が変化するようです。
感覚的には逆なので厄介ですね…。
0.0から1.0の値が出力されるようdす。

公式ドキュメントはこちら。

・SphereMask
http://api.unrealengine.com/JPN/Engine/Rendering/Materials/ExpressionReference/Utility/index.html#q-z

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

結果はこんな感じに。
SphereMask001.png
簡単にいうとフォグですね。

エフェクトでの使用例で言えば、パーティクルがカメラに近付いた際に突き刺さらないよう消えるようにしたりは定番と思いますが、World position OffsetとParticleSizeノードを併用してカメラに近付いたパーティクルのサイズを小さくしたりとかもできそうです。

この時、ピクセル単位ではなくパーティクル全体に影響するので良ければSphereMaskのAに入力するのはParticlePositionノードが良いかと思います。

といった感じの使い方もできそうなので便利そうですね。

| UE4 | 13:04 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/426-6d7fb190

TRACKBACK

PREV | PAGE-SELECT | NEXT