투나캔
접속 : 5408   Lv. 61

Category

Profile

Counter

  • 오늘 : 1 명
  • 전체 : 11527 명
  • Mypi Ver. 0.3.1 β
남들보다 늦게 프로그래밍을 접한 코더입니다.

마이피는 작업물이나 공부내용을 올릴거에요.
[ogre3D 팀 프로젝트] 내일부터 1년간의 노력을 지스타에서 평가 받게 됩니다. (10) 2013/11/13 PM 01:04

4학년 게임 프로젝트가 드디어 내일이면 지스타에서 평가를 받게 됩니다.

말도 많고 사건도 많았지만 결국엔 게임을 만들어서 지스타에 출전하게 되네요.

학생이라 아직 미숙하고 버그 덩어리의 게임이지만 구경하러 오시는 분들 잘 부탁드립니다.

사진은 포스터용 일러스트와 테스트 게임때 찍은 스크린샷 입니다.

현실은 좀 힘들지만....

그래도 우리는 게임을 만듭니다.

신고

 

Nineyes    친구신청

수고하셨습니다~

Sooky    친구신청

마.. 마약을 만들고 계셨군요 ㅠ

★하이네켄    친구신청

마약 제조업자였군요...여튼 힘내세요!

멸종위기_브라키오    친구신청

웬 아이언맨이;;;

damnedone    친구신청

저런 가면 디자인 자주 쓰이지 않나요....아이언맨이 인기 있어서 그렇게 보이는듯

프롤    친구신청

오, 파릇파릇한 뉴마약이구나.

닌텐도™    친구신청

재밌어 보이는데요

ブラリクン    친구신청

로얄카뎃 베레모에 블프상의...

게임셰프    친구신청

게임명이 웬지 좋아 보이네요. 디멘션 카니발이라... ㅎㅎ
직접 한번 해보고 싶어집니다. ~_~

피옿    친구신청

많은 분들의 응원의 글 감사드립니다
[ogre3D 팀 프로젝트] 팀 프로젝트 5주차 입니다. (2) 2013/04/06 PM 11:22
5주 밖에 안됬는데 슬슬 멘붕이 오기 시작하네요 ㅋㅋㅋ

초기 시작시 그래픽 팀과 저희 플밍 팀으로만 이루어저 프로젝트를 시작했는데 점점 기획팀의 빈자리가 느껴지네요..

게임기획과 프로그램밍을 같이 할려니 여러가지 혼선이 ㅋㅋㅋ

특히 기획서 만드는게 너무 힘드네요.

머리속에 있는 게임을 글로 표현하는 것과 세부 작업 리스트를 만든게 정말 ㄷㄷ

클래스 구조도 아직 못짯는데 ㅠㅠ

지스타까지 대략 6개월... 어떻게든 만들어 보겠습니다 ㅋㅋ

신고

 

린스하는토끼    친구신청

화이팅

흠냐뤼    친구신청

기획 한명은 전담해야죠 ㅎㅎ
생각보다 생각할게 너무 많음
[ogre3D 팀 프로젝트] 오우거 엔진 재밌네요. (4) 2012/12/21 PM 09:46

학교 팀프로젝트로 인해 공부하고 있는 오우거 엔진 입니다.

이때까지 3D기초로 Dirext9만 만지다가 처음 써보는 엔진인데 엄청 편하네요 'ㅅ'

애드온으로 이것 저것 달아서 재밌는게임 한번 만들어봐야 겠습니다.

신고

 

흠냐뤼    친구신청

오우거엔진이라 오우거가 기본탑재인가요

관바    친구신청

이거 아직도 있나요? ㅋㅋㅋㅋ

kaedoc    친구신청

..........설마 산기대 인가..

야월화    친구신청

오우거는 공부할때 말고는 이젠 별로 쓸데가 없는듯...
[Direct3D 게임 프로그래밍] Direct3D Graphics Pipeline(Direct3D 9) -2- (0) 2012/12/09 PM 02:40
<용어 정리>
정점(Vertex) : 3D 공간상의 점, 좌표 값, 위치 값
폴리곤(Polygon) : 정점 3개가 모여 만들어지는 삼각형, 렌더링을 하는 가장 최소 단위
- 컨벡스(Convex) : 볼록 다각형(내각이 180도를 넘지 않는다.)
- 컨캐이브(Concave) : 오목 다각형(내각이 180도를 넘는다.)
메쉬(Mesh) : 폴리곤으로 이루어진 오브젝트, 모델링한 데이터

버텍스 프로세싱(Vertex processing)

로컬 좌표계 --(월드 변환)--> 월드 좌표계 --(뷰 변환)--> 카메라 좌표계 --(투영)--> (-1, -1. 0) ~ (1, 1, 1)사이의 값 --(뷰포트 변환)--> 2D 화면 좌표계


정점에 관련된 처리를 하는 버텍스 프로세싱은 크게 4개의 변환을 거치게 됩니다.
월드 변환, 뷰 변환(카메라 변환), 정규 변환(투영), 뷰 포트 변환 입니다.

<로컬 좌표계>
로컬좌표계는 오브젝트를 구성할때 사용된 좌표계 입니다. 예를 들어 정육면체를 그린다고 생각 해봅시다.
이 정육면체를 그리기 위해서 36개의 정점을 찍어야 됩니다. (왜 36개 인지는 나중에 다시 설명하겠습니다.)
만약 (0,0,0)을 중심으로 정육면체를 그린다고 하면 윗면을 그리기위해 좌측 상단 (-1, 1, -1), (1, 1, -1), (-1, 1, 1) 우측 하단 (-1, 1, 1 ), (1, 1, -1), (1, 1, 1) . . . 이런식으로 좌표값을 정점에 넣게 되는데 이때 사용되는 좌표계가 로컬 좌표계 입니다. 즉, 오브젝트를 그릴때 사용되는 좌표계라고 생각하시면 쉽겠네요.

#정육면체의 정점의 수#
왜 정육면체에 8개의 정점이 아닌 36개의 정점이 필요한 이유는 폴리곤 때문입니다. 일단 렌더링을 하기 위한 최소 단위는 폴리곤이라고 위에 용어설명에서 적어놨습니다. 폴리곤을 구성하기 위해서는 최소 3개의 정점이 필요합니다.
그렇기에 사각형의 면을 그릴려면 폴리곤이 2개, 정육면체가 가지고 있는 면의수는 6개 이기에 36개의 정점이 필요합니다.(D3DPT_TRIANGLELIST기준입니다)

<월드 좌표계>
로컬 좌표계가 오브젝트를 그리기위한 좌표였다면 월드 좌표계는 오브젝트가 있을 공간상의 좌표입니다.
예를 들면 보물상자를 정점을 이용해 만들었습니다. 이제 이 보물상자를 게임상의 좌표 어디에 위치되어야 하는데 이때 사용되는 좌표계가 월드 좌표계 입니다. 즉 월드 좌표계는 오브젝트가 공간상에 위치될 좌표 입니다.

<월드 변환>
월드 변환은 이떄 사용되는 변환 입니다.
로컬 좌표계를 월드 좌표계로 변환 할때 사용되는 변환이 월드 변환 입니다.
월드 변환은 행렬계산을 사용하여 계산을 합니다.
월드 변환은 3가지의 변환이 있는데
1. 이동
2. 회전
3. 크기변환
이렇게 있습니다.
이동은 오브젝트의 이동, 회전은 오브젝트의 회전, 크기변환은 오브젝트의 크기를 변환하는 행렬로 각각 독자적으로 사용될수도 있고 모두 같이 사용될수도 있습니다.
(변환행렬 M = S * R * T)

<카메라 좌표계>
카메라는 사람으로 치자면 눈과 같은 역활을 합니다. 월드 좌표계의 오브젝트를 보기 위해서는 카메라를 통해 월드 좌표계를 바라 봐야 합니다.
카메라에는 3가지 요소가 있는데
1.카메라의 위치
2.카메라가 바라보는 방향
3.카메라의 업벡터
가 있습니다.
카메라의 위치는 월드상의 카메라가 있는 곳이며 카메라가 바라보는 방향은 말그대로 카메라가 보는곳, 바라보는 지점입니다. 그리고 카메라의 업벡터는 카메라의 위쪽과 아래쪽을 구분하는 방향라고 생각 하시면 되겠습니다.

<뷰 변환>
뷰 변환에 말하기 앞서 자동차의 창문을 바라 본적이 있을 겁니다. 이때 나무를 보면 자동차 뒤로 이동하는 듯한 느낌을 받아본적 이 있을겁니다. 뷰변환은 자신이 이동할때는 자기가 이동하는 것이지만 자신의 시야를 기준으로 보면 물체가 뒤로 가는 것처럼 보입니다. 이 처럼 카메라가 원점에 있는것으로 하고 물체들을 카메라의 움직임에 맞추어 카메라가 원점에서 떨어진 만큼 빼주어서 카메라를 원점 위치로 옮겨줍니다. 이러한 변환을 뷰변환 이라 합니다.

<투영>
투영변환 이전에 일단 절두체 부터 알아 보도록 합시다.
절두체는 삼각뿔의 윗부분을 잘라낸 형태 입니다. 피라미드에서 윗쪽 꼭지를 잘라낸 형태라고 생각하시면 쉽겠네요.
절두체의 구성은 카메라와 가장 가까이 있는 면인 near 면과 가장 멀리 있는 far 면 그리고 왼쪽, 오른쪽, 위, 아랫 면을 담당하는 left, right, top, bottom으로 되어 있습니다.
왜 이 절두체를 이야기 하는 것이냐 하면 월드 좌표계의 모든 오브젝트를 다 보여준다고 하면 게임이 너무 느려지게 됩니다. 그래서 사람의 눈 처럼 일정한 시야를 만들어서 이 시야 안에 들어오는 오브젝트만 렌더링을 하는 것 입니다. 시야 밖에 있는 오브젝트는 렌더링 할 필요가 없으니 과감하게 렌더링 하지 않는 것이지요.
절두체는 여기서 시야에 해당 하게 됩니다.
투영은 이제 이 절두체 안에 있는 오브젝트들을 정규화된 장치 좌표계인 (-1, -1, 0)~(1, 1, 1)의 값으로 변환하는 작업입니다. 이 작업은 2가지 방법이 있는데 하나는 원근감 없이 오브젝트 그대로 보이게 하는 직교 투영과 멀리 있는것은 작게 보이게 하는 원근 투영 이렇게 2가지가 있습니다. 보통은 원근감을 느끼게 하기 위해 원근 투영을 사용합니다.

<뷰포트 변환>
이제 투영까지 거치게 좌표를 2D 모니터 상의 좌표계로 옮겨주는 뷰포트 변환이 남았습니다.
화면 좌표계는 모니터의 좌측 상단이 (0, 0)이 되고 x축은 오른쪽으로 커지고, y축은 왼쪽으로 커지는 형식의 좌표계 입니다. 투영으로 변환된 좌표계를 이 2D좌표계로 변환하는데 D3D의 y축과 모니터 상의 y축은 반대 이므로 -1을 곱해주고 각 모니터 비율에 맞도록 맞춰 표현이 됩니다.
(계산식은 y' = - height / 2 * y + height / 2, x' = width / 2 * x + width / 2 입니다.)

변환 과정을 식으로 써보면
모니터 좌표 = 로컬 좌표 * 월드 행렬 * 뷰 행렬 * 투영 행렬 * 뷰포트 행렬
로 표현될수 있습니다.
---------------------------------------------------------------------------------------------------------
기말 시험 공부 정리

최대한 수학공식을 사용하지 않고 설명할려고 했는데 쉽지가 않네요 ;;;

신고

 
[기타] 그래픽 파이프라인 (0) 2012/12/04 PM 11:37

본 글은 비공개 게시물이며, 본인만 볼 수 있습니다.

신고

 
현재페이지1 2
X