According to the documentation, the polynomial fisheye lens in Cycles can be used to approximate a wide range of fisheye cameras by using the formula

$$ r = \sqrt{x^2 + y^2} \\ \theta = k_0 + k_1 r + k_2 r^2 + k_3 r^3 + k^4 r^4 $$

where $x, y$ are given in $mm$ on the camera sensor and $\theta$ is calculated in radians.

I'm confused by this though, because:

example Fisheye Poynomial setup

  1. there is no camera sensor size setting in this mode, so the value must somehow be hardcoded, right? From manual testing, apparently, choosing $k_1 = 10°$ and all others $k_{i\neq1}=0°$ will essentially reproduce Mirror Ball.
  2. I see no reason why these coefficients are given in $°$ (degrees) in the UI. As far as I can tell, these $k_i$ do not represent angles?

I would like to approximate a lens equivalent to a convex parabolic mirror but due to these confusing design choices I'm not sure how to do so / whether my values are wrong because I didn't do the relevant conversion correctly, or because of a different issue.

As far as I can tell, to get something parabolic in principle, you need the polar coordinates of the relevant lens shape expressed as a function $\theta\left(r\right)$. Unfortunately, the result involves trig functions, but I can get the closest match up to fourth order by doing a Taylor expansion accordingly.

I think my values ought to be either of:

$$ k_0 = 0 \ \text{or} \ \frac{\pi}{2} \\ k_1 = \frac{1}{2} \ \text{or} -\frac{1}{2} \\ k_2 = 0 \\ k_3 = -\frac{5}{48} \ \text{or} \ \frac{5}{48} \\ k_4 = 0 $$

so my polynomial is $ \theta = \frac{\pi}{4} \pm \frac{\pi}{4} r \mp \frac{1}{2} \pm \frac{5}{48} r^3$

I'm not sure which of those would be correct, but one or the other should be.

However, that doesn't really make a whole lot of sense unless I figure out what the actual units here are supposed to be. I'm expecting a result where I don't (and indeed can't ever) see the full 360° view because a parabolic mirror is never going to be parallel with the incoming ray (unlike a mirror ball that always shows a 360° view in it, except for a small distortion where it occludes its own backside - but in the idealized mirror ball camera mode, that occlusion is 0, so it's a full 360° view. In fact, it's equivalent to Equisolid at 9mm apparently)

What I'm actually getting looks like:

r/2 - 5r³/48 π/2 - r/2 + 5r³/48

So what is the right approach here?
Note: I'm not even sure whether my formula is entirely right. But due to the unclear documentation and way it's shown in the UI, I don't know whether the formulae are wrong or I simply have to interpret the $k_i$ differently.



You must log in to answer this question.

Browse other questions tagged .