Using a "spherical frustum" for 3D projection

Viewed 1608

I am currently writing a transformation from model space to clip space for use in OpenGL. From what i have seen, programmers typically use a traditional rectangular frustum to define the clipping boundaries in their model space. I personally had in mind a shape like a frustum, except the near and far planes are spheres centered at the apex of the frustum (the camera). So something that looks like this:

Circular sector

The yellow region corresponds to OpenGL's clip space, and the two spheres (depicted as circles in this cross-section image) correspond to OpenGL's z=-1 (inner sphere) and z=1 (outer sphere).

Is this a more realistic way to model the projection, or should i stick with the traditional rectangular frustum when designing my projection matrix?

2 Answers

The region defined in this way seems to be more logical than usual frustum for the next reason: in the wide-angle projection (let's say 90-120 degrees) the objects those are close to far plane may disappear and suddenly reappear after just rotating the camera. This happens if the distance (euclidean) from the eye to the object is between the distances from the eye to the center of flat frustum's far plane and it's corner.

Spherical sector should remove this problem. However a new one appears: after projection on the screen surface flat polygons may become warped because of changes in depth calculations. Although I am not sure how exactly that will look like.

Related