見出し画像

SbstanceDesigner 正多角形などのフラットシェーディングモデルから近似的なスムース法線を取得する方法。

SbstanceDesigner の関数を書きたい人向け



Position から Normal を作る

各頂点の原点からの距離が同じ、また距離の差が近いと判断し、
頂点のポジションから法線を作ってしまいます。
(応用を考えないのであれば、PositionMap を NormalNormalize に差し込むだけで可能です。)

Main Graph
PixelProcessorの中身
  1. 3Dモデルの頂点座標をベイクする。

  2. Sample用の入力にはモデルをベイクしたPositionMapをInputする

  3. RGBだけ計算したいのでFloat3にする。

  4. 計算の原点を(0.5,0.5,0.5)と考えることで-方向の法線を計算可能にする

  5. 法線をノーマライズして長さを1にする

  6. RGBが-1~1の値になっているはずなので、0~1の値に直す。

  7. Float4に戻してSet as Output Nodeする。

コンベックスが保証されていて、球に近い法線方向で良い場合この方法が可能になる。

以上。


この記事が気に入ったらサポートをしてみませんか?