From cb45a5bbb08a7878f0cd14781ed84ac42e1349ad Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Mar 2012 13:01:30 +0000 Subject: Cycles: option to specify camera aperture in radius or f/stop: http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Camera#Depth_of_Field Patch by Ejner Fergo. --- intern/cycles/blender/blender_camera.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'intern/cycles/blender/blender_camera.cpp') diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 7c9c162f8b1..e7704c5f885 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -98,7 +98,18 @@ static void blender_camera_from_object(BlenderCamera *bcam, BL::Object b_ob) bcam->ortho_scale = b_camera.ortho_scale(); bcam->lens = b_camera.lens(); - bcam->aperturesize = RNA_float_get(&ccamera, "aperture_size"); + + /* allow f/stop number to change aperture_size but still + give manual control over aperture radius */ + int aperture_type = RNA_enum_get(&ccamera, "aperture_type"); + + if(aperture_type == 1) { + float fstop = RNA_float_get(&ccamera, "aperture_fstop"); + bcam->aperturesize = (bcam->lens*1e-3f)/(2.0f*max(fstop, 1e-5f)); + } + else + bcam->aperturesize = RNA_float_get(&ccamera, "aperture_size"); + bcam->apertureblades = RNA_int_get(&ccamera, "aperture_blades"); bcam->aperturerotation = RNA_float_get(&ccamera, "aperture_rotation"); bcam->focaldistance = blender_camera_focal_distance(b_ob, b_camera); -- cgit v1.2.3