검색결과 리스트
글
3차원의 기초
게임개발로그
2011. 2. 13. 21:05
3차원상의 모델을 2차원의 모니터 화면으로 변환 또는 투영하는 것이다. 이러한 과정은 카메라에서
볼 수 있는 시야각(화각)을 정의하고, 이 시야각에 들어오는 3차원 상의 물체좌표를 삼각함수와
간단한 비례공식을 이용하여 2차원상의 좌표로 변환하여 이루어진다.
수학적으로 표현한 3차원 공간은 데카르트 좌표계를 사용하고, 모니터는 그 특성상 화면좌표계를 사용한다.
화면 좌표계는 좌측상단이 원점(0,0)이고 아래방향으로 갈수록 y가 증가하지만, 대부분의 게임 3차원 공간에서
사용하는 데카르트 좌표계는 좌측하단을 0,0으로 하여 위로 갈수록 y가 증가한다. 이러한 좌표 차이로 인해
둘 간에 적절한 변환이 이루어져야 한다.
결국 3차원 엔진이라는 것은 수학적으로 가상의 3차원 공간을 설정하고, 그것에 대한 연산을 하여 2차원으로
변경하고 그리는 과정이다. 끊김없이 부드럽게 보여줘야 하기 때문에, 불필요한 수학연산을 하지않고 최소화
하는 것이 중요하다. 그래서 카메라 시야각에 존재하는 모든 사물을 그리는 것은 비효율적이기 때문에
잘려진 피라미드 모양의 절두체 공간에 존재하는 사물만을 그린다.
또 그 공간 안에서 카메라에 가까이 있는 물체가 뒤의 물체를 가리게 될 경우, 뒤 물체는 그릴 필요가 없어진다.
즉 보이지 않는 면에 대해서는 (화면에) 그릴 필요가 없는 것이다. 절두체의 경계에 걸려있는 물체는 다 그려질
필요없이 보여질 부분만 잘라내어 그리면 좀더 효율적으로 그릴 수 있게된다.
'게임개발로그' 카테고리의 다른 글
| 아이폰 2D 게임엔진 Cocos2D (1) | 2011.03.16 |
|---|---|
| 게임 개발 기초 (2) | 2011.02.14 |
| 게임 시스템 모듈 구성 (0) | 2011.02.13 |
| DirectX 와 OpenGL (0) | 2011.02.13 |
| 3차원의 기초 (0) | 2011.02.13 |
| 3D 렌더링의 종류와 Java (0) | 2011.02.13 |