って原理は単純明快なんですけどね。
実装がめんどっちいんですよ。
何というか効率的な実装を考えると、
やっぱパターン列挙してったほうが速いよねっていう・・・
だって0の要素が二つあるようなベクトルと内積とったり外積とったりするの明らかに無駄なんだもん。だもん。だもん。
ま、どうでもいいことではあるんですけどね。
分離軸判定を考えた人は偉い。
OBB同士の判定をとるとき、辺の方向ベクトル同士の外積を取る理由がわからないという記述がネットには結構あるので分離軸判定について理解している範囲でメモしておく
分離軸判定~3D版~
凸包な物体においては物体間に平面が挿入可能かどうかによって、衝突判定が可能なのは直観的に理解できる。
(逆に衝突していれば物体間に平面の挿入は不可能)
ここからこの平面を利用して判定に応用しようというのは自然な発想になる。
平面は1法線によって向きが定まるので、ある向きの平面が挿入可能かを調べるには、この法線方向の直線に物体を射影し重なりがないかを調べれば済む。
重なりがなければその瞬間に判定は終了する。 挿入可能な平面の候補を十分なパターン調べれば接触があることが保障できる。
この場合法線が分離軸というらしいので分離軸判定とかいうかっちょいい名前がついている。
直線に射影すればいいという話だが、非直観的なのでやはり平面で考えることにする。
OBB同士の衝突を考える場合、
各OBBの持つ平面と平行な向きの平面を挿入しようと試みるのは自然な発想で、実際これはほとんどの場合うまくいく。
うまくいかないのは、以下のような場合
青色の平面と並行なものも、赤色の平面に並行なものも挿入不可能。
もう片方のOBBも傾いているために同様に平面を挿入できない場合、これは面に平行なだけでは判定できないことを示している。
ここで登場するのが辺同士外積。
辺同士の外積をとればOBB同士の各辺に垂直なベクトルが出来上がるため、これを法線とする平面を候補に挙げることができる。
上記のように衝突していない場合は、必ず一つは挿入可能な平面が見つかる。
こういう理由でOBB同士の衝突は辺の外積も調べないといけない。
うーん、いい復習になった。
分離軸判定
コメントはまだありません。