forked from bartvdbraak/blender
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:
parent
ffbf0a1b12
commit
03cc3b94c9
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user