diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-10-27 17:00:51 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-10-28 00:43:06 +0300 |
commit | b909dfdae140ba0cc71003ad30dc612b059732d6 (patch) | |
tree | 9d705fd6606d4eb7a34196fe6efe67879356b9c9 /intern/cycles/blender/blender_camera.cpp | |
parent | 6a529e14f4c25fc20b797799b602472d3a22a0f9 (diff) |
Cycles: Expose user-defined shutter curve to the interface
Shutter curve now can be controlled using curve mapping widget in the motion
blur panel in Render buttons. Only mapping from 0..1 by x axis are allowed,
Y values will be normalized to fill in 0..1 space as well automatically.
Y values of 0 means fully closed shutter, Y values of 1 means fully opened
shutter.
Default mapping is set to old behavior when shutter opens and closes instantly.
This shutter mapping curve could easily be used by any other render engine by
accessing scene.render.motion_blur_shutter_curve.
Reviewers: #cycles, brecht, juicyfruit, campbellbarton
Differential Revision: https://developer.blender.org/D1585
Diffstat (limited to 'intern/cycles/blender/blender_camera.cpp')
-rw-r--r-- | intern/cycles/blender/blender_camera.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 7cb5e38d4e5..cde3840b796 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -37,6 +37,7 @@ struct BlenderCamera { float lens; float shuttertime; Camera::MotionPosition motion_position; + float shutter_curve[RAMP_TABLE_SIZE]; float aperturesize; uint apertureblades; @@ -417,6 +418,8 @@ static void blender_camera_sync(Camera *cam, BlenderCamera *bcam, int width, int cam->fov_post = cam->fov; cam->motion_position = bcam->motion_position; + memcpy(cam->shutter_curve, bcam->shutter_curve, sizeof(cam->shutter_curve)); + /* border */ cam->border = bcam->border; cam->viewport_camera_border = bcam->viewport_camera_border; @@ -437,6 +440,9 @@ void BlenderSync::sync_camera(BL::RenderSettings b_render, BL::Object b_override bcam.pixelaspect.x = b_render.pixel_aspect_x(); bcam.pixelaspect.y = b_render.pixel_aspect_y(); bcam.shuttertime = b_render.motion_blur_shutter(); + curvemapping_to_array(b_render.motion_blur_shutter_curve(), + bcam.shutter_curve, + RAMP_TABLE_SIZE); PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); switch(RNA_enum_get(&cscene, "motion_blur_position")) { @@ -545,6 +551,9 @@ static void blender_camera_from_view(BlenderCamera *bcam, BL::RenderEngine b_eng bcam->farclip = b_v3d.clip_end(); bcam->lens = b_v3d.lens(); bcam->shuttertime = b_scene.render().motion_blur_shutter(); + curvemapping_to_array(b_scene.render().motion_blur_shutter_curve(), + bcam->shutter_curve, + RAMP_TABLE_SIZE); if(b_rv3d.view_perspective() == BL::RegionView3D::view_perspective_CAMERA) { /* camera view */ |