バウンディング ボックスの 8 つの頂点すべてが錐台の外側にある場合、レンダリングされません。しかし、上記のように sth が発生した場合。そのオブジェクトは表示リストにあるはずです。何か案が?
2189 次
2 に答える
2
ボックスが一連の線ではなく、一連の点であるかのように交点を計算しているためです。これは、擬似コードで行う方法です。
inter = Inside
for ( plane : frustum ) {
verts[2] = findOpposingPointsMostPerpendicularToPlane( box, plane )
near = plane.signedDistance( verts[0] ) > 0.0
far = plane.signedDistance( verts[1] ) > 0.0
if ( !near && !far )
inter = Outside
break
else ( near ^ far )
inter = Intersecting
}
ボックスが AABB の場合、頂点インデックスの静的配列を作成しfindOpposingPointsMostPerpendicularToPlane()
、平面法線コンポーネントの符号を使用してそれらにマップします。
于 2012-02-08T07:37:35.703 に答える
0
bbox から境界球を計算し、6 つの錐台平面のそれぞれから中心距離を確認します。そのうちの 1 つが球の半径よりも小さい場合は、そのオブジェクトを表示リストに含めます。
于 2012-02-09T07:49:22.300 に答える