View Frustum 을 정의할때 6 개의 면을 사용한다.

일반적으로 3차원 공간에서 평면은 Ax+By+Cz+D=0 의 식으로 정의된다.

ViewFrustum 을 만들 때, 6 개의 평면, 즉 left, right, top, bottom, near, far 를 정의해서

각 평면의 INSIDE 의 교집합으로 정의했는데, 문제는 INSIDE 의 정의였다

Ax+By+Cz+D > 0 을 INSIDE 로 간주해야 하는가, 반대로 Ax+By+Cz+D < 0 을 INSIDE 로 간주해야 하는가가 문제였는데

별 생각 없이 > 0 을 INSIDE 로 하고 짰었다.

엔진 코드중에 AABB 와 Frustum 의 충돌체크하는 함수와 OBB 와 Frustum 간의 충돌체크 함수가

있었는데, 각각 다른 자료에서 짜집어온 코드라서 그 부호의 기준이 달랐기 때문에, 제대로 Culling 이

되지 않은 것이었다.

한가지로 통일하고 나니 잘 된다. Moller, Haines 의 RTR 기준으로 < 0 을 INSIDE 로 간주하는 것으로

통일했다.

버그 이야기 끝

imcgames 의 김학규입니다