ポリゴンの分解は大変


わざわざポリゴンを分解する必要は無く、その他の手法でも敵機の破壊シーンは演出することができるのだが、あえて面倒くさそうなポリゴン分解に挑戦した。
Direct Graphicsでの頂点データやマテリアル・テクスチャの扱いがどのようになっているのかを学ぶには、うってつけの課題であると考えたからである。

ヒントにしたのは、DirectX8 SDK のサンプルにある「Pick」プロジェクトである。
サンプル「Pick」は、画面内で回転しているポリゴンで構成されたトラ(虎)をマウスでクリックすると、マウスポインタと重なっているポリゴンだけを正しく表示し、その他のポリゴンは全てワイヤーフレームで表示する。
これだ! このソースコードを果敢に解読すれば、ポリゴンの構成が必ず理解できるに違いない!
必死に解読し、自分のゲームに取り入れてみる。ハングアップする。
さらに入念にソースコードをにらみつけては改良を加え、ゲームに取り入れてみる。またハングアップする。そのうち、OSが挙動不審になり、フォーマットする。

これを何度も繰り返し、ようやくそれらしい分解効果が出来た。
ポリゴンには三角形が使われるが、三角形が3次元空間にあるとき、それぞれの頂点座標は(x1,y1,z1 ; x2,y2,z2 ; x3,y3,z3)と、実に9つものデータを持つ。
これらの座標を、敵機(3Dオブジェクト)のほぼ中心点から徐々に水平方向に離していき、同時に降下させる。
降下は単純であるが、水平方向への分解は実に面倒であった。
平均150近くあるポリゴンの頂点全てに対して、敵機の中心点からみた一枚のポリゴンの相対距離がいくつであるかを算出し、増加させる X と Z 座標を決定してゆく。

そして、なかなかの爆発(分解)シーンが完成した。

←戻る

Last Update 2001.09.21