夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blenderでレンダリング時にメッシュの表と裏で違う色を出す

本日はBlender枠です。

Blenderではメッシュのオーバーレイの機能からメッシュの表と裏を可視化することができます。

しかしこの状態で作業を行うには難があります。

一般的にメッシュをエクスポートする前やスムースがおかしい際にチェックの意味で表示させ、常に有効にしている機能ではありません。

またレンダリング時にも無視されています。

今回はシェーダー側で表面はそのまま、裏面だけ赤く表示するような実装を行っていきます。

〇メッシュの裏面だけ描画する処理

メッシュの向きをシェーダー側で取得するにはジオメトリノードを使用します。

ジオメトリノードには後ろ方向の面というパラメータがあり、これはメッシュの表面は0(黒)、裏面は1(白)を返す1次元のパラメータです。

これをベースカラーに接続することで次のようにメッシュの裏面は白、表面は黒が描画されます。

任意のカラーを使用するためには次画像のようにノードを接続します。

これは一度カラーをRGBでそれぞれのチャンネルに分けそれぞれの成分で面の向きを乗算しています。

本当ならFloat3で掛け合わせたかったのですが、そのまま接続すると出力値が1次元になるためそれぞれのパラメータに掛け合わせRGB合成を行っています。

ジオメトリノードの出力にカラー反転を挟むことで後ろ向きの面の反転=表面を取得することができます。

プリンシパルBDSFシェーダーごと複製し、裏面、表面のシェーダーの出力をシェーダーミックスノードで接続しマテリアル出力へ渡します。

これによって表面、裏面それぞれで任意の色を付けることができました。

この方法ではオーバーレイではないのでレンダリングにも対応しています。

本日は以上です。