5. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
백-페이스 컬링
컬링
카메라를 기준으로 뒷 면에 해당되는 삼각형을 추려내는 컬링 기법
(카메라를 바라보고 있나?)
6. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
백-페이스 컬링
컬링
카메라를 기준으로 뒷 면에 해당되는 삼각형을 추려내 이후의 과정을 하지 않는 것
CullMode를 설정
CCW : 반시계 방향을 뒷면으로 인식
CW : 시계 방향을 뒷면으로 인식
NONE : CullMode를 사용하지 않음
7. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체(FRUSTUM)란?
컬링
‘절단하는 하나나 두 평행면 사이의 부분’
8. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링은?
컬링
카메라를 기준으로 카메라의 시야범위에 포함되지 않는 것들에 대해 드로우 콜 자체를 생략하는 것
9. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
문제1. 절두체 컬링은 어느 시점에 결정될까?
카메라를 기준으로 잡아야 겠고, 렌더는 안 한다.
10. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
• Update : 각 오브젝트들의 Transform 및 카메라 Transform 설정
• LateUpdate : 카메라를 기준으로 보이는 오브젝트들을 RenderList에 포함
(언리얼 : TickGroup)
• Rendering : RenderList에 포함된 오브젝트들을 렌더링
12. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
1. 6개의 평면 (절두체)
2. 투영, 뷰, 대상 오브젝트의 월드 행렬
3. 평면 방정식을 생각할 수 있는 두뇌
13. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
1. 투영 공간상에서는 (-1, 1, 0) ~ (1, -1, 1) 로 직육면체이다!
2. 절두체를 구성할 8개의 각 점에 대해 투영 역행렬 변환 → 뷰 역행렬 변환 → 월드 역행렬 변환
14. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
직육면체는 12개의 삼각형으로 돼있다. 6개의 면만 사용
15. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
메시의 점과 6개의 평면을 평면의 방정식을 이용해서 검사한다.
ax + by + cz + d = 0
평면 상에 있다.
ax + by + cz + d < 0
평면보다 아래에 있다.
ax + by + cz + d > 0
평면보다 위에 있다.
ax + by + cz + d = 0
16. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
절두체 컬링
컬링
ax + by + cz + d < 0 : 평면 안에 있어야 한다.
a * px + b * py + c * pz + d < 0
P( px, py, pz ) : 대상 메시 중 한 점의 로컬 좌표
a, b, c : 평면의 법선 벡터의 각 x, y, z 값
d : 평면의 원점과의 거리
1. 외적을 통해 평면의 법선 벡터 (a, b, c) 구하기
2. 원점->평면 한 점 벡터와 평면의 법선 벡터를 내적해서
평면과 원점과의 거리 (d) 구하기
3. 평면 방정식이 0보다 작으면 평면 안에 있음
22. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
쿼드트리란?
컬링
• 영역을 4등분 하는 컬링 기법
• 쿼드트리를 이용하려면 4개씩 나눠야 하므로 크기가 홀수여야 한다.
• 일반적으로 (2^n + 1) 을 공식으로 이용한다.
최상위 노드 1단계 노드 2단계 노드
1 2 3 4 5
23. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
LOD란?
컬링
먼 곳에 있는 오브젝트의 디테일을 감소시켜 렌더링 하는 기법
24. 조 광 민 (팡민) | rhkdals1206@naver.com | 데브루키 스터디[551회] / [언리얼 56회]
크랙 현상
컬링
해결