シャドウマップ・その戦い。 / 1996年09月21日
前回、「シャドウマップは通常シーン全体を含むように作成される」と書いたが、
これが具体的にどういうことか、ちょっと確認してみよう。
まずは適当な人物フィギュアと基本小道具の平面詳細をロードする。
そしてライトの一つを上方に動かし、視点をそのライトのライトカメラに切り替える。
その状態で、平面詳細を適当に1000%ぐらいに拡大してみよう。
すると次の瞬間、視点が自動的に遠ざかって平面詳細がウィンドウ内に収まるはずだ。

今度は平面詳細を選択し、特性パレットで「影を作成」のチェックボックスを外してみよう。
すると今度は人物だけがカメラに収まるようにクローズアップする。
画面がすぐに切り換わらない場合は、選択しているオブジェクトなどを変更してみるといい。

このように、ライトカメラは影を作成するオブジェクト全てを含むように自動調整される。
なぜこのような自動調整機能がついているのだろうか。
それは、今使用しているライトが無限光だからだ。
スポットライトでは、ライトが照射する範囲、イコール影の作成される範囲は決まっている。
したがってシャドウマップもその範囲内で作成すればいい。
ところが無限光ではそうはいかない。無限光は無限の範囲を照射するライトであるため、
そのままではシャドウマップも無限大の範囲を含めなければならない。
そこで「最小の範囲で済むように」、シャドウマップに含める範囲が可変になっているのだ。
ここまで書けばもうおわかりだろう。
以前、ライトカメラにはライトの調整以外の肝心な機能がある、と書いた。
つまりライトカメラは、ユーザーがライトを調整する用途にも使えるものの、
もともとはPoser自身が、シャドウマップを生成し影を描画するために使用するものだったのだ。
(蛇足だが、ポイントライトでシャドウマップが使用できない理由もこのあたりにある。
ポイントライトは全方向を均等に照らすライトだが、そのシャドウマップを作成するには
まず全方向を均等に投影するカメラ、というものが実装されなければならない。
なので今のところポイントライトではレイトレース影しか使用できないのである。)
そしてなにより重要なことは、
ライトカメラを動かすことで、影の作成される範囲をコントロールできるということである。
いや待て、ライトカメラは動かせないんじゃなかったか?
とツッコんでくれたあなたは一連のTips記事を熟読して下さっている方である。ありがたい。
確かにライトカメラはライトに付属するカメラなので、位置も角度も動かせない。
だが実は、写っている範囲を拡大したりずらしたりすることはできるんである。

ズームは拡大縮小(値が小さくなるほど拡大)、パンXは横方向の移動、パンYは縦方向の移動だ。
これらを使用して、カメラを対象まで近づけてみよう。

ライトカメラからはみ出す部分で影が途切れているのがわかるだろう。
ちなみに実際にレンダする範囲が正方形でない場合は、横幅を基準にした正方形で計算される。

この機能を使えば、カメラに写る範囲より大きな背景を使用しているときでも、
必要な範囲だけにシャドウマップの生成範囲を限定することができる。
大きな小道具(笑)を使用していても、影の精度を上げずに鮮明な影を描画できるのである。

もちろん、この方法では背景でも遠方にあるものの影を落とすことはできない。
その場合はもうさっぱり諦めて、合成に走ることをお勧めする。
つまり遠景の影をレンダしたものと、近景の影をレンダしたものを画像処理ソフトで合成するのだ。

近景をレンダするときに遠景を表示しておくのは、まあ合成が楽だからだ。
Poserの出力するイマイチなアルファチャンネルでも、フリンジをほぼ気にせずに作業できるので
トータル的な作業時間は短縮できるんではないかと思う。
レンダリングオプションで影のみレンダを使うのもアリ。
まとめると、背景を含むシーンで明確な影を描画するためには
・背景小道具が影を落とす必要がない場合は「影の作成」のチェックを外す。
・背景小道具も影を落としたい場合はライトカメラで影の作成範囲をギリギリまで絞る。
・影を落とす範囲が広い場合は、ライトカメラを調整したものを何パターンか合成する。
・影の精度や影の偏りはその都度適切に調整する。
ということになる。
これらにレイトレースシャドウやAO(環境閉塞)を適宜組み合わせることで、
Poserでもそれなりに説得力のある影の描画が可能になるだろう。
果たして。
長々と説明してきたが、結局のところ結論は
劇的に効果が出たり簡単手軽に解決することはない、ということだ。
つまるところはどれだけ的確に対策を打てるか、そして手間暇をかけられるかが
最終的な品質に繋がっていくのだと思う。
次は……レイトレースシャドウとAO(環境閉塞)をすっ飛ばして、拡散IBLに行こうかな〜。
■頂いたコメント■
これが具体的にどういうことか、ちょっと確認してみよう。
まずは適当な人物フィギュアと基本小道具の平面詳細をロードする。
そしてライトの一つを上方に動かし、視点をそのライトのライトカメラに切り替える。
その状態で、平面詳細を適当に1000%ぐらいに拡大してみよう。
すると次の瞬間、視点が自動的に遠ざかって平面詳細がウィンドウ内に収まるはずだ。

今度は平面詳細を選択し、特性パレットで「影を作成」のチェックボックスを外してみよう。
すると今度は人物だけがカメラに収まるようにクローズアップする。
画面がすぐに切り換わらない場合は、選択しているオブジェクトなどを変更してみるといい。

このように、ライトカメラは影を作成するオブジェクト全てを含むように自動調整される。
なぜこのような自動調整機能がついているのだろうか。
それは、今使用しているライトが無限光だからだ。
スポットライトでは、ライトが照射する範囲、イコール影の作成される範囲は決まっている。
したがってシャドウマップもその範囲内で作成すればいい。
ところが無限光ではそうはいかない。無限光は無限の範囲を照射するライトであるため、
そのままではシャドウマップも無限大の範囲を含めなければならない。
そこで「最小の範囲で済むように」、シャドウマップに含める範囲が可変になっているのだ。
ここまで書けばもうおわかりだろう。
以前、ライトカメラにはライトの調整以外の肝心な機能がある、と書いた。
つまりライトカメラは、ユーザーがライトを調整する用途にも使えるものの、
もともとはPoser自身が、シャドウマップを生成し影を描画するために使用するものだったのだ。
(蛇足だが、ポイントライトでシャドウマップが使用できない理由もこのあたりにある。
ポイントライトは全方向を均等に照らすライトだが、そのシャドウマップを作成するには
まず全方向を均等に投影するカメラ、というものが実装されなければならない。
なので今のところポイントライトではレイトレース影しか使用できないのである。)
そしてなにより重要なことは、
ライトカメラを動かすことで、影の作成される範囲をコントロールできるということである。
いや待て、ライトカメラは動かせないんじゃなかったか?
とツッコんでくれたあなたは一連のTips記事を熟読して下さっている方である。ありがたい。
確かにライトカメラはライトに付属するカメラなので、位置も角度も動かせない。
だが実は、写っている範囲を拡大したりずらしたりすることはできるんである。

ズームは拡大縮小(値が小さくなるほど拡大)、パンXは横方向の移動、パンYは縦方向の移動だ。
これらを使用して、カメラを対象まで近づけてみよう。

ライトカメラからはみ出す部分で影が途切れているのがわかるだろう。
ちなみに実際にレンダする範囲が正方形でない場合は、横幅を基準にした正方形で計算される。

この機能を使えば、カメラに写る範囲より大きな背景を使用しているときでも、
必要な範囲だけにシャドウマップの生成範囲を限定することができる。
大きな小道具(笑)を使用していても、影の精度を上げずに鮮明な影を描画できるのである。

もちろん、この方法では背景でも遠方にあるものの影を落とすことはできない。
その場合はもうさっぱり諦めて、合成に走ることをお勧めする。
つまり遠景の影をレンダしたものと、近景の影をレンダしたものを画像処理ソフトで合成するのだ。

近景をレンダするときに遠景を表示しておくのは、まあ合成が楽だからだ。
Poserの出力するイマイチなアルファチャンネルでも、フリンジをほぼ気にせずに作業できるので
トータル的な作業時間は短縮できるんではないかと思う。
レンダリングオプションで影のみレンダを使うのもアリ。
まとめると、背景を含むシーンで明確な影を描画するためには
・背景小道具が影を落とす必要がない場合は「影の作成」のチェックを外す。
・背景小道具も影を落としたい場合はライトカメラで影の作成範囲をギリギリまで絞る。
・影を落とす範囲が広い場合は、ライトカメラを調整したものを何パターンか合成する。
・影の精度や影の偏りはその都度適切に調整する。
ということになる。
これらにレイトレースシャドウやAO(環境閉塞)を適宜組み合わせることで、
Poserでもそれなりに説得力のある影の描画が可能になるだろう。
果たして。
長々と説明してきたが、結局のところ結論は
劇的に効果が出たり簡単手軽に解決することはない、ということだ。
つまるところはどれだけ的確に対策を打てるか、そして手間暇をかけられるかが
最終的な品質に繋がっていくのだと思う。
次は……レイトレースシャドウとAO(環境閉塞)をすっ飛ばして、拡散IBLに行こうかな〜。
■頂いたコメント■
›› Read More