diff --git a/intern/cycles/blender/camera.cpp b/intern/cycles/blender/camera.cpp index 06763680a32..25788854174 100644 --- a/intern/cycles/blender/camera.cpp +++ b/intern/cycles/blender/camera.cpp @@ -648,7 +648,6 @@ static MotionPosition blender_motion_blur_position_type_to_cycles( } void BlenderSync::sync_camera(BL::RenderSettings &b_render, - BL::Object &b_override, const int width, const int height, const char *viewname) @@ -682,11 +681,7 @@ void BlenderSync::sync_camera(BL::RenderSettings &b_render, } /* camera object */ - BL::Object b_ob = b_scene.camera(); - - if (b_override) { - b_ob = b_override; - } + BL::Object b_ob = get_camera_object(PointerRNA_NULL, PointerRNA_NULL); if (b_ob) { BL::Array b_ob_matrix; @@ -719,14 +714,8 @@ void BlenderSync::sync_camera(BL::RenderSettings &b_render, } } -BL::Object BlenderSync::get_dicing_camera_object(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d) +BL::Object BlenderSync::get_camera_object(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d) { - PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); - BL::Object b_ob = BL::Object(RNA_pointer_get(&cscene, "dicing_camera")); - if (b_ob) { - return b_ob; - } - BL::Object b_camera_override = b_engine.camera_override(); if (b_camera_override) { return b_camera_override; @@ -741,6 +730,17 @@ BL::Object BlenderSync::get_dicing_camera_object(BL::SpaceView3D b_v3d, BL::Regi return b_scene.camera(); } +BL::Object BlenderSync::get_dicing_camera_object(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d) +{ + PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); + BL::Object b_ob = BL::Object(RNA_pointer_get(&cscene, "dicing_camera")); + if (b_ob) { + return b_ob; + } + + return get_camera_object(b_v3d, b_rv3d); +} + void BlenderSync::sync_camera_motion(BL::RenderSettings &b_render, BL::Object &b_ob, const int width, diff --git a/intern/cycles/blender/object.cpp b/intern/cycles/blender/object.cpp index 5f637855257..aa26d417d33 100644 --- a/intern/cycles/blender/object.cpp +++ b/intern/cycles/blender/object.cpp @@ -644,7 +644,7 @@ void BlenderSync::sync_objects(BL::Depsgraph &b_depsgraph, void BlenderSync::sync_motion(BL::RenderSettings &b_render, BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, - BL::Object &b_override, + BL::RegionView3D &b_rv3d, const int width, const int height, void **python_thread_state) @@ -654,10 +654,7 @@ void BlenderSync::sync_motion(BL::RenderSettings &b_render, } /* get camera object here to deal with camera switch */ - BL::Object b_cam = b_scene.camera(); - if (b_override) { - b_cam = b_override; - } + BL::Object b_cam = get_camera_object(b_v3d, b_rv3d); const int frame_center = b_scene.frame_current(); const float subframe_center = b_scene.frame_subframe(); diff --git a/intern/cycles/blender/session.cpp b/intern/cycles/blender/session.cpp index c0c1f7a1ef9..037c0666ce0 100644 --- a/intern/cycles/blender/session.cpp +++ b/intern/cycles/blender/session.cpp @@ -133,12 +133,11 @@ void BlenderSession::create_session() /* create sync */ sync = make_unique( b_engine, b_data, b_scene, scene, !background, use_developer_ui, session->progress); - BL::Object b_camera_override(b_engine.camera_override()); if (b_v3d) { sync->sync_view(b_v3d, b_rv3d, width, height); } else { - sync->sync_camera(b_render, b_camera_override, width, height, ""); + sync->sync_camera(b_render, width, height, ""); } /* set buffer parameters */ @@ -230,8 +229,7 @@ void BlenderSession::reset_session(BL::BlendData &b_data, BL::Depsgraph &b_depsg sync->sync_recalc(b_depsgraph, b_v3d, b_rv3d); } - BL::Object b_camera_override(b_engine.camera_override()); - sync->sync_camera(b_render, b_camera_override, width, height, ""); + sync->sync_camera(b_render, width, height, ""); BL::SpaceView3D b_null_space_view3d(PointerRNA_NULL); BL::RegionView3D b_null_region_view3d(PointerRNA_NULL); @@ -392,12 +390,11 @@ void BlenderSession::render(BL::Depsgraph &b_depsgraph_) } /* update scene */ - BL::Object b_camera_override(b_engine.camera_override()); - sync->sync_camera(b_render, b_camera_override, width, height, b_rview_name.c_str()); + sync->sync_camera(b_render, width, height, b_rview_name.c_str()); sync->sync_data(b_render, b_depsgraph, b_v3d, - b_camera_override, + b_rv3d, width, height, &python_thread_state, @@ -689,13 +686,12 @@ void BlenderSession::bake(BL::Depsgraph &b_depsgraph_, session->full_buffer_written_cb = [&](string_view filename) { full_buffer_written(filename); }; /* Sync scene. */ - BL::Object b_camera_override(b_engine.camera_override()); sync->set_bake_target(b_object); - sync->sync_camera(b_render, b_camera_override, width, height, ""); + sync->sync_camera(b_render, width, height, ""); sync->sync_data(b_render, b_depsgraph, b_v3d, - b_camera_override, + b_rv3d, width, height, &python_thread_state, @@ -815,11 +811,10 @@ void BlenderSession::synchronize(BL::Depsgraph &b_depsgraph_) /* data and camera synchronize */ b_depsgraph = b_depsgraph_; - BL::Object b_camera_override(b_engine.camera_override()); sync->sync_data(b_render, b_depsgraph, b_v3d, - b_camera_override, + b_rv3d, width, height, &python_thread_state, @@ -829,7 +824,7 @@ void BlenderSession::synchronize(BL::Depsgraph &b_depsgraph_) sync->sync_view(b_v3d, b_rv3d, width, height); } else { - sync->sync_camera(b_render, b_camera_override, width, height, ""); + sync->sync_camera(b_render, width, height, ""); } /* get buffer parameters */ diff --git a/intern/cycles/blender/sync.cpp b/intern/cycles/blender/sync.cpp index 68b1240391c..0b50d332ff0 100644 --- a/intern/cycles/blender/sync.cpp +++ b/intern/cycles/blender/sync.cpp @@ -277,7 +277,7 @@ void BlenderSync::sync_recalc(BL::Depsgraph &b_depsgraph, void BlenderSync::sync_data(BL::RenderSettings &b_render, BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, - BL::Object &b_override, + BL::RegionView3D &b_rv3d, const int width, const int height, void **python_thread_state, @@ -313,7 +313,7 @@ void BlenderSync::sync_data(BL::RenderSettings &b_render, { sync_objects(b_depsgraph, b_v3d); } - sync_motion(b_render, b_depsgraph, b_v3d, b_override, width, height, python_thread_state); + sync_motion(b_render, b_depsgraph, b_v3d, b_rv3d, width, height, python_thread_state); geometry_synced.clear(); diff --git a/intern/cycles/blender/sync.h b/intern/cycles/blender/sync.h index 309858931f0..fd716c58b5a 100644 --- a/intern/cycles/blender/sync.h +++ b/intern/cycles/blender/sync.h @@ -56,7 +56,7 @@ class BlenderSync { void sync_data(BL::RenderSettings &b_render, BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, - BL::Object &b_override, + BL::RegionView3D &b_rv3d, const int width, const int height, void **python_thread_state, @@ -67,7 +67,6 @@ class BlenderSync { bool background, const DeviceInfo &denoise_device_info); void sync_camera(BL::RenderSettings &b_render, - BL::Object &b_override, const int width, const int height, const char *viewname); @@ -117,7 +116,7 @@ class BlenderSync { void sync_motion(BL::RenderSettings &b_render, BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, - BL::Object &b_override, + BL::RegionView3D &b_rv3d, const int width, const int height, void **python_thread_state); @@ -213,6 +212,8 @@ class BlenderSync { bool object_can_have_geometry(BL::Object &b_ob); bool object_is_light(BL::Object &b_ob); bool object_is_camera(BL::Object &b_ob); + + BL::Object get_camera_object(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d); BL::Object get_dicing_camera_object(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d); /* variables */