728x90
반응형
- 개요
프로젝트에서 선언하고 정의한 절두체의 판별 함수를 사용하여
절두체 외부에 있는 게임 오브젝트는 생략하는 절두체 컬링을 구현한다
- 예제
1) 테스트 환경의 구성

씬을 로드하는 LoadScene3D 함수의 로직을 위와 같이 구성한다
고정 시드를 사용하여 게임 오브젝트의 XYZ 값을 랜덤하게 조정한다
이후 for문을 500번 순회하여 500개의 게임 오브젝트를 생성한다
2) 절두체의 생성

게임을 렌더링하는 Render3D 함수의 로직을 위와 같이 구성한다
우선, 카메라의 설정 값을 가져와 절두체를 구축하기 위한 준비를 진행한다
- nearZ 로컬 변수와 farZ 로컬 변수 : 카메라의 원평면 값과 근평면 값으로 설정
- pSin 로컬 변수와 pCos 로컬 변수 : 카메라의 시야각 절반에 대한 sin 함수와 cos 함수 값으로 설정
- 이후 각각의 로컬 변수를 사용하여 절두체를 구성하는 평면의 배열을 생성
- 순서대로 위쪽, 아래쪽, 오른쪽, 왼쪽, 근평면, 원평면을 생성

이전 로직에서 생성한 평면의 배열을 사용하여 절두체를 구축한다
이후 다음의 지역변수들을 사용하여 절두체 컬링의 적용을 확인한다
- totalObjects 로컬변수 : 씬에 소속된 전체 게임 오브젝트
- culledObjects 로컬변수 : 절두체 외부에 있어서 절두체 컬링된 게임 오브젝트
- renderedObjects 로컬변수 : 렌더링이 진행된 게임 오브젝트
이후 절두체 컬링을 진행한다
게임 오브젝트의 위치를 뷰 공간으로 변환하고 CheckBound 함수를 사용하여 절두체 영역에 있는지 확인한다
만약 절두체의 외부에 있다면 그리기를 생략한다
- 최종 실행 결과

실행 결과에서 보이듯이 절두체 컬링은 문제없이 동작한다
단, 화면의 좌우에 빈 공간이 발생하는데 이는 절두체를 구성하는 평면의 방정식을 생성할 때
가로와 세로가 균일하다고 가정하였기 때문이다
이를 바로잡기 위해서는 카메라 화면의 종횡비 값을 참고하여 평면의 방정식을 보정해야 한다
그리고 여기서 원근 투영 행렬을 사용하면 더 간편하게 평면의 방정식을 계산할 수 있다
728x90
반응형
'수학 > 이득우의 게임 수학 - 실습 예제' 카테고리의 다른 글
| 구 바운딩 볼륨을 이용한 절두체 컬링 (0) | 2026.07.22 |
|---|---|
| 원근 투영 행렬을 이용한 절두체 컬링의 구현 (0) | 2026.07.08 |
| 캐릭터 얼굴에서 발생한 왜곡 보정 (0) | 2026.06.10 |
| 깊이 값을 적용하여 화면에 원근감 부여하기 (0) | 2026.06.03 |
| 화면에 원근감 부여하기 (0) | 2026.05.27 |