ポリゴンメッシュとして凸凹のある表面で影を抑えたい
水面や皺ができた紙、ベッドのシーツなどポリゴンメッシュとして凹凸がある形状の場合に、意図しない影ができる場合があります。
ここでは、ポリゴンメッシュで凸凹のある紙をモデリングした場合を例に説明します。
以下のようにモデリングしています。
光源としてスポットライトを与えています。
レンダリングすると、不正な影が出ました。
これは、光源からの光がポリゴンメッシュの面によりさえぎられることにより発生します。
これは陰(シェード)ではなく影(シャドウ)になるため、ポリゴンメッシュの「限界角度」を調整しても回避できません。
この場合のいくつかの解決方法を記載します。
サブディビジョンサーフェスを使用する
ブラウザで対象のポリゴンメッシュを選択し、
形状情報ウィンドウの「サブディビジョンサーフェス」の「分割手法」で「OpenSubdiv」または「カトマル・クラーク」を選択します。
これにより、ポリゴンメッシュの面が細分割されます。
レンダリングすると以下のようになりました。
影が消えています。
法線マップを作成して、テクスチャとして割り当てる
サブディビジョンサーフェスを使用した場合、面は「滑らか」に細分割されます。
紙などの表現のときはあえて凸凹を粗くしていたり、少ないポリゴン数を維持して他ツールに形状をエクスポートしたい場合もあります。
このような目的の場合は法線マップを作成し、法線マップをテクスチャとしてマッピングする手段が有効です。
手順は以下のようになります。
カメラを真上からの視線に切り替え
統合パレットのカメラウィンドウで、「モード」を「上面図」に切り替えます。
また、透視図で真上から見下ろした視線方向になるように向きを整えます。
レンダリング設定のマルチパスで「XY法線」を追加
レンダリング設定の「マルチパス」タブで「XY法線」をオンにしてレンダリングします。
レンダリングして法線のテクスチャとして保存/編集
レンダリングしてイメージウィンドウ下より「XY法線」を選択すると、法線が表示されます。
このレンダリング結果では、マッピングで割り当てているすべてのバンプマップ/法線マップが反映されます。
また、ポリゴンメッシュのジオメトリとしての凸凹もこの法線マップに反映されます。
このレンダリング画像をファイル保存し、2Dペイントツールで必要な箇所だけトリミングして法線マップのテクスチャとします。
法線マップを割り当て
カメラを元の視点/視線に戻します。
表面材質ウィンドウのマッピングで既存の「法線」「バンプ」を削除します。
保存した法線マップをシーンに読み込みます。
表面材質ウィンドウのマッピングで、「イメージ/法線」として法線マップを割り当てます。
このとき、テクスチャの向きに注意する必要があります。
UV図面でUVの向きを確認し、適宜「左右反転」「上下反転」「90度回転」などを適用します。
レンダリングすると、以下のようになりました。
この段階ではまだ不正な影は残っています。
ポリゴンメッシュを平坦にする
割り当てた法線マップは、元形状での凸凹も反映された状態といえます。
このとき、紙のような薄い形状のポリゴンメッシュのジオメトリとしての凸凹は、輪郭以外はレンダリングにほとんど影響しません。
ポリゴンメッシュの輪郭以外の頂点を選択して、マニピュレータを使ってY軸方向に縮小し凸凹を平面にしました。
レンダリングすると、不正な影は消えました。
この方法は、法線マップを使用したベイクとなります。
頂点や面を削減する場合(ポリゴンリダクション)にも有効な最適化手段になります。