今回もサンプルを用意しました。
このファイルには、衝突判定のサンプルの他に、犬が動く中途のサンプルプログラムも入っています。
とりあえず衝突判定ルーチンが完成すれば、あとは前回作成した tri ファイルから衝突用のポリゴン群を作り出すこともできると思います。
ac3d で作成したモデルに対し、そのまま任意のベクトルとの衝突判定が実現できるはずです。
しかしそこで問題になるのは、効率や処理速度となるでしょう。
下記の画像にある粒子が落ちるサンプルプログラムでは、全体的に処理数が少ないので目立ちませんが、これが数百数千ものポリゴンやベクトルに及ぶ場合、それらを相互に全て衝突検査するのは非効率的です。
もしそのようなシーンが必要になった場合は、衝突の検査に Octree や Binary Space Partition (BSP) などに代表される効率化のためのアルゴリズムを考慮しなくてはいけません。
それらについての説明は省略しますが、今回紹介した単純なアルゴリズムと BSP を組み合わせるだけでも、多少複雑なモデル(例えば部屋)でもウォークスルーが高速化できます。
↑複数のポリゴンと粒子の衝突
|