光あるところ... - 2002年05月19日(日) 最近の口癖です。 続きは「必ず影がある」 ということで、DirextXの影について... PSのころのポリゴン単位のZSort方法では、いいかげんに影をつけることができたのだが...要は、半透明のグーロポリゴンを地面に置けばいいだけのこと。地面とその他のオブジェクトの描画順序を考えれば、オブジェクトの真下に影を落とすことは割と簡単にできたのだが... OpenGLとかDirectX等では、ZSortがピクセル単位なので、ルーズに影を落とすのはちょいと面倒くさい。ShadowBuffer/ShadowVolumeというのもあるのだが、これが難物。ポリゴンのエッジを検出して光線をトレースして、影を作るというものなのだが、案の定、影と日向の境目がくっきり、突起の多いものでやると、もぉ影なのかオブジェクトなのか判別ができない、おまけに影用と実物用に二回透視変換をかけたりするので処理も重いし、いまさらグラフィッカに「影用のObjectつくってくれー」というのも億劫なので、 結局、 Objectを描画時にStencilにマスクをかける 影用の板ポリゴンをプログラムで作成 shadowVolumeを板ポリから生成してStencilBufferに書き込む 板ポリゴンを地面の傾斜に合わせて再計算/描画 で何とか、ゲームらしい影が出るようになりました。 ...
|
|