분류 전체보기
백페이스 컬링(Back Face Culling)
백페이스 컬링(Back Face Culling / 은면 제거) 백페이스 컬링은 폴리곤은 두 개의 면을 가지고 있으며 하나의 면을 전면, 다른 면을 후면이라 부르고 전면을 향하고 있는 폴리곤들이 뒤쪽의 후면 폴리곤을 가리고 있을때 후면 폴리곤을 그리지 않음으로써 최적화적 이득을 취하는 컬링 기법이다.
벡터 내적과 외적을 응용한 왼쪽과 오른쪽 판별하기
이전 포스팅에서 내적을 통한 시야 판별을 하였다. 월드 좌표계의 Up 방향 벡터를 U, 캐릭터의 Forward Vector를 F, 플레이어와 판별 대상간의 벡터를 D벡터라고 가정하면 U · (D *F), 즉 Det(U,D,F) 값이 0보다 크면 오른쪽, 0보다 작으면 왼쪽에 있음을 판별할 수 있다. 외적을 통한 벡터의 방향이 Up벡터 방향과 예각을 이루면 cos 값이 0보다 큰 원리이다.
내적을 사용한 시야 판별
플레이어의 시야각(Field of View)을/를 θ라고 하면, Forward Vector와 시야 판별 대상과 플레이어간의 벡터간의 내적을 통해 나오는 각도 값이 θ/2를 넘지 않으면 시야 내 존재한다는 것을 판별 할 수 있다. 이때 θ값의 범위가 -90도 ~ 90도 사이에 있으면 플레이어의 앞쪽에 존재한다는 것이고 반대는 뒤에 있기에 아예 시야에 없다고 판단해도 무방하다. 내적을 활용해 판별할 것이기에 cosθ의 값이 0보다 크면 앞쪽, 0보다 작으면 뒤쪽에 있다로 판단할 수 있다.
평면의 방정식과 D의 의미?
평면의 방정식 기본형 : ax + by + cz + d = 0 직선의 방정식 ax+by+c = 0 에서 z축을 추가했다고 볼 수 있다. a,b,c는 법선 벡터를 의미하고 d는 평면과 원점간의 거리를 뜻한다. 평면과 원점간의 거리를 의미하는 d를 통해 ax+by+cz+d = 0이라는 평면의 방정식에 특정 위치 벡터를 대입하였을 때, 위치 관계를 확인하는 것이 가능하다. ax+by+cz+d가 0이 아닐경우의 결과 값은 평면과 평면 외부에 존재하는 점의 거리가 된다.