六面体と三角形との交差判定

バウンディングボックス(四面体)とレイ(線分)との交差判定法はRRT本に載っているけど、
ポリゴンと四面体との判定は載っていないので、オクツリーの構築のときに困っていました。


以下のようにして、やっとなんとかできた感じです。もっと簡単な方法があるかもしれませんが・・


まず、こういう風に小さな三角形が四面体に交差する場合には、三角形の各辺と四面体との交差判定を
行なえばいいのだけど、

こういう風に三角形が大きな場合(例えば、床が大きなポリゴンでその上に小さなポリゴンのオブジェクトが載っている場合)では、上記の方法ではできません。いままでは、三角形を細かく分割して判定していたので、時間がかかっていました。



そこで、まず、三角形と四面体の一つの面からなる平面との交差線分を求めます。

で、あとは2次元の四角形と線分との交差判定を行ないます。

たったこれだけなんですが、こういう計算は苦手なので長いことてこずってしまいました。


ちなみに、計算速度を上げるために実際には
1.三角形のバウンディングボックスと、バウンディングボックスとの交差判定→駄目ならreturn False
2.三角形の頂点のどれかがバウンディングボックスに含まれていればreturn True
3.三角形の線分のどれかがバウンディングボックスと交差return True
4.上の方法で判定
というステップを取っています。