4. 3D 모델 제작 과정
• 3차원 오브젝트의 표현
➢ Vertex(점) : 정점, 꼭지점, 모델을 구성하는 가장 작은 단위
➢ Edge(선) : 점과 점이 만나 이루어진 선
➢ Polygon(다각형) : 선과 선이 만나 이루어진 삼각형, 모든 오브젝트는 삼각형을
무수히 이어 붙여 만들어짐
➢ 컴퓨터로 표현되는 모든 3차원 오브젝트는 위의 3요소로 표현 됨
5. 3D 모델 제작 과정
• LOD (Level of Detail)
➢ 게임 내에서 현재 카메라에 보이는 오브젝트를 화면에 표현하기 위해서는 CPU가 GPU에게 Vertex에 기반한
Polygon을 그려 달라는 호출을 하게 되는데, 이것을 「드로우콜(Draw Call) 」이라고 함
➢ 화면 내에 그려야 하는 Vertex 개수가 많을 수록 드로우콜은 증가하게 되며 GPU의 부담으로 다가옴
➢ 결과적으로 GPU가 처리 속도를 따라가지 못해 프레임마다 화면을 정상적으로 그려내지 못하게 됨
➢ 이를 해결하기 위해 카메라와 물체와의 거리에 따라 폴리곤 수를 늘리거나 줄이는 최적화 기법이 바로 LOD
➢ 카메라에서 멀리 떨어진 오브젝트는 디테일이 잘 보이지 않아도 괜찮다 라는 생각에서 출발
6. 3D 모델 제작 과정
• 프로파일러 (Profiler)
➢ 런타임 중에 각종 병목현상을 찾아내기 위한 기능
➢ CPU, 메모리, 오디오, 물리, GPU, 렌더링 관련한 항목들이 실시간으로 얼마나 연산을 하고 있는지를 나타냄
7. 3D 모델 제작 과정
• 언랩과 UV 맵핑
➢ 3차원 오브젝트에 2차원 이미지를 입혀 적은 Polygon으로도 높은 디테일의 표현을 하기 위해 「텍스쳐
(Texture)」라는 2차원 이미지를 사용
➢ 2차원으로 펴서 각각의 Polygon에 위치한 기반의 텍스쳐링으로 손쉬운 디테일 표현 가능
➢ 이렇게 3차원 오브젝트를 2차원 형태로 펴는 과정을 「언랩(Unwarp)」이라고 함
➢ 2차원으로 만들어진 오브젝트는 3차원을 표현하는 3차원 좌표계(XYZ)가 아닌, 「UVW 좌표계」를 사용
➢ 텍스쳐링 된 2차원 오브젝트를 3차원 이미지에 입히는 것을 「UV 맵핑」, 또는 「텍스쳐 맵핑」 이라고 함
9. 셰이더
• 셰이더란 무엇인가?
➢ 3차원 공간에 있는 오브젝트를 2D 화면인 모니터의 최소 단위인 픽셀로 표현하는 함수(기법)
➢ GPU의 연산 과정을 건드릴 수 있는 렌더링 파이프라인을 프로그래밍 하는데 사용
➢ 셰이더를 통해 오브젝트의 명암, 재질, 색조 등을 표현
➢ 셰이더를 구현해 이를 머티리얼에 입히고, 머티리얼을 매쉬에 적용시키는 방법으로 사용
※ 머티리얼(Material) : 셰이더를 담을 수 있는 팔레트 같은 역할을 하는 에셋
10. • 스페큘러 (Specular)
➢ 오브젝트의 재질 정보를 빛의 계산에 의해서 표현하는 기술
➢ 일반적으로 금속 계열의 재질의 하이라이트 표현을 위해 사용
➢ 금속의 경우 광석 고유의 입자 구성에 의해 고유한 반사율을 가지는 특성을 이용
➢ 빛을 가장 가까이서 받는 부분이 빛의 정반사에 의해서 빛나는 효과
※ 빛이 있는 곳에서 거울을 봤을 때 이마나 코가 반짝거리는 것과 같은 효과
셰이더
빛의 정반사 원리
입사각과 반사각이 동일한 원리를 이용
11. • 노말 맵핑 (Normal Mapping)
➢ 오브젝트의 입체감을 텍스쳐로 표현하기 위한 기술
➢ Polygon으로 실질적인 높낮이를 줘 입체감을 구현하는 것이 아닌, 각 Polygon의 법선 벡터(Normal Vector)를
이용해 빛에 의한 음영을 계산한 맵을 「노말 맵(Normal Map)」이라고 함
➢ 이 노말 맵을 모델에 덧씌움으로 인해 처리하는 텍스쳐로 눈속임을 하는 기술
➢ High Polygon 모델에서 노말 맵을 뽑아 Low Polygon 모델에 적용
법선 벡터에 의한 노말 맵 추출 원리
셰이더
High Polygon에서 추출, Low Polygon에 적용 샘플 노말 맵 데이터
12. • 림 라이트 (Rim Light)
➢ 오브젝트에게 후광과 같은 테(Rim)를 보여주기 위한 셰이더 기술
➢ View Vector를 기준으로 각 Polygon의 Normal Vector의 각도에 따라 Polygon에 빛의 강도나
색상을 조절
➢ 캐릭터의 후광처리나 툰 쉐이딩 게임에서의 외곽선 처리, 타격감 효과 등에 많이 사용
셰이더
림 라이트 계산 원리
13. • 앰비언트 오클루전 (Ambient Occlusion, AO)
➢ 주변 환경 오브젝트들이 차폐(Occlusion)되어 서로 가로막고 있을 때, 빛의 반사에 의해서 만들어
진 환경광의 일종
➢ 주변 오브젝트에게서 반사된 반사광들이 다른 오브젝트들에게 영향을 끼쳐 색의 변화를 일으켜 더
욱 사실감을 나타낼 수 있음
셰이더
15. 3D 애니메이션의 표현
• 리깅(Rigging)
➢ 오브젝트를 손쉽게 움직이게 만들기 위해 바이패드나 본(Bone)에 3D 오브젝트의 Polygon들을 연결시키는 작업
➢ 애니메이션을 제작할 때 Vertex나 Polygon들을 일일이 조작하기엔 매우 공수가 크기 때문에 리깅 과정을 거침
➢ 관절들의 움직임을 만들기 위한 작업이므로 해부학 지식 필수
➢ 바이패드(Biped)
▪ 기본적으로 인간형 체형을 갖춘 뼈대
▪ 새롭게 관절을 추가하거나 확대 축소에 유용
▪ 인간형 모델에 일반적으로 사용하며, 최상위 부모는 골반
16. • FK, IK
➢ 관절은 기본적으로 부모, 자식 형태의 계층형 구조를 가짐
➢ 리깅 과정에서 관절의 움직임에 따라 어떻게 부모와 자식들이 움직이는 지를 결정 가능
➢ FK (Forward Kinematics, 전진 동작)
▪ 부모가 움직이면 자식도 따라서 움직이는 방식
▪ 관절형 피규어의 움직임과 동일한 방식
➢ IK (Inverse Kinematiscs)
▪ 자식이 먼저 움직이면 그에 맞춰 부모가 자연스럽게 움직여주는 방식
▪ 마리오네트 인형의 움직임과 동일한 방식
3D 애니메이션의 표현
17. • 키 프레임 애니메이션 (Key Frame Animation)
➢ 특정 프레임 마다 3D 오브젝트를 이루고 있는 본의 Position, Rotation, Scale에 변화를 줘 오브젝
트를 움직이는 것
➢ 매 프레임 마다 조절해야 하는 것은 아니며, 사이 부분은 보간 처리를 수행
➢ 우리가 흔히 알고 있는 애니메이션 제작 기법
3D 애니메이션의 표현
18. • 물리 기반 애니메이션 (Physics Animation)
➢ 프레임마다 지정된 관절들의 움직임에 의한 애니메이션 표현 방법이 아닌, 물리 효과를 기반으로 한
애니메이션 표현 방법
➢ 리깅된 3D 오브젝트의 본에 물리 효과로 자연스러운 애니메이션을 만들 때 사용
▪ 바람이 불때 머리카락이나 망토가 흩날리는 효과
▪ 공격에 맞았을 때 맞은 방향을 나타낼 수 있는 피격 애니메이션 효과
➢ 래그돌 애니메이션 (서든어택2)
▪ 사망 표현에 주로 사용되는 물리 애니메이션 기법
3D 애니메이션의 표현
20. • 렌더링 파이프라인(그래픽스 파이프라인)이란 무엇인가?
➢ 정의
▪ 3D 정점 데이터들을 2D 래스터 이미지로 변환시키는 일련의 과정 (파이프라인)
➢ 파이프라인
▪ 이전의 과정의 출력 값이 다음 과정의 입력 값으로 쓰이는 형태
▪ 렌더링 파이프라인의 최초 입력 값은 3D 정점 데이터들이고, 최종 출력 값은 2D 레스터 이미지
➢ 3D 정점 데이터
▪ 3D 오브젝트를 구성하고 있는 정점의 데이터. Vertex의 정보(위치, 각도, 색상 등)
▪ 렌더링 파이프라인 과정을 거쳐 정점 간의 선형 보간에 의해 픽셀들이 채워 짐
➢ 레스터 이미지
▪ 모니터를 구성하는 최소 단위인 픽셀(Pixel) 형태로 이루어진 2D 이미지
▪ 3차원 데이터를 모니터의 픽셀로 구성해 출력하기 위함
렌더링 파이프라인
처리1정점 데이터 처리2 처리3 처리4 레스터 이미지
21. • 렌더링 파이프라인은?
➢ 3차원 공간의 물체를 2D 모니터 상에 출력시키기 위한 일련의 과정
렌더링 파이프라인
22. • 3D 모델 구축
➢ 만들어진 3D 오브젝트의 정점 데이터를 받아와 로컬 좌표계에 띄우는 단계
※ 로컬 좌표계 : 3D 오브젝트 자신을 중심으로 하는 좌표계
➢ 각 정점들이 자신의 좌표계를 기준으로 어디에 위치하는 지를 판단해 모델을 그림
➢ 월드 좌표계에서 자신이 어떻게 존재하는지 알 수 없는 상태
렌더링 파이프라인
23. • 가상 공간의 배치
➢ 만들어진 3D 오브젝트를 3차원 가상 공간에 배치하기 위해 로컬 좌표계에서 월드 좌표계로 변환하는 단계
※ 월드 좌표계 : 가상의 3D 공간을 기준으로 3D 오브젝트가 어디에 위치하는지를 판단하기 위한 척도
➢ 월드 좌표계를 기준으로 가상 공간에 3D 오브젝트들을 그림
렌더링 파이프라인
24. • 정점 단위의 음영 계산
➢ 정점들의 데이터 (좌표, 색상, 텍스쳐 좌표, 조명 정보) 등을 변화 시켜 월드 좌표계 내에서 오브젝트를 옮기
거나 색상을 바꾸는 단계
※ 정점 셰이더 단계
렌더링 파이프라인
25. • 정점의 증감
➢ 월드 상에 그려야 할 3D 오브젝트의 정점을 증가시키거나 감소시켜 새로운 도형 정보를 만드는 과정
※ 지오매트리 셰이더 단계
➢ LOD 처리를 하거나, 흐르는 물의 표현, 파티클 등과 같이 정점이 증감하는 처리를 이 단계에서 담당
렌더링 파이프라인
26. • 카메라 공간으로의 전개
➢ 월드 좌표계로 변환된 오브젝트를 카메라를 기준으로 한 카메라 좌표계로 변환하는 단계
※ 카메라 좌표계 : 오브젝트가 카메라를 기준으로 한 로컬 좌표계에서 어디에 어떻게 위치하는지를 판
단하기 위한 척도
➢ 카메라를 기준으로 보는 시야에 오브젝트들을 담는 투영이라는 과정을 거쳐야 하기 때문에
렌더링 파이프라인
27. • 컬링
➢ 카메라로 보는 기준에서 보이지 않는 후면의 Polygon들을 잘라내 렌더링 연산에서 제외하는 단계
➢ 굳이 보이지도 않는 부분까지 연산해서 그려내고 있는 것은 쓸데없는 비용 부담
렌더링 파이프라인
28. • 조명
➢ 가상의 빛을 만들어 빛에 의한 계산을 하는 단계
➢ 빛은 크게 아래 3가지를 사용
▪ Directional Light : 방향성 광원, 태양과 같은 역할
▪ Point Light : 점 광원, 램프와 같이 전 방향으로 뻗어져 나가는 빛
▪ Spot Light : 스포트 광원, 손전등과 같이 직선적인 빛
렌더링 파이프라인
29. • 클리핑
➢ 카메라 좌표계로 변환 후 카메라의 시야 내에 들어오지 않는 정점 데이터를 렌더링 연산 과정에 추가하지
않는 단계
렌더링 파이프라인
30. • 투영
➢ 카메라 좌표계로 변환 된 오브젝트들을 모니터에 표시하기 위해 2D 평면 좌표로 변환하는 단계
➢ 현실 세계에서 3차원적인 오브젝트를 캔버스인 2차원 좌표에 그려 내기 위한 데이터 변환 과정
렌더링 파이프라인
31. • 뷰포트 전개
➢ 2차원 좌표로 변형된 오브젝트를 화면 내에 그리기 위해 화면 상에서의 위치로 변환하는 단계
➢ 모니터 해상도에 대응해 어떻게 그려낼 지를 결정
렌더링 파이프라인
32. • 폴리곤 셋업과 레스터라이즈
➢ 화면 상의 2차원 좌표로 변형된 오브젝트의 정점 데이터들이 모니터에 표시하기 위해 픽셀 단위로 변형되
는 단계
➢ 정점들이 가지고 있던 색 정보가 화소 단위로 변경되며 픽셀 컬러로 색 정보가 변형
렌더링 파이프라인
33. • 텍스쳐 적용
➢ 정점들의 색상이나 조명의 조합으로는 실감나는 3D 오브젝트 표현에 한계가 있고, 폴리곤 단위의 조명 계
산은 많은 부하를 동반하기 때문에 텍스쳐를 적용
➢ 픽셀들의 음영 처리를 하기 위한 과정
※ 픽셀 셰이더 단계
렌더링 파이프라인
34. • 렌더 백엔드
➢ 픽셀 셰이더에 의해서 넘어온 값을 실제 모니터에 출력해도 괜찮은지에 대한 검증 단계
➢ 각종 렌더 우선순위나 알파 적용, 안티앨리어싱, Z-Buffer 등을 담당
렌더링 파이프라인
35. • 출력
➢ 최종적으로 모니터에 출력
➢ 이 과정을 매 프레임마다 반복
➢ 60fps면 1초에 60번 그려 내야 함 픽셀 수만큼 그려내야 함
※ 1920*1080 = 2,073,600
렌더링 파이프라인