[DirectX12] 5

게임 수학 6. World 변환 행렬, View 변환 행렬, Projection 변환 행렬

오브젝트가 어떠한 좌표계 변환을 거쳐 게임상에서 보여지는지 정리해보자. 처음 오브젝트를 만들면 그 오브젝트의 로컬에 배치된다. 로컬좌표는 모델링 될때 만들어지므로 모델좌표라고도 한다.주로 발을 기준으로 0,0,0으로 모델링한다.이 오브젝트(혹은 언리얼에선 배치가능한 액터)를 월드상에 배치되면서 월드 좌표계로 변환되고(그치만 상위 부모 오브젝트가 있으면 그 오브젝트 기준 로컬좌표를 유니티/언리얼에선 보여준다)또 카메라 위치와 방향에 따라서 카메라 좌표계로 변환된다.마지막으로 카메라 좌표계에서 2D로 화면에 나타내기 위해 Projection 변환 행렬을 통해 다시한번 좌표계가 변환된다. 원점뿐만 아니라 오브젝트를 이루고 잇는 모든 3D오브젝트의 모든 삼각형이 연산되어야하는데 좌표계 변환을 순서에 따라 원리와..

[DirectX12] 2024.04.21

게임수학 5. 좌표계 변환 행렬

게임내에서 명시적으로 Scale, Rotation, Translation이 변할 경우 행렬로 연산하는 방법을 알아봤다. 그런데 실제로 물체는 가만히 있고 좌표계가 변환되어서 벡터의 값이 변하는 경우도 있다. 좌표계 변환은 총 5단계에 걸쳐 일어난다.로컬 스페이스라고 물체가 원래 모델링 되던 공간에서 인게임의 월드 좌표로 변환이 되고인게임 세상을 배치한 다음에 카메라가 바라보고 있는 카메라 좌표계로 다시 변환이 된 후 이걸 납작하게 투영좌표계로 변환 한 다음에 최종적으로 스크린 좌표계로 변환한다. 이 단계들을 이해하기 위해 오늘은 좌표계 변환에 사용되는 만능 공식, 좌표계 변환 행렬에 대해서 알아볼 것이다. 2차원의 좌표계 A가 있고 이 좌표계를 기준으로 M(x,y)이라는 점이 있다.그리고 이 좌표계를 기..

[DirectX12] 2022.08.03

게임수학 4. Scale, Rotation, Translation 변환행렬

지난시간에 행렬의 기초에서 다룬것처럼 Scale, Rotation, Translation 기본 변화를 행렬로 나타낼 수 있다. 또 월드에서 위치를 표현하기 위해 벡터를 쓰기도 하는데 x,y,z 세개의 좌표를 들고 있기 때문에 벡터로 위치를 표현할 수 있기 때문이다. 그리고 이 벡터를 x,y,z값을 가진 행렬로도 만들 수도 있다. x,y,z외에도 뒤에 1이 붙어서 4차원으로 표현하기도 하는데 이유와 좌표에 어떤 행렬의 어떤 연산을 해야 S,R,T결과가 나오는지 알아보자. 결국 위치벡터에 어떤 행렬을 연산하여 벡터의 결과값이 처음보다 크기가 변화하거나(Scale), 회전하거나(Rotation), 이동하거나(Translation)을 나타나기 위해 연산을 한다. 그리고 결과값도 다시 위치벡터여야하므로 1*3의 ..

[DirectX12] 2022.08.03

프로젝트 설정

DirectX12로 게임 프레임워크 만들것 같은데 이것저것 해보기 위해 DirectX를 사용하는 프로젝트를 세팅해보자. VS2019로 새 프로젝트 만들기>C++ Window 데스크톱 어플레케이션>솔루션 이름을 Game으로, 프로젝트 이름을 Client로 만들어보자. *엔진을 따로 빼서 관리할 것이다. WindowAPI를 사용해 만들 것이다. Client.cpp에는 WinMain이 있어서 여기서부터 호출이 되고 기본메세지루프 While문이 있어 이 안에서만 동작할 것이다. 더 자세히 살펴보면 GetMessage가 있는데 입력을 메세지로 받아서 동작한다.(그러나 GetMessage는 입력이 없으면 대기상태를 유지하므로 계속 동작하기위해(렌더링도 해야하고 통신도 해야하고 할게 많으니깐) 후에 PeekMessa..

[DirectX12] 2021.12.11

렌더링 파이프라인

GPU와 렌더링파이프라인 개요 일반영화와 다르게 화면을 직접 만들어야한다. 대부분 삼각형 단위로 만들어져있다. 엔진에서 와이어프레임으로 보면 볼 수 있다. 배치되어있는 오브젝트들의 위치와 색상을 알아야한다. 이를 연산해서 보여주는것 배치되어 있는 오브젝트들을 어떻게 카메라에 보여줄지 연산하는 방법을 알았다고 해도 실시간으로 변하는 화면을 나타내기는 쉽지 않다. 삼각형들을 계속해서 좌표계산해..?노우..불가능.. 오브젝트의 이동, 카메라의 시점변화, 사라지는 오브젝트, 길찾기를 계속해서 일일이 연산으로 나타내는것은 힘들다. 결국 영화 감독에 해당하는 규칙을 정하고 연산을 하는 핵심적인 역할은 CPU이고 그래픽과 관련된 노가다를 작업을 담당하고 가상환경에서 카메라로 넘어가도록 변환 연산을 외주로 하는게 GP..

[DirectX12] 2021.12.11