Refactor: Cycles: Deduplicate get camera object code
Pull Request: https://projects.blender.org/blender/blender/pulls/141796
This commit is contained in:
@@ -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<float, 16> 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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -133,12 +133,11 @@ void BlenderSession::create_session()
|
||||
/* create sync */
|
||||
sync = make_unique<BlenderSync>(
|
||||
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 */
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user