2011-02-16 4 views
1

나는 fov = 50, 근사값 = 0.1, 근사값 = 1000, 종횡비 = 3/2로 절두체를 설정했습니다. 아직 좋지 않습니다. - 내 물체가 압축되어있는 것 같습니다. 옆쪽. 도움이 될만한 뭔가.iphone에 절두체 설치

답변

2

스크린 샷을 사용하면 도움이됩니다. 하지만 네 문제를 이해할 것 같아. 여러분이 관찰하고있는 것은 affine projection의 효과입니다. 매개 변수 fov은 오해의 소지가 있습니다. 일부 각도 투영법 (어안)을 사용하는 것이 좋습니다. 실제로 일어나는 일은 근사 투영 평면의 범위가 fov 각 아래에서 테두리가 보이도록 배치된다는 것입니다. 그러나 가까운 비행기는 바로 그 평면입니다. 그래서 매우 큰 fov는 매우 부자연스러워 보입니다.

아이폰의 그래픽 기능을 마음에서 모르지만 필자가 잘못 생각하지 않는다면 버텍스 쉐이더를 지원한다. 그래서 affine frustum 투영법 대신에 (당신의 요구가 무엇인지에 따라) sterography 나 mercator와 같은 완전히 다른 종류의 투영 모델을 구현할 수 있습니다. 선형 행렬 곱셈과 관련하여 연산이 더 이상 수행되지 않습니다.

사이드 노트 : 원근감있는 깊이 버퍼링의 비선형 성으로 인해 근거리 및 원거리의 값은 너무 극단적입니다. 거의 모든 깊이 버퍼 정밀도는 0.1 ~ 20 사이입니다.

+0

fov를 10으로 줄이면 장면의 일부 영역이 잘 리게됩니다. 또한 버텍스 쉐이더를 지원하지 않는 OpenGL es 1.1을 사용하고 있습니다. – kdkdkd

+0

또한 객체가 (객체의) 순방향으로 늘어납니다. – kdkdkd

+0

이것은 내 프로젝션 매트릭스입니다 ... float h = height/width; glMatrixMode (GL_PROJECTION); GLfloat 크기 = 0.1 * tanf ((30.0f * 3.14159f/180.0f)/2.0f); glFrustumf (-size/h, 크기/h, 크기, 크기, 0.1500.0); – kdkdkd