geometrian
geometrian

Reputation: 15387

Simulate Distortion of Spherical Billboard

I need to make spherical billboards (i.e., setting depth), but taking into account perspective projection--ideally including off-center frusta.

I wasn't able to find any references to anyone succeeding at this--although there are plenty of explanations as to why standard billboards don't have perspective distortions. Unfortunately, for my application, the lack isn't a cosmetic defect; it's actually important to the algorithm.

I did a bit of investigation on my own:

The math gets pretty messy rather quickly. The obvious approaches don't work: for example, you can't orient the billboard perpendicular to a viewing ray because tangential rays wouldn't intersect the billboard at right angles.

Probably the most promising approach I found was to render the billboard parallel to the near clipping plane, stretching it with a vertex shader into an ellipse. This only handles perturbations along one axis (so e.g. it won't handle spheres rendered in a corner of the view), but the main obstacle is calculating depth correctly; you can't compute it as you would for an undistorted sphere because the "sphere" is occluding itself.

Point of fact, I didn't find a good solution, and I couldn't find anyone who has. Anyone have an idea?

Upvotes: 1

Views: 935

Answers (1)

geometrian
geometrian

Reputation: 15387

While browsing around not even remotely working on this problem, I stumbled on http://iquilezles.org/www/articles/sphereproj/sphereproj.htm, which is pretty close. The linked tutorial shows how to compute a bounding ellipse for a rasterized sphere; getting the depth (at worst, using a raycast) should be fairly easy to derive.

Upvotes: 2

Related Questions