Fisheye Equidistant Lens algorith bugfix

r = lens * theta

Thanks for Adriano Oliveira for reporting this and chasing down the right formula.
Now fulldome works no longer need to use equisolid + a specific lens+sensor size.

And happy birthday to me. And yes, that's how I celebrate it ;)
This commit is contained in:
Dalai Felinto 2012-11-09 09:11:24 +00:00
parent ffbf0a1b12
commit 03cc3b94c9
2 changed files with 3 additions and 4 deletions

@ -57,8 +57,7 @@ aperture_types = (
panorama_types = (
('EQUIRECTANGULAR', "Equirectangular", "Render the scene with a spherical camera, also known as Lat Long panorama"),
('FISHEYE_EQUIDISTANT', "Fisheye Equidistant", "Ignore the sensor dimensions"),
('FISHEYE_EQUIDISTANT', "Fisheye Equidistant", "Ideal for fulldomes, ignore the sensor dimensions"),
('FISHEYE_EQUISOLID', "Fisheye Equisolid",
"Similar to most fisheye modern lens, takes sensor dimensions into consideration "
"(for fulldomes use it with a square sensor ratio)"),
"Similar to most fisheye modern lens, takes sensor dimensions into consideration"),
)

@ -98,7 +98,7 @@ __device float3 fisheye_to_direction(float u, float v, float fov)
return make_float3(0.0f, 0.0f, 0.0f);
float phi = acosf((r != 0.0f)? u/r: 0.0f);
float theta = asinf(r) * (fov / M_PI_F);
float theta = r * fov * 0.5f;
if(v < 0.0f) phi = -phi;