728x90
반응형
- 개요


불필요한 렌더링을 생략할 수 있는 백페이스 컬링은 벡터의 외적과 내적을 혼합하여 구현할 수 있다
벡터의 외적을 사용하여 삼각형의 면의 방향을 계산하고
벡터의 내적을 사용하여 면의 방향 벡터와 카메라의 시선 벡터(-Z)를 계산하여
결과값이 양수라면 두 벡터는 같은 방향이므로 그리기를 생략하고
결과값이 음수라면 두 벡터는 서로 다른 방향이므로 마주보게 되므로 그리면 된다
- 예제

매 프레임마다 게임 로직을 처리하는 Update3D 함수를 위와 같이 구현하였다
useBackfaceCulling 전역 변수를 사용하여 백페이스 컬링을 사용할 것인지 판단하고
스페이스 바를 누르면 해당 전역 변수의 값을 변경하여 백페이스 컬링을 게임 오브젝트에 적용 + 적용 해제한다

오브젝트의 메시를 구성하는 삼각형을 그리는 DrawTriangle3D 함수를 위와 같이 구현하였다
백페이스 컬링을 적용하는 경우 다음과 같이 동작한다
- 벡터의 외적을 사용하여 삼각형의 면의 방향 벡터를 계산
- 벡터의 내적을 사용하여 카메라의 시선 벡터와 삼각형의 면의 방향 벡터를 계산
- 계산 결과가 양수 - 해당 삼각형은 그리지 않아도 되므로 얼리 리턴
- 계산 결과가 음수 - 해당 삼각형은 그려야 하므로 이후 로직 수행
- 최종 실행 결과

728x90
반응형
'수학 > 이득우의 게임 수학 - 실습 예제' 카테고리의 다른 글
| 화면에 원근감 부여하기 (0) | 2026.05.27 |
|---|---|
| 3차원 공간에서의 자유로운 회전 (0) | 2026.05.06 |
| 벡터의 외적을 활용한 카메라 구현 (0) | 2026.04.29 |
| 3차원 공간의 렌더링 (0) | 2026.03.11 |
| 게임 월드 탐험 예제 (0) | 2026.01.28 |