当たり判定用コースの判別

GAME PROGRAMMING GEMSにレースゲームでのコース移動距離を調べる面白いアルゴリズムが載っていたので、それを使ってモデリングで作る当たり判定領域ができないか考えています。

んで、そのためには3角ポリゴンの塊であるコースを調べて、4角ポリゴンに分けなくてはいけません。これが思ってたより難しく、手間取りました。

やり方としては
1. 最初の4角形を決める
 1.1. 1番目の3角形を最初の4角形の1部とする。
 1.2. それに隣接する(2頂点を共有する)3角形を探す(必ず2つある)
 1.3. 2つの3角形をそれぞれ元の三角形と合わせて4角形を作り、その全長が短い方を正しい4角形とする。
 1.4. 最初の4角形に隣接する(2頂点を共有する)3角形を探す(必ず2つある)。そして、(どちらでもいいので)最初の3角形を次の4角形の一部とする。

2.2つ目以降の4角形を決める
 2.1. 今回の4角形の一部である3角形は決まっているので、これに隣接する3角形を探す
 2.2. そのうち、前回の4角形の一部ではないもの(1点しか共有しないもの)を選び、合わせて4角形を作る。
 2.3. この4角形に隣接する(2頂点を共有する)3角形を探す(必ず2つある)
 2.4. そのうち、前回の4角形の一部ではないもの(共有点を持たないもの)を次の4角形の1部とする。
 以下 2.1.〜2.4.を繰り返し

人間が物を見て何気なく判別してることって、コンピュータにやらせると難しいのだと改めて感じました。もっとシンプルなアルゴリズムがあるはずなので、なんか思いついたら教えてください、よろしく。

とりあえずMilkShape 3D でデータを作って、プログラムにかけました。それが次の画像。
collision01.gif

3角ポリゴンの並んだ面が、4角ポリゴンの面になっています、成功〜。

投稿者 robosheep : 2005年11月12日 22:39

トラックバック

このエントリーのトラックバックURL:
http://render.s73.xrea.com/mt/mt-tb.cgi/552

コメント

一番最初の4角ポリゴンを見つける方法(全長が短い方を正しいとする)が、なんか微妙なんだよなぁ。もっと確実は方法はないものか・・・。

投稿者 robosheep : 2005年11月13日 08:57