Fix T84242: freestyle animated camera shift lags behind in animation render

This commit is contained in:
Brecht Van Lommel 2021-01-21 14:21:49 +01:00
parent aff7d59986
commit 84702bd3d8
Notes: blender-bot 2023-02-14 11:28:43 +01:00
Referenced by issue #84242, Freestyle lines lag one frame behind if Camera shift is animated (Cycles only, Eevee is fine)
1 changed files with 10 additions and 20 deletions

View File

@ -178,24 +178,6 @@ static void init_view(Render *re)
}
}
static void init_camera(Render *re)
{
// It is assumed that imported meshes are in the camera coordinate system.
// Therefore, the view point (i.e., camera position) is at the origin, and
// the model-view matrix is simply the identity matrix.
zero_v3(g_freestyle.viewpoint);
unit_m4(g_freestyle.mv);
copy_m4_m4(g_freestyle.proj, re->winmat);
#if 0
print_m4("mv", g_freestyle.mv);
print_m4("proj", g_freestyle.proj);
#endif
}
static char *escape_quotes(char *name)
{
char *s = (char *)MEM_mallocN(strlen(name) * 2 + 1, "escape_quotes");
@ -632,9 +614,8 @@ void FRS_init_stroke_renderer(Render *re)
controller->ResetRenderCount();
}
void FRS_begin_stroke_rendering(Render *re)
void FRS_begin_stroke_rendering(Render *UNUSED(re))
{
init_camera(re);
}
void FRS_do_stroke_rendering(Render *re, ViewLayer *view_layer)
@ -657,6 +638,15 @@ void FRS_do_stroke_rendering(Render *re, ViewLayer *view_layer)
Depsgraph *depsgraph = DEG_graph_new(re->main, re->scene, scene_view_layer, DAG_EVAL_RENDER);
BKE_scene_graph_update_for_newframe(depsgraph);
/* Init camera
* Objects are transformed into camera coordinate system, therefore the camera position
* is zero and the modelview matrix is the identity matrix. */
Object *ob_camera_orig = RE_GetCamera(re);
Object *ob_camera_eval = DEG_get_evaluated_object(depsgraph, ob_camera_orig);
zero_v3(g_freestyle.viewpoint);
unit_m4(g_freestyle.mv);
RE_GetCameraWindow(re, ob_camera_eval, g_freestyle.proj);
// prepare Freestyle:
// - load mesh
// - add style modules