3

見る

バウンディング ボックスの 8 つの頂点すべてが錐台の外側にある場合、レンダリングされません。しかし、上記のように sth が発生した場合。そのオブジェクトは表示リストにあるはずです。何か案が?

4

2 に答える 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 に答える