水の表現や動きの付いたオブジェクトなど特殊な見た目を再現するとなるとノードを使ったマテリアルの処理は避けては通れません。
今回は個人的に使用頻度の高いマテリアルのノードをまとめました。
演算系
・Add 足し算 +
・Subtract 引き算 -
・Multiply 掛け算 *
・divide 割り算 /
・Fmod 余剰 %
検索する際は記号でも可能
定数・パラメータ
・Constant floatの定数
・ScalarParameter floatの値
・Constant4Vector Vector4の定数
・VectorParameter Vector4の値
計算に使用する
線形補間
A*(1.0f-Alpha) + B*Alpha
Alphaが0ならAの値になりAlphaが1に近づくに連れてBの値になります。
####VectorでもScalarでもAとBの型が揃っていれば補間を掛けてくれます。
※Alphaの値は0~1の間にクランプされないので注意が必要。
数値の切り捨て
・Min AとBの数値で低い値を出力する
・Max AとBの数値で大きい値を出力する
・Clamp MinとMaxの間外の数値を切り捨てる
・Floor 少数を切り捨て (1.5 => 1)
・Ceil 少数を繰り上げ (1.5 => 2)
・Flac 整数切り捨て (1.0を超えると0.0になる)
数値反転
・OneMinus (渡す数値が0から1の値であれば反転した値が返る)
演算
・Abs 絶対値に変換 (負の値を生の値にする)
・Power 乗数 (スペキュラの計算やExposure等に使う)
・SquareRoot √
###ベクトル演算
・DotProduct 内積
・CrossProduct 外積
・Normalize 正規化 (正規化が出来ない値を入ることが考慮されているSafeNormalizeというものもある)
要素を増やす
・Append
A.Scalar と B.Scalar の場合 -> Vector2(A,B) となる
最大Vector4まで要素を増やせる
if文
・if
AとBで比較して出た結果の値を出力する。
※使いすぎると負荷が掛かるので要注意
テクスチャをサンプリング
・TextureSample テクスチャから色を出力する。引数のUVに指定が無ければメッシュのUV値を指定してサンプリングする。
・TextureSampleParameter2D 式はマテリアルのインスタンスおよびコードを介して変更できるパラメータであること以外は、TextureSample と同じです。
Cube Movieなど他にも種類があり使用するテクスチャに合わせ使い分ける必要がある。
テクスチャのUV座標を操作
・TextureCoordinate
詳細ではUV値の繰り返し回数してモデルデータに設定されてるUV座標をタイリングすることが出来ます。
法線マップをサンプリングする時は、自動的にタンジェントスペースの値が返ってくる用になっている。
###UVを時間により制御するノード (UVアニメーション)
・Panner UVの平行移動 (映像業界で使われるパンと同じ意味合い?)
平行移動する速度を設定し、Timeを変更すると平行移動します。
プログラム自体では等速の動きになる為、緩急をつけたい場合はモデルのUVを調整する必要がある。
・Rotate UVの回転
回転するピポットUV値と速度を設定して、Timeを変更すると回転ができます。
参考にしたサイト
https://docs.unrealengine.com/ja/Engine/Rendering/Materials/ExpressionReference/Textures/index.html
https://qiita.com/mao_/items/6e1354a9ff492a586675
https://docs.unrealengine.com/ja/Engine/Rendering/Materials/HowTo/AnimatingUVCoords/index.html
https://historia.co.jp/archives/4514/