onlybooks / gamemath

<이득우의 게임 수학> 공식 깃허브 페이지
MIT License
178 stars 75 forks source link

카메라 공간에 대해 질문이 있습니다 #9

Open StarPilot01 opened 2 years ago

StarPilot01 commented 2 years ago
  1. 348p의 그림 10-8에서 180도로 Yaw회전을 하면 그림 10-9처럼 좌표계가 변하는게 맞나요? 그런데 10-1의 소스코드(352p 주석 4번째)에서 카메라에게 Yaw회전을 하는 부분을 없애도 z축이 양의 방향을 향하고 있습니다. 결국 회전을 하나 안 하나 z축은 양의 방향을 보고 있고 플레이어도 화면에 나옵니다 (351p 설명에 보면 "뒤에 위치한 플레이어를 보려면 요 회전으로 180도 돌려줘야 한다" 라고 나와 있는데 말이죠) 왜 그런건가요?

  2. 왜 180도로 Yaw회전을 한 후에도 CameraObject::GetViewMatrix() 함수에서 x와 z축을 음수로 바꾸는지 모르겠습니다. 이미 180도를 한 이후에는 그림 10-9의 좌표계로 바뀐 상태가 아닌가요? 혹시 Yaw회전을 하는 것은 좌표계를 유지한 채 그냥 카메라를 돌리는 것이고 CameraObject::GetViewMatrix() 함수에서 x와 z축을 음수로 바꾸는 것은 좌표계 축의 방향을 바꾸는 것인가요?

ideugu commented 2 years ago

안녕하세요. 이 부분이 꽤나 난해한 부분인데, 요점을 잘 정리해주었네요.

1번의 답변 10장의 예제는 z값을 고려하지 않고 x,y 값만 참고해 그립니다. 따라서 뒤에 있는 물체도 그려지도록 로직이 설정되어 있습니다. 만약에 z>0의 조건을 추가로 준다면 뒤에 있는 물체는 안그립니다. ( 이 부분은 13장에서 확실히 처리하기 때문에 우선 그대로 두었습니다. )

2번의 답변 180도 Yaw 회전이라는 것은 x와 z값을 반전시키는 것으로 간단히 구현 가능합니다. 말씀하신대로 코드의 Yaw회전은 카메라 게임 오브젝트를 돌리는 것을 의미하고, GetViewMatrix()함수의 x와 z값을 반전시키는 작업은 좌표계를 바꾸는 것으로 이해해주시면 됩니다.

좋은 질문 감사합니다~