2014-04-13 5 views
1

내가 알아챈 것처럼 많은 3D 게임 (거의 모든 것)은 원근감 계산을 위해 간단한 알고리즘을 사용합니다. 그것은 거의 이상적으로 작동하지만, 모든 물체는 FOV의 가장자리에서 크게 변형됩니다. 이 효과의 가장 간단한 예는 FOV의 가장자리에있는 모든 영역이 원처럼 보이지 않는다는 사실입니다.
OpenGl 함수 gluPerspective()은 동일한 결함으로 원근감을 만듭니다.좀 더 현실적인 원근감 알고리즘

제가 생각하기에이 문제를 해결할 수있는 더 나은 알고리즘에 대한 대략적인 아이디어가 있습니다.

따라서 질문은 다음과 같습니다.
이 결함이없는 알고리즘과 내가 읽을 수있는 곳이 있습니까?

답변

4

이 결함이없고 내가 읽을 수있는 알고리즘이 있습니까?

몇 가지가 있습니다 : 구형 투영, 입체 투영법. 원통형 투영법. 기와 파노라마 투영 등, 당신은 그것을 이름.

그러나 삼각형을 기반으로 한 래스터 링 시스템은 투영법이 올바르게 작동하는 데 매우 중요한 요구 사항이 있습니다. 직선은 직선으로 투영해야합니다 (아핀 투영). 이것은 당신이 보는 불쾌한 왜곡의 원인입니다. 위에서 언급 한 모든 투영법 (또는 그 이상)은 적절한 버텍스 쉐이더를 사용하여 OpenGL로 근사 할 수 있습니다. 그러나 모양을 좋게하려면 직선 모서리를 곡선에 매핑 할 수 있도록 충분히 많은 세그먼트로 분할해야하므로 형상을 충분히 미세하게 테셀레이션해야합니다. 테셀레이션 쉐이더를 사용할 수 있습니다. 또 다른 접근법은 넓은 필드 뷰를 큐브 맵으로 렌더링하는 것입니다 (큐브 맵은 생성을 위해 아핀 프로젝션이 필요합니다). 그런 다음 큐 맵에 적용하고 다른 매핑을 적용 할 수 있습니다.

관련 문제