Fix T102514: wrong scene reported for missing compositing camera
If compositing uses renderlayers, and a camera was missing in the associated scenes, the error message also referred to the scene the comp tree was in (not the scene of the renderlayer -- which can potentionally be different). This was confusing and is now rectified. Maniphest Tasks: T102514 Differential Revision: https://developer.blender.org/D16542
This commit is contained in:
parent
34e9924086
commit
9e0fcd5755
Notes:
blender-bot
2023-02-14 11:21:40 +01:00
Referenced by issue #88449: Blender LTS: Maintenance Task 2.93 Referenced by issue #88449, Blender LTS: Maintenance Task 2.93 Referenced by issue #102514, No Camera Found in Scene - Not True
|
@ -1497,7 +1497,9 @@ static void do_render_full_pipeline(Render *re)
|
|||
}
|
||||
}
|
||||
|
||||
static bool check_valid_compositing_camera(Scene *scene, Object *camera_override)
|
||||
static bool check_valid_compositing_camera(Scene *scene,
|
||||
Object *camera_override,
|
||||
ReportList *reports)
|
||||
{
|
||||
if (scene->r.scemode & R_DOCOMP && scene->use_nodes) {
|
||||
bNode *node = scene->nodetree->nodes.first;
|
||||
|
@ -1510,6 +1512,11 @@ static bool check_valid_compositing_camera(Scene *scene, Object *camera_override
|
|||
}
|
||||
if (sce->camera == NULL) {
|
||||
/* all render layers nodes need camera */
|
||||
BKE_reportf(reports,
|
||||
RPT_ERROR,
|
||||
"No camera found in scene \"%s\" (used in compositing of scene \"%s\")",
|
||||
sce->id.name + 2,
|
||||
scene->id.name + 2);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1519,7 +1526,12 @@ static bool check_valid_compositing_camera(Scene *scene, Object *camera_override
|
|||
return true;
|
||||
}
|
||||
|
||||
return (camera_override != NULL || scene->camera != NULL);
|
||||
const bool ok = (camera_override != NULL || scene->camera != NULL);
|
||||
if (!ok) {
|
||||
BKE_reportf(reports, RPT_ERROR, "No camera found in scene \"%s\"", scene->id.name + 2);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
static bool check_valid_camera_multiview(Scene *scene, Object *camera, ReportList *reports)
|
||||
|
@ -1563,8 +1575,6 @@ static bool check_valid_camera_multiview(Scene *scene, Object *camera, ReportLis
|
|||
|
||||
static int check_valid_camera(Scene *scene, Object *camera_override, ReportList *reports)
|
||||
{
|
||||
const char *err_msg = "No camera found in scene \"%s\"";
|
||||
|
||||
if (camera_override == NULL && scene->camera == NULL) {
|
||||
scene->camera = BKE_view_layer_camera_find(BKE_view_layer_default_render(scene));
|
||||
}
|
||||
|
@ -1586,8 +1596,7 @@ static int check_valid_camera(Scene *scene, Object *camera_override, ReportList
|
|||
/* camera could be unneeded due to composite nodes */
|
||||
Object *override = (seq->scene == scene) ? camera_override : NULL;
|
||||
|
||||
if (!check_valid_compositing_camera(seq->scene, override)) {
|
||||
BKE_reportf(reports, RPT_ERROR, err_msg, seq->scene->id.name + 2);
|
||||
if (!check_valid_compositing_camera(seq->scene, override, reports)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1601,8 +1610,7 @@ static int check_valid_camera(Scene *scene, Object *camera_override, ReportList
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (!check_valid_compositing_camera(scene, camera_override)) {
|
||||
BKE_reportf(reports, RPT_ERROR, err_msg, scene->id.name + 2);
|
||||
else if (!check_valid_compositing_camera(scene, camera_override, reports)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue