二次元空間でボカしたことによる弊害

二次元空間で一様にぼかしてしまうと、3D空間上で奥の方が広く強くぼけてしまうことになる。図中の白い□は二次元上では同じ大きさだが、3D実空間上では耳の方が奥にあるため小さくなっており、これを手前の鼻と同じ径でボカしてしまうと強くぼけすぎる。すなわち皮下散乱しすぎてしまうということになる。

白い□は二次元上では同じ大きさだが、3D実空間上では耳の方が奥にあるため小さくなっている。これを手前の鼻と同じ径でボカしてしまうと強くぼけすぎる……すなわち皮下散乱しすぎてしまうということになる

2D空間にした時点で奥行き情報が失われているので、なにも考えずに同じ径でガウスフィルタを掛けてぼかすと、あとでテクスチャマッピングした際に遠距離にあった部位のボケが強くなりすぎてしまう

これはテクスチャ座標のU,V系と実3D空間上のズレから来る歪みだ。この歪みについてはある程度の補正が可能。

あらかじめ、ズレの度合いを事前に計算してテクスチャデータとして持っておき(歪みマップ)、テクスチャ座標系でのボカし処理を行う際に、このズレの度合いをボカし半径のスケール値(縮小率)として利用すればいいのだ。

事前計算で奥行き情報に吟味して計算したストレッチ補正係数を格納したテクスチャを用意しておく。実際のガウスフィルタ適用時にはこのストレッチ補正係数を吟味しつつボカしてゆく。正確性はそれなりだがやらないよりはマシ

また、テクスチャ座標系のボカし処理をしたときに、3Dモデルを2Dへ展開した際の輪郭部分にテクスチャメモリ上の初期化色(黒)が滲み入ってきてしまい、最終レンダリング結果でテクスチャの境目が「継ぎ目」として可視化されてしまう問題がある。

これは前述の歪みマップをうまく修正するか、あるいは一番簡単なのはテクスチャメモリ上の背景色にダミーの平均色を入れ込んでおいて継ぎ目を見えにくくするといったローテクが提案されている。

ボカしたことによりテクスチャメモリ上の初期化色(黒)が滲み出てしまい、テクスチャマッピング時にテクスチャの継ぎ目が見えてしまう

背景色を平均色にしておけば後ろ向きな対処方法だが継ぎ目をそれなりにごまかせる