모델 좌표계: 모델(메쉬)를 표현하기 위한 좌표계
- 모델마다 자체적인 별도의 좌표계를 갖고 있다고 가정
- 객체 로컬 공간
- 일반적으로 객체(매쉬)의 중심을 원점으로 하는 좌표계
- (좌표계의 원점과 중심이 반드시 일치해야 하는 것은 아님)
월드 좌표계
- 게임 세계를 하나의 통일된 좌표계로 표현
- 모든 객체(메쉬)들이 동일한 하나의 좌표계로 표현(배치)
게임 월드 단위
- 개발자는 게임 월드의 크기와 단위를 결정하기 위해 아티스트와 협력해야 함
- 실수 표현으로 인한 문제 -> 범위로 표현하기
- 메쉬의 크기와 이동 속력을 고려해야 함
- 텍스쳐 매핑을 어떻게 할 것인가도 고려 사항임
- 모든 객체가 서로 상대적이면서 일관된 크기로 만들어진다면 문제 없음
은면 제거(Back Face Culling)
- 은면 제거는 관찰자(카메라)가 볼 수 없는 면을 그리지 않는 것
- 은면이란 다각형의 면이 관찰자를 향하지 않는 면을 의미
- 3D 렌더링 엔진: 다각형을 그리기 전에 다각형을 구성하는 각 면이 은면인가를 빠르게 판단해야 함
정점(Vertex)
와인딩 순서(Winding Order)
- 다각형의 정점들을 나열하는 순서를 와인딩 순서라고 함
- 와인딩 순서는 메쉬를 구성하는 선분들이 어떻게 연결되는가를 나타냄
- 렌더러는 와인딩 순서를 사용하여 은면 제거를 수행할 수 있음
- 시계방향 와인딩 순서는 한 면을 정면에서 바라볼 때 그 면의 모든 정점들이 시계방향으로 나열되는 것을 의미
- DirectX에서 다각형들은 기본적으로 시계 방향 와인딩 순서를 갖는 것으로 가정
: 바깥쪽 면이 기준, 시작 정점은 중요하지 않음
렌더링
장면(Scene)
- 게임 월드 자체
- 게임 월드에서 현재 화면에 그려져야 하는 부분(카메라에 현재 보이는 객체들)
- 게임 월드 = 객체(메쉬)들 (배경, 이펙트 등도 객체로 취급)
렌더링
- 장면을 렌더링하는 것은 게임 월드의 모든 객체들을 그리는 것
- 결과적으로 모든 다각형들을 그리는 것
- 결과적으로 모든 픽셀들을 그리는 것(색칠하는 것)
- 다각형의 3D모델 좌표를 2D 화면 좌표(픽셀)로 변환하는 과정
- 변환: 모양, 크기, 방향
- 픽셀의 색상을 결정하는 과정
화면 좌표계에서 그리기
: 변환 과정에서 모델의 다각형들을 구성하는 각 정점들을 화면의 2D 픽셀 좌표로 바꾸었다면 모델의 각 다각형에 대응되는 픽셀들을 선분으로 이어서 화면에 다각형을 그릴 수 있음
ex) 화면 좌표계에서 다각형을 그리기 위해 윈도우 API의 MoveTo(), LineTo() 함수를 사용할 수 있음
변환 파이프라인
- 파이프라인: 작업이 순차적으로 수행됨
- 변환 파이프라인: 3D 모델 좌표를 2D 화면 좌표(픽셀)로 변환하는 코드(함수)
- 기본적으로 4개의 구별되는 단계로 구성
'Old > DirectX' 카테고리의 다른 글
윈도우 프로그램 분석 (0) | 2023.08.03 |
---|---|
DirectX12 - Project Setting (0) | 2023.08.03 |