강의

멘토링

로드맵

Inflearn brand logo image

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

오융택님의 프로필 이미지
오융택

작성한 질문수

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

섹션 3 퀴즈

예제 13_4 {VM행렬을 사용하여 평면의 방정식을 로컬 좌표로 생성하기

작성

·

36

0

13장 절두체에 대해 공부하다가
예제 13_3, 13_4로 넘어가는 중

다음과 같이 학습 내용을 정리하게 되었는데, 제가 갖은 의문이 타당한 것인지, 잘못된 추론인지 알고싶어 문의드립니다.

 

 

-정리 내용-
예제 13_3에서는 뷰 공간에서의 영역 판정을 위해 원근 투영 행렬을 사용해 평면의 방정식을 만들었는데, 사실 뷰 공간 역시 모델링 행렬과 뷰 행렬을 로컬 좌표에 곱한 갑으로 분해하여 표현할 수 있다. 

정리해 본다면 수식은 다음과 같이 나타난다.

V(clip)-> = Dot(P,V(view)->) == Dot(P V M, (V(local)->))

이 수식을 통해 절두체 컬링을 수행할 때 로컬 공간에서의 평면의 방정식을 만들 수 있고, 이 평면의 방정식과 캐싱된 바운딩 볼륨을 비교하여 컬링 대상인지 아닌지를 빠르게 판단할 수 있다는 것을 알 수 있다.

또한 추가적인 장점도 있다. 

특수한 경우(화각을 직접 조정하는 경우)가 아니라면 절두체 공간은 회전변환과 이동 변환만을 수행한다.

대부분의 경우 로컬 공간의 평면의 방정식을 캐싱해두고 사용할 수 있다는 소리다. 

단점은 모델링 행렬 자체가 변환되는 경우이다. 

본질적으로 평면의 방정식을 로컬 공간으로 변환해서 비교한다는 것은 각 오브젝트 마다 서로 다른 평면의 방정식을 가지고 있다는 소리가 된다.(모델링 행렬은 각 오브젝트마다 전부 다르므로)

또한 뷰 공간으로 변환하여 비교를 하던지, 로컬 공간에서 비교를 하던지 어차피 해야하는 계산이라는 것은 변하지 않는다는 것이다. 

이 단점을 커버하는 것이 아마도 Static 오브젝트 설정인 것으로 나는 추측한다. 

정적 게임 오브젝트는 그 형태가 변하지 않는 불변의 객체이므로, 모델링 행렬이 변하지 않는다. 그렇다면 이 오브젝트에 대해서는 항상 같은 로컬 공간의 평면의 방정식이 형성되고, 캐싱되어 사용할 수 있기 때문에, 카메라의 현재 설정값에만 영향을 받아 바운딩 볼륨을 언제나 즉시 비교할 수 있다는 것을 알 수 있다. 

답변 2

1

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

네 잘 정리해주신 것 같습니다.

오융택님의 프로필 이미지
오융택
질문자

넵 답변 감사드립니다!

1

안녕하세요, 인프런 AI 인턴입니다.

오융택님께서 정리하신 내용은 상당히 심도 있는 게임 프로그래밍의 절두체 컬링 및 좌표 변환에 관한 개념입니다. 여기에 대한 몇 가지 포인트를 짚고 넘어가면 도움이 될 것 같습니다.

  1. 뷰 공간과 로컬 좌표: 예제 13_3과 13_4에서 제시하는 바와 같이, 절두체의 평면 방정식을 로컬 좌표에서 작성할 수 있다는 것은 매우 중요한 개념입니다. 이는 주로 각 오브젝트에 대해 독립적으로 컬링을 수행할 수 있게 해주며, 이는 성능 상의 이점을 제공합니다. 특히, 모델링 행렬을 통해 각 오브젝트의 로컬 좌표계를 뷰 공간으로 변환할 수 있는 점이 핵심입니다.

  2. 평면의 방정식을 이용한 절두체 컬링: 절두체 절벽을 결정하는 평면의 방정식을 로컬 공간으로 가져와 비교하는 기법은, 특히 정적인 오브젝트에 있어서 캐싱된 데이터를 활용하여 더 빠른 컬링 결정을 내릴 수 있게 도와줍니다. 정적 오브젝트라면 모델링 행렬이 변하지 않기 때문에 평면의 방정식을 다시 계산할 필요 없이, 이미 계산된 값을 재사용할 수 있습니다. 이는 성능 최적화에 큰 도움이 됩니다.

  3. 모델링 행렬의 변화: 동적 오브젝트의 경우, 모델링 행렬이 자주 변하기 때문에, 매번 로컬 좌표에서의 평면 방정식을 새로 계산해야 하는 오버헤드가 존재합니다. 따라서, 동적 오브젝트의 경우에는 뷰 공간에서 직접 비교하는 방식이 더 효율적일 수 있습니다.

  4. 계산의 동일성: 말씀하신 대로, 로컬 공간에서의 계산이든 뷰 공간에서의 계산이든, 절두체 컬링을 수행하기 위해 필요한 계산은 본질적으로 동일합니다. 그러나 로컬 공간에서 이루어지는 컬링은 대상 오브젝트의 특성에 맞춰 최적화를 가능하게 해준다는 점이 특징입니다.

추가적으로 비슷한 주제를 다룬 답변을 확인하면 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

오융택님의 프로필 이미지
오융택

작성한 질문수

질문하기