本日はBlender枠です。
Blenderのマテリアルでライトが当たっている部分を検出していきます。
〇ライトが当たっている部分を検出する実装
現在のBlender(4.x)ではライトが当たっている部分を検出するノードは存在しません。
しかしいくつかのテクニックを使用することで疑似的に光が当たっている場所を検出することができます。
いかがその実装になります。
ライトの実装は一般的にLdotN
という処理が使用されます。
これはライト(L)の情報(向き)とメッシュの法線(N)の内積をとることでライティングの計算ができます。
しかし前述のとおりライトの情報を取得するノードは存在しません。
そのためテクスチャ座標
ノードで他のオブジェクトの位置情報を参照することでライトの位置情報を取得します。
今回は空のオブジェクトを配置し、オブジェクトコンストレイント
から位置コピー
を追加しました。
ターゲットとしてLight
を指定することで、オブジェクトがライトに追従するようになります。
このオブジェクトをテクスチャ座標
のオブジェクトに指定します。
ジオメトリノード
のノーマルと内積をとることでNdotLが実現できます。
この値をシェーダーミックスの係数などで使用することで影部分と光が当たっている部分で別々のシェーダーを使用することができます。
〇応用
応用することでひかりがあたっている部分のみリムライトをつけることができます。
本日は以上です。