Fisheye Camera for Cycles
For sample images see: http://www.dalaifelinto.com/?p=399 (equisolid) http://www.dalaifelinto.com/?p=389 (equidistant) The 'use_panorama' option is now part of a new Camera type: 'Panorama'. Created two other panorama cameras: - Equisolid: most of lens in the market simulate this lens - e.g. Nikon, Canon, ...) this works as a real lens up to an extent. The final result takes the sensor dimensions into account also. .:. to simulate a Nikon DX2S with a 10.5mm lens do: sensor: 23.7 x 15.7 fisheye lens: 10.5 fisheye fov: 180 render dimensions: 4288 x 2848 - Equidistant: this is not a real lens model. Although the old equidistant lens simulate this lens. The result is always as a circular fisheye that takes the whole sensor (in other words, it doesn't take the sensor into consideration). This is perfect for fulldomes ;) For the UI we have 10 to 360 as soft values and 10 to 3600 as hard values (because we can). Reference material: http://www.hdrlabs.com/tutorials/downloads_files/HDRI%20for%20CGI.pdf http://www.bobatkins.com/photography/technical/field_of_view.html Note, this is not a real simulation of the light path through the lens. The ideal solution would be this: https://graphics.stanford.edu/wikis/cs348b-11/Assignment3 http://www.graphics.stanford.edu/papers/camera/ Thanks Brecht for the fix, suggestions and code review. Kudos for the dome community for keeping me stimulated on the topic since 2009 ;) Patch partly implemented during lab time at VisGraf, IMPA - Rio de Janeiro.
This commit is contained in:
@@ -474,7 +474,12 @@ __device void kernel_path_trace(KernelGlobals *kg,
|
||||
camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, &ray);
|
||||
|
||||
/* integrate */
|
||||
float4 L = kernel_path_integrate(kg, &rng, sample, ray, buffer);
|
||||
float4 L;
|
||||
|
||||
if (ray.t != 0.f)
|
||||
L = kernel_path_integrate(kg, &rng, sample, ray, buffer);
|
||||
else
|
||||
L = make_float4(0.f, 0.f, 0.f, 0.f);
|
||||
|
||||
/* accumulate result in output buffer */
|
||||
kernel_write_pass_float4(buffer, sample, L);
|
||||
|
Reference in New Issue
Block a user