System.out.println("Hello, World");

'카메라'에 해당되는 글 1건

  1. 2012.04.20 3D프로그래밍 - 카메라

○ 카메라

 - 3차원 게임에서 카메라는 시점을 의미한다. 3D게임의 화면에 보이는 모든 것은 카메라를 통해서 보여지는 것이다.

    3자의 입장에서 바라보면 캐릭터의 눈 위치에 카메라가 위치하여 캐릭터의 움직임에 따라 카메라의 방향과 위치가 변하는 것이다.


○ 변환 파이프 라인

 - 변환파이프라인의 목적은 하나의 이미지를 만들고 게이머의 화면에 그것들을 보여주기 위한 것이다.

    파이프 라인은 기하적인 데이터를 하나의 물체나 장면으로 표현하는 역할을 하며, 그것들로부터 2차원의 이미지를 만들어낸다.



○ 모델 공간(Model Space)

 - 일반적으로 하나의 캐릭터를 표현할 때 모델공간이라 불리는 하나의 좌표계에서 정점의 위치를 저장한다.

 - 로컬 좌표계를 이야기한다.


○ 전역공간(World Space)

 - 3차원 공간상의 최종적인 원점의 좌표계

 - 게이머의 화면에 보여질 모든 물체들을 위한 절대적인 레퍼런스 역항을 수행

 - 게임의 오브젝트들은 월드 공간의 좌표를 가지고 있다.


☆ 월드 변환(World Transform)

- 박스와 실린더가 각각 존재한다.

- 따로 따로 모델링된 실린더와 박스는 각각의 좌표계를 갖는다. 이것이 로컬 좌표계이다.

  이것들은 그냥 3차원 공간상에 배치하게 되면 원점을 공유한다.

- 2개의 물체를 따로따로 출력하기 위해서는 물체가 사용하는 로컬 좌표계가 아닌 월드 좌표계를 도입해야 한다.

- 즉 '실린더의 로컬좌표계 -> 월드 좌표계"와 "박스의 로컬 좌표계 -> 월드 좌표계"라는 2개의 변환이 필요하다.

- 일반적으로 3차원 그래픽에서 변환을 행렬을 사용한다고 해으니 로컬 좌표계->월드 좌표계는 행렬 변환이라는 것을 알 수 있다.

- 이런식으로 로컬 좌표계를 월드 좌표계로 변환하는 행렬을 변환 행렬(Transform Matrix)이라 한다. 


○ 시점공간(Eye Space)

 - 카메라가 바라보는 공간을 시점공간이라고 한다.

 - 시점이 그 공간 좌표계의 원점이 된다.


○ 절단 공간(Clip Space)

 - 어떤 물체가 보여지는 위치에 있는지, 그렇지 않은지를 판단.

 - 시야 절두체를 통해서 이루어진다.

 - 절단 공간상의 시야 절두체를 표현한 축정렬된 육면체의 크기는 동차 좌표계에서 표현된 4번째 좌표와 관련있다.

 - 카메라가 바라보는 정육면체 안에 잘라서 넣는다.


○ 정규화된 장치 좌표계(Normalized Device Coorinates)

 - 절단 공간에서 추 정렬된 육면체의 크기인 W를 1로 놓으면 정규화된 장치 좌표계를 얻을 수 있다.

 - 정규화된 장치 좌표계를 기준으로 표현된(x,y,z) 좌표에서 z값을 0으로 놓아서 좌표(x,y)를 얻는다.

 - 3D에서 2D로 변환하는 과정을 Z버퍼라고도 하며 스테실버퍼(그림자)에도 쓰인다.


○ 윈도우 좌표계

 - 정규화된 장치 좌표계를 실제 모니터상의 x,y 좌표계로 변환해야 하는데 이를 뷰포트 변환이라고 하며 정규화된 장치 

          좌표계에 게이머가 설정한 뷰포트의 크기를 곱하여 실제 윈도우의 x,y좌표를 얻어 낸다.


☆ 시야 절두체

 -시야 절두체란 하나의 3차원 공간상에서 카메라에 의해 보일 수 있는 것들을 담는 범위

 - 피라미드 형태의 육면체로 구성되어 있다.

☆ 투영

 - 투영은 3차원 장면을 2차원 모니터 화면에 그리기 위해, 장면에 표현되는 캐릭터나 물체들의 각 정점을 화면에 그려지는 

    2차원 좌표를 결정하기 위해 사용한다.

○ 원근 투영

 - 가까운 물체는 크게, 먼 물체는 작게 그려진다. 대부분의 게임에서 사용되는 방법





○ 직교 투영

 - 원금감을 갖지 않는 투영 방법으로 화면에 어떤 물체가 그려질때 원근에 의한 왜곡이 발생하지 않는 방법

 - 캐드 같은 설계 분야에 적용되며, 유명한 디아블로2가 직교 투영 방법을 사용한다.

          


☆ 일인칭 시점 카메라

 - 카메라의 위치는 위치벡터로 표현한다.

 - 시선 방향은 카메라가 바라보는 방향을 나타내는 방향벡터이며 

 - 상향 벡터는 카메라의 위쪽 벡터이다.

○ 카메라 변환(Camera Transform)

- 카메라 변환이란 3차원 월드 좌표계를 카메라를 기준으로 한 카메라 좌표계로 변환하는 것을 의미한다.

- 월드 좌표계를 카메라를 기준점으로 한 좌표계로 변환하는 과정이 카메라 변환이다. 


☆ 3인칭 시점 카메라

 - 3인칭 시점 카메라는 제 3자의 입장에서 내려다보는 시점을 제공한다.

 - 카메라는 게임 내의 캐릭터의 움직임과 무관하게 게이머의 명령에 따라 이동한다.





Posted by 김마농