2007年11月8日

ゲームカレッジ・・・ゲームプログラミング

ゲームカレッジ・・・ゲームプログラミング

ゲームカレッジ2年生の授業「ゲームプログラミング」では、引き続きリアルタイムCGを中心にゲーム作りの要素技術を学んでいます。今日の内容はシャドウ、前期学んだテクスチャを使った影(テクスチャシャドウ)の続きです。

border=0border=0
(1)テクスチャシャドウ(2)うまくいかない例

複雑な地形の場合・・・・

前期に学んだシャドウの手法の場合、地形が複雑になると、上記の(2)のように余計なところに影が出てしまうことがあります。これは、光があたった結果影ができている・・・のではなく、影用のテクスチャを用意して、光源(ライト)から単純に投影しているためにこうなってしまいます。光源からみてキャラクターの向こう側の地形だけに影が出るだけでなく、手前側にも影が出てしまいます。

デプスシャドウ

本日は複雑な形の上に影を落とす方法の一つ、デプスシャドウ(Depth Shadow)について学びました。これは、光源位置にカメラを置いて、そこからの深度(Depth)によって影の表示を行う方法です。

border=0border=0
(3)ライトの位置からレンダリング(4)深度のレンダリング

(3)光源位置からレンダリング

(2)で使用した、シーン(3DCGモデルの組み合わせ)を光源位置でレンダリング(描画)すると、(3)のようになります。

(4)深度のレンダリング

レンダリングの方法に工夫を加えて、通常の色彩ではなく深度(カメラからどれだけ離れているか)を画像として保存します。

深度(Depth)判定には一定の精度が必要な為、ここでは通常の画像ではなく、小数表現が可能なHDR(High Dynamic Range)形式のテクスチャに描画しています。

border=0
デプスシャドウ

この深度と実際のモデルを比較して、より光源から遠い場所にのみ影を落とす事で、不適切な場所に影が出てしまうことを防いでいます。

精度の高い手法

デプスシャドウは精度の良い方法で市販のゲームなどでも良く使われています。キャラクターの影を地形に落とすだけでなく、キャラクターの影をそれ自身に落としたり、あるキャラクターの影を別のキャラクターに落としたりといったことも可能です。

border=0
応用例

まだまだ勉強です

2年生も後半になり、学生生活も残り少なくなってきましたが、まだまだ勉強することがあります。できる限りのスキルを身に付けられるよう、学生たちもがんばって学んでいます。



ad131210 at 15:52│ Comments(0)TrackBack(0)