D3D를 하기 전에 3D세계와 친해져 보자.

요즘에 이것저것을 하는것도 있고 책과는 다른내용으로 좋은 강좌가 생각이

안나서 못쓰고 있었습니다. 참고로 강좌는 제가 힘들어 했던 내용을 위주로

작성중입니다. 다른사람들도 힘들어 할만하고 충분히 좋은 내용일때

여기에 적는것이지요.

 

요즘에 3D프로그래밍을 하면서 DX문법 이전에 3D세계에 대한 이해가 충분해야

한다는걸 뼈저리게 느껴서 그 부분을 조금 적을까 합니다.

 

우선 3D세상은 2D에서 Z축이라는 깊이가 하나 추가된 개념입니다.

뭐 내용은 간단하나 그렇게 되면서 매우 골치아픈 일이 생겼지요.

 

개념상으로는 한줄 늘어난것이지만 각종 연산이 매우 복잡해 지게 되었습니다.

 

몇몇의 예를 들어보면 예전에 2D게임에서의 이동과는 달리 3D에서는 Z축으로

하나의 이동값이 더 생겼습니다. 뭐 별것 아니지만 여기에 회전값이라는 개념도

생겼지요. 회전값은 3차원 세상이기 때문에 당연히 이루어 져야 하는 부분이

됬습니다. 즉 2차원에서는 충돌후 튀어나오는 연산이 2차원의 벡터에 코사인 사인

정도의 처리만 하면 됬는데 3D세상에서는 3차원 벡터에 각축에 따른 코사인,사인의

연산을 이용해서 꺽이게 됩니다.

 

제가 썼는데도 별로 와닫지 않으므로 추가적인 설명을 해드리면, 예를 들어

핀볼이 벽에 통통 튕기면 예전에는 항상 x,y만을 처리했지만 3D가 되면서

Z축을 비교해야 하고 이때 추가되는 처리대상은 X,Y평면 처리량 x Z축사용좌표값갯수

가 되는것이지요.

즉, 하나가 더 늘어난게 아니라는 소리입니다.

 

뭐 이정도면 다행이겠지만 3D세계는 세계가 전부가 아니라 카메라라는 개념과

월드좌표, 그리고 로컬좌표 라는 3개의 좌표축을 다루고 있습니다.

 

로컬좌표는 2D에서의 그림파일의 원점 정도가 되겠고 월드좌표는 스크린의

0,0 좌표정도가 되겠고 카메라는 없었습니다. 뭐 억지로 정한다면 스크린과

동일하다고 할수 있었겠네요.

 

자 그렇다면 우리는 아까 3D처리량을 로컬, 월드, 카메라 라는 3군데에 해줘야

합니다. 글만 보면 엄청 복잡할것 같지만 다행히도 저희는 로컬좌표에 신경을

써주면 되고 월드좌표는 대체적으로 건드리지 않으며 카메라는 위치 및 시선벡터

시아각, 시아거리 등을 정해줌으로서 카메라도 편리하게 처리가능합니다.

 

그렇다면 우리는 로컬에만 신경을 쓰면 되는것이지요..^^

 

그럼 다음글에는 3D세상을 이해하기 위한 연산들과 3D세상이 돌아가는 구조를

설명드리도록 하겠습니다.

by JetLi | 2008/07/29 01:14 | DirectX 3d | 트랙백 | 덧글(0)

트랙백 주소 : http://cevin.egloos.com/tb/637296
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶