프로그래밍/3D게임프로그래밍
-
[3D포트폴리오]개인포폴프로그래밍/3D게임프로그래밍 2014. 7. 23. 16:06
3D 개인 포트폴리오 서든어택 모작 구현기능 애니메이션 메쉬, 스태틱메쉬 이용 각 오브젝트들 배치 MFC툴 만들어서 데이터 저장 로드로 이용 State패턴, 해쉬자료구조, Input디바이스사용 리소스와 시스템관련 DLL 만들어서 사용 플레이어에 고정된 카메라구현 스나이퍼 줌구현 절두체컬링, 쿼드트리 ,터레이쉐이더 ,텍스처 스플래팅 , AABB,OBB충돌처리 피킹, 피킹충돌 ,빌보드,파티클구현 다이렉트 사운드 점프구현, 계단올라가기,데칼메쉬, 빌보드이팩트 visual studio 2008 directx 9.0
-
트랜스폼노말프로그래밍/3D게임프로그래밍 2014. 4. 24. 09:00
트랜스폼노말함수벡터와 행렬의 곱을 해준다.단 이동행렬에 값을 빼고 다른상태값들만 세팅 구현방법은벡터 두개와 행렬하나를 준비한다. 벡터4로 x,y,z ,0으로 세팅 행렬에 세로열과 벡터를 곱해준다. 벡터 x 행렬 벡터x * 행렬 _11벡터y * 행렬 _21벡터z *행렬 _31벡터w* 행렬 _41 벡터x * 행렬 _12벡터y * 행렬 _22벡터z *행렬 _32벡터w* 행렬 _42 벡터x * 행렬 _13벡터y * 행렬 _23벡터z *행렬 _33벡터w* 행렬 _43
-
로테이션 함수프로그래밍/3D게임프로그래밍 2014. 4. 24. 08:15
로테이션X 행렬과, 앵글 X일경우 회전은 Y랑 Z를 이용 1 0 0 00 c s 00-s c 00 0 0 1 로된다. 단위행렬함수로 단위행렬을 만든뒤행렬 _22 = cosf(fAngle);행렬 _23 = sinf(fAngle);행렬 _32 = -sinf(fAngle);행렬 _33 = cosf(fAngle); 로테이션 Z행렬 , 앵글Z일경우 X 랑 Y를 이용 c s 0 0-s c 0 0 0 0 1 00 0 0 1 행렬 _11 = cosf(fangle);행렬 _12 = sinf(fangle);행렬 _21 = -sinf(fangle);행렬 _22 = cosf(fangle); 로테이션 Y 행렬, 앵글X랑 Z를 이용 C 0 -S 00 1 0 0S 0 C 00 0 0 1 행렬 _11 = cosf(fangle);행렬..
-
지형 높이 구하기프로그래밍/3D게임프로그래밍 2014. 4. 24. 07:29
정리매쓰매니져 만들어서스태틱함수로 얻어오는 함수를 만들고 벡터3 위치랑 , 버텍스텍스처구조체형으로 받아서 인덱스는 = 포지션z/ 버텍스갭 *버텍스 X갯수 + 포지션 x / 버텍스갭 구하고X비율 = 포지션X - 버텍스텍스처[인덱스 + 버텍스X갯수].포스.x / 버텍스갭Z비율 = 버텍스텍스처[인덱스+ 버텍스X갯수].포스.z - 포지션->z / 버텍스 갭 Y갑 3개담을 배열선언뒤Y배열[4] = { 버텍스 텍스처[인덱스 + 버텍스X].포스.y // 0번째 , 버텍스 텍스처[인덱스 + 버텍스X+1].포스.y // 1번째 , 버텍스 텍스처[인덱스 + 1].포스.y // 2번째 , 버텍스 텍스처[인덱스].포스.y // 3번째 }; 그래서 //위쪽 삼각형if(비율X>비율Z){return Y0+ (Y1 - Y0)*X비율..
-
랜더링 파이프라인프로그래밍/3D게임프로그래밍 2014. 4. 20. 16:39
기하학적으로 3D 장면을 구성하고 가상 카메라를 설정한 뒤에는 모니터에 2D 표현을 만들어내는 과정을 수행해야 한다. 이와 같은 일련의 과정을 렌더링 파이프라인 이라 한다. 간단하게 파이프라인을 보여주고 있다. 각각의 과정은 이어지는 섹션을 통해 알아보자. 로컬 스페이스 -> 월드 스페이스 -> 뷰 스페이스 -> 후면 추려내기 -> 조명 -> 클리핑 -> 투영 -> 뷰포트 -> 래스터라이즈 1. 로컬 스페이스 모델링 스페이스라고도 불리는 로컬 스페이스는 우리가 물체의 삼각형 리스트를 정의하는 데 이용하는 좌표 시스템이다. 로컬 스페이스는 모델링 과정을 쉽고 단순하게 만들어주며, 자체의 로컬 좌표 시스템을 이용하는 것이 월드에서 직접 모델을 구성하는 것보다 훨씬 쉽다. 예를 들어, 로컬 스페이스를 이용하면..
-
3. 뷰 행렬프로그래밍/3D게임프로그래밍 2014. 4. 16. 03:14
로컬 좌표 계의 위치로 설정된 정점은 장면 연출을 위해서 먼저 월드 행렬을 통해서 월드 변환을 합니다. 다음으로 카메라가 정의된 카메라 공간으로 변환하는데 이 변환을 뷰 변환이라 하고 이 때 정점의 변환에 적용되는 행렬을 뷰 행렬 이라 합니다. 뷰 행렬은 카메라의 위치, 카메라가 보고 있는 지점, Up벡터를 입력 받아서 만들어 집니다.보통 카메라의 위치를 Eye벡터라 하고, 카메라가 보고 있는 지점을 Look 벡터라 합니다. 뷰 행렬을 만들기 위해서 먼저 카메라의 시선 방향을 설정하는데 이것을 카메라의 z 축으로 설정합니다. 이 z 축과 Up 벡터를 이용해서 카메라의 x 축 벡터, 카메라의 y 축 벡터를 다음과 같이 만듭니다. Zaxis = 카메라가 보고 있는 지점 위치(Look) - 카메라의 위치 (E..
-
2. 카메라 클래스프로그래밍/3D게임프로그래밍 2014. 4. 16. 01:50
카메라 클래스에서 가장 중요한 멤버 변수는 뷰 변환에 대한 뷰 행렬 , 투영 변환에 대한 투영 행렬입니다. 카메라 클래스는 화면과 카메라에 대한 정보를 입력 받아 이둘의 행렬을 만드는 것이 주 임무라 하겠습니다.뷰 행렬을 만들기 위해서 카메라의 위치 (Eye vector), 카메라가 보고 있는 지점(Look Vector), 그리고 카메라의 업 벡터(Up Vector)가 필요한데 이들의 멤버 변수와 카메라를 생성하는데 필요한 Create() 함수 , 카메라의 뷰 행렬과 투영 행렬을 갱신하는 FrameMove()함수를 기본으로 하는 클래스를 다음과 같이 작성합니다. #pragma once class CCamera { protected: LPDIRECT3DDEVICE9 m_pDev; D3DMATRIX m_mt..