인프런 커뮤니티 질문&답변

‍구본재님의 프로필 이미지
‍구본재

작성한 질문수

게임 엔진을 지탱하는 게임 수학

원근투영 절두체에 관해서 질문 드려도 괜찮을까요?

해결된 질문

작성

·

441

1

현재 GetClientRect()를 활용하여 얻은 MFC 창의 width와 height가 각각 1420 / 653의 값을 가지고 있는데요.
 
절두체 컬링에 대한 그림을 보면 거의 정사각뿔의 절두체들로 이루어져 있습니다. 하지만 원근투영행렬을 생각해봤을 때
 
x의 값에 (초점거리) / (종횡비)를 곱해주는 부분이 있는데, 근평면을 z=-1, 원평면을 z = -300, 시야각을 90도라 하면
 
아래의 그림과 같이 컬링을 진행할 때 (1, 1, -1) ~ (300, 300, -300) 부분의 절두체가 아닌 실질적으로 빨간색 선과 점선으로 이루어진 부분을
 
절두체로 보고 컬링을 해야하는게 아닌가 싶어 질문 드립니다.
 
코딩하다보니 절두체를 검은 선 부분과 같이 잡고 컬링을 진행하면 화면 양 옆 부분이 텅 비어버리게 되어서 궁금증이 생겼습니다.

답변 2

1

이득우님의 프로필 이미지
이득우
지식공유자

네 종횡비 적용시킨 평면의 방정식을 만들어주시면 될 것 같아요. 책에는 (종횡비가 적용된) 원근투영행렬을 활용해서 절두체를 구성하는 6개의 평면 방정식을 만드는 예제를 수록했는데, 영상 강좌에서도 한번 추가해보겠습니다. 

  • 당분간은 깃허브 소스를 참고해보세요. 
  • https://github.com/onlybooks/gamemath/blob/13-2c/Source/Player/SoftRenderer3D.cpp 

 

 

‍구본재님의 프로필 이미지
‍구본재
질문자

빠른 답변 감사합니다!

0

‍구본재님의 프로필 이미지
‍구본재
질문자

y축에는 나누는부분이 없으니 빨간 사각형의 높이 = 검은 정사각형의 높이여야 좀 더 제 의도랑 맞을 것 같습니다. 감안하고 봐주세요 ㅎㅎ

‍구본재님의 프로필 이미지
‍구본재

작성한 질문수

질문하기