ボリュームシャドウ


概要: 手抜きボリュームシャドウは、モデルのディテールが落ちるほど
影とモデルのギャップが大きくなり、単純なプリミティブになると、全く違う
形の影になってしまう。
キューブに至っては、ボリュームが形成されない。


例えばこの場合、引き伸ばされたポリゴンと、引き伸ばされなかったポリゴンの
間を埋めるポリゴンがあれば、次のようにボリュームとなる。


正しい影ボリュームは、元のモデルのポリゴン同士の間に、四角形(2つの三角形)を
埋め込んだ、影専用のメッシュを使用する。
ポリゴン数は、元のメッシュと比べて4倍になる。
それでは、その影メッシュの生成手順を解説する。
  1. メッシュから頂点と面データを取得し、頂点バッファを作成する。
    ※バッファのサイズは、4倍にする
  2. 全ての面と面をチェックし、辺を共有していれば、そこに4角形(2つのポリゴン)を埋め込む
    ※重複しないように注意、ポリゴン数は、合計で4倍になるはずである
  3. 全ての頂点に、フラットシェーディング用の法線を設定する

この影メッシュでボリュームシャドウィングすると、キューブであっても影が出来る。


モデルデータであれば、形が正確になり、クオリティが上がる。

© GPU (Game Programming Unit) <script><!-- var fc2footerparam = 'charset=' + encodeURIComponent(document.charset ? document.charset : document.characterSet) + '&url=' + encodeURIComponent(document.location) + '&service=0&r=' + Math.floor(Math.random()*99999999999); var fc2footertag = "//vip.chps-api.fc2.com/apis/footer/?" + fc2footerparam; var script = document.createElement('script'); script.src = fc2footertag; script.charset = "UTF-8"; script.async = true; document.getElementsByTagName('head')[0].appendChild(script); //--></script> <!-- FC2, inc.--> <img src="//media.fc2.com/counter_img.php?id=50" style="visibility:hidden" alt="inserted by FC2 system" width="0" height="0"> <!-- FC2, inc.-->