상수버퍼 constant 버퍼를 이용해서 데이터를 밀어넣어 조절하는 실습까지 했다 .
Direct X 를 이용해서 GPU에게 외주를 줘서 뭔가 그릴수있겠자는것 까지는 알겠는데
이게 렌더링이랑 뭔 상관인가 , 약간 애매하다 , 왜 이 해골이 여기 좌표에 떠있는가 ?
CraeteGeometry 부분을보면 -0.5f -0.5f 등등 설정을 해줬다 .
실제로 실행해보면 값을 넣어보면 뭔가가 바뀐다 .
엄밀하게 말하면 vertex position의 값은 -1 ~ 1 사이의 값이 들어와야 화면에 출력이된다는 말
그럼 우리가 이런 좌표를 어떻게 예상해서 만드는건가 ?
사실상 쉐이더에서 우리가 IA 단계에서 정점들을 밀어넣은 다음 , 여기에 밀어넣은 VS_output 구조체에 들어와서 , VS 영역에서

여기서 바로 input 을 바로 output으로 넘겨주는게 아니라 원래는

이 부분에서 뭔가 변화를 줘야한다
정점을 가지고 연산을 해서 그 위치를 바꾼다거나 , 회전을 시킨다거나 해서
넘겨주고 넘겨주고하면서 좌표가 결정이 되어야하는데 우리는 예상하는 최종값을
먼저 vertex에 넣어준거다 → 실전은 그렇지않다
실전에서 게임이 어떻게만들어지고 행렬이 왜 필요한지 그걸 알아봐야한다
unity unreal 다 똑같은 개념 ,

로컬 스페이스 , 이런 공간에서 모델러 , 아트 파트에서 툴로 조각을 해준다
로컬영역이라는건 모델에 대한 영역인거고 , 여기서 모델을 만들어보면 , 모델을 만든다하면 기준점이있다 . 여기서는 발로 잡혀있고 , 그거에 대한 상대좌표로 모든 삼각형들을 표시해서 물체 하나가
만들어지게된다
로컬스페이스라는건 자기만의 공간 / 우리가만든 게임세상 → 월드 공간 월드좌표
원래 처음에 생성하면 Transform에 중요한 옵션들이있다

이게 월드에서 어떻게 표현될지를 나타내는 중요한 수치라고 보면된다
사실상 우리가 어디에 어떻게 배치할지를 나타내는 수치들이라고 보면된다
게임을 만드는건 , 영화를 촬영하는것과 유사하다 , 물체를 배치하고 카메라가 물체를
촬영하는 상태라고 보면된다 . 영화촬영의 결과물이고
여기서 궁금한건 Position같은거를 건드리면 위치를 이동한다는걸 알수있는데 이 Position 같은거
이런 부분에 따라서 실제로 이 모델도 움직인다 ,
여기서 rotation scale position은 뭘 기준으로 하는것인가 ?
→ 이 게임 세상을 기준으로한 좌표 , 엄밀히 말하면 그렇진않고 계층관계가 있으면 자기 부모를 기준으로하는 상대좌표
내 상위 부모를 기준으로한 상대좌표 같은 느낌 , 어쩃든 position이라는건 월드기준으로의 나의좌표
회전같은경우는 각 회전축에 따라서 회전 , scale은 크기가 커지거나한다
→ 이게 SRT ( scale Rotation , Translation ) 엔진에 가장기본적인것
로컬 월드에 자기 혼자만의 공간에서 월드로 배치되었을때 어떤식으로 배치가 되었으면 좋겠는지
위치 회전값 스케일 3가지를 지정해서 인게임에 배치하는것이고 , 게임세상에선 Player뿐만아니라
굉장히 많은것들이 등장한다고보면됨
카메라맨이 어딘가에서 화면을 찍고있고 , UE에서는 카메라가 Component로 붙어있다
요 카메라에서찍고있는것이 실제 우리 게임화면에 나타나게된다
어떤 물체가 카메라 화면밖으로 넘어간다는건 안찍힌다는 얘기
중요한건 물체를 인게임에 배치했다고해서 끝이아니라 아직 카메라의 존재가 일단 없다고 가정을 해야한다.
우리가 3d 세상에서 물체를 배치를했다 , 결국 게임화면이 보일려면 카메라가 있어야한다
로컬에서 월드로 넘어갔고 월드에서 카메라 영역으로 변환을 해줘야하는데
결국에 우리는 카메라 영역에있는 물체만 보이기 때문이라고 생각하면된다
카메라 영역으로 바꾸면끝이 아니라 , 카메라 영역은 범위안의 모든 물체를 표현하는게 카메라의
역할 , 카메라가 바라보고있는 이 Z 라는 파란색 선 방향으로 찍고있는 범위에 따라서 좌표를 수정하는 단계가 먼저 일어나게 된다

그 그다음엔 우리가 위에서 보는것까지는 3D 화면인데 , 우리 모니터는 2D니깐 아무리 공간 3D여도
모니터에 출력이 될때는 어떻게든 2D로 만들어서 그려줘야한다
각각의 픽셀 색상을 정해주는건 PS 영역에서 정해주는것 , 이걸 최종적으로 각각 어떤 색상이 정해지는지를 고를라면 결국엔 2D로 변형하는 작업이 필요하고 이 범위 안에 있는 것들을
납작하게 만들어서 투형을 시킨다고 표현을 하는데
물체가 멀리있다→ 원근법에 따라서 작게 , 가까우면 → 크게
원근법까지 적용해서 범위안에 모든물체를 화면( 카메라 ) 에 넣는다고 보면된다
이게 바로 투영단계 → 비율에 맞게 화면에 들어오는게 목표
그 비율을 우리가 -1 ~ 1 사이의 값으로 표현을 한다 ,
그 비율이 들어오면 우리가 만든 뷰포트의 사이즈 ( 800 x 600) 으로 만들었으니 그 사이즈에
따라서 한번더 조절해서 최종적으로 우리의 윈도우 화면에 들어오게 된다고 보면된다
거의 5 단계에 걸쳐서 하는게 우리의 목표
좌표라는 정점은 우리가 vetor로 위치 벡터로 표현을 하는데 거기에 수학적으로 변환을하면
다른영역으로 우리가 로컬에서 월드 영역으로 들어가고 그다음에 카메라가 찍고있는
카메라 영역으로 들어갔다가 투영이되서 이화면안에 2D 에 납작하게 보내고
그런 일련의 작업들을 다 해야된다는 얘기
행렬을 배우면 이런 모든것들을 할수있다
결국 메시가 월드에 표현되는것은
로컬 → 월드 → 카메라 → 모니터
내가 월드 화면을 클릭하는게 아니라 화면을 클릭하는건데 ?
아까 말했던 그 5단계를 다시 역으로 돌아가야하는것 , 역으로도 가고 앞으로도가고 해야함
나를기준으로하는건지 월드기준으로 하는건지 이게 중요 , 이런 공간에 대한 이해가없으면
함수관련해서도 많이다르기때문에 힘들수있다.