Alternative approach to fisheye camera

Attached is an alternative approach to the builtin Vuo fisheye camera node.

So why bother? The approach the builtin Vuo node uses (I believe is the vertex shader style method) has some limitations. One is that it currently (Jan 2023) seems to misbehave when there are large polygons cutting the final fisheye FOV. If it is indeed a vertex shader then this is a known issue of that approach. Another is that it is limited to 180 degree FOV fisheye. Theoretical fisheye projections (the mathematics) extend up to 360 degrees, there are lots of 220 degree physical fisheye lenses and there are some that extend to 250 degrees.

The approach illustrated here is a multipass camera, four 90x90 degree perspective views are captured and each placed onto a “special” mesh which when viewed with an orthographic camera gives a fisheye view. The meshes here are designed for a 180 degree fisheye, the meshes for fisheyes up to 240 degrees can be found here. Noting that between 180 and 240 degrees requires a five pass render.
http://paulbourke.net/dome/unityfisheye/
To generate a fisheye from 240 to 360 degrees would require a different mesh set and a 6 pass render.

The main disadvantage of this approach is a higher performance hit than the vertex shader method. Another issue is if the 3D scene relies on using the camera view direction, for example for billboards, particle sprites, etc.

vuo 4 camera rig.zip (45.4 MB)

2 Likes