Commit: 15bae8ac0050a50904ac4f90e85e4463463b3c5d
Author: Brecht Van Lommel
Date:   Thu Jan 24 16:34:26 2019 +0100
Branches: master
https://developer.blender.org/rB15bae8ac0050a50904ac4f90e85e4463463b3c5d

Fix T60095: freestyle not rendering animated camera correctly.

Replace legacy view matrix access with same one used by Eevee.

===================================================================

M       source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
M       source/blender/render/extern/include/RE_pipeline.h
M       source/blender/render/intern/include/render_types.h
M       source/blender/render/intern/source/pipeline.c

===================================================================

diff --git 
a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp 
b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
index 4d77962bdfa..14f524199a2 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
@@ -408,9 +408,15 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh 
*me, int id)
        FreestyleEdge *fed = (FreestyleEdge*)CustomData_get_layer(&me->edata, 
CD_FREESTYLE_EDGE);
        FreestyleFace *ffa = (FreestyleFace*)CustomData_get_layer(&me->pdata, 
CD_FREESTYLE_FACE);
 
+       // Compute view matrix
+       Object *ob_camera_eval = DEG_get_evaluated_object(_depsgraph, 
RE_GetCamera(_re));
+       float viewinv[4][4], viewmat[4][4];
+       RE_GetCameraModelMatrix(_re, ob_camera_eval, viewinv);
+       invert_m4_m4(viewmat, viewinv);
+
        // Compute matrix including camera transform
        float obmat[4][4], nmat[4][4];
-       mul_m4_m4m4(obmat, _re->viewmat, ob->obmat);
+       mul_m4_m4m4(obmat, viewmat, ob->obmat);
        invert_m4_m4(nmat, obmat);
        transpose_m4(nmat);
 
diff --git a/source/blender/render/extern/include/RE_pipeline.h 
b/source/blender/render/extern/include/RE_pipeline.h
index be7bf4f454b..bde767dc99e 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -257,7 +257,6 @@ void RE_SetOrtho(struct Render *re, const rctf *viewplane, 
float clipsta, float
 void RE_SetView(struct Render *re, float mat[4][4]);
 
 /* get current view and window transform */
-void RE_GetView(struct Render *re, float mat[4][4]);
 void RE_GetViewPlane(struct Render *re, rctf *r_viewplane, rcti *r_disprect);
 
 /* set the render threads based on the commandline and autothreads setting */
diff --git a/source/blender/render/intern/include/render_types.h 
b/source/blender/render/intern/include/render_types.h
index 0f42fff94fe..e5689dfff74 100644
--- a/source/blender/render/intern/include/render_types.h
+++ b/source/blender/render/intern/include/render_types.h
@@ -103,8 +103,6 @@ struct Render {
        int partx, party;
 
        /* Camera transform, only used by Freestyle. */
-       float viewmat[4][4], viewinv[4][4];
-       float viewmat_orig[4][4];       /* for incremental render */
        float winmat[4][4];
 
        /* clippping */
diff --git a/source/blender/render/intern/source/pipeline.c 
b/source/blender/render/intern/source/pipeline.c
index 8b815539d22..6e6bbe6332d 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -966,13 +966,6 @@ void RE_SetOrtho(Render *re, const rctf *viewplane, float 
clipsta, float clipend
                        re->viewplane.ymin, re->viewplane.ymax, re->clipsta, 
re->clipend);
 }
 
-void RE_SetView(Render *re, float mat[4][4])
-{
-       /* re->ok flag? */
-       copy_m4_m4(re->viewmat, mat);
-       invert_m4_m4(re->viewinv, re->viewmat);
-}
-
 void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti *r_disprect)
 {
        *r_viewplane = re->viewplane;
@@ -986,11 +979,6 @@ void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti 
*r_disprect)
        }
 }
 
-void RE_GetView(Render *re, float mat[4][4])
-{
-       copy_m4_m4(mat, re->viewmat);
-}
-
 /* image and movie output has to move to either imbuf or kernel */
 void RE_display_init_cb(Render *re, void *handle, void (*f)(void *handle, 
RenderResult *rr))
 {
@@ -2055,28 +2043,6 @@ void RE_RenderFreestyleExternal(Render *re)
 
                for (rv = re->result->views.first; rv; rv = rv->next) {
                        RE_SetActiveRenderView(re, rv->name);
-
-                       /* scene needs to be set to get camera */
-                       Object *camera = RE_GetCamera(re);
-
-                       /* if no camera, viewmat should have been set! */
-                       if (camera) {
-                               /* called before but need to call again in case 
of lens animation from the
-                                * above call to 
BKE_scene_graph_update_for_newframe, fixes bug. [#22702].
-                                * following calls don't depend on 
'RE_SetCamera' */
-                               float mat[4][4];
-
-                               RE_SetCamera(re, camera);
-                               RE_GetCameraModelMatrix(re, camera, mat);
-                               invert_m4(mat);
-                               RE_SetView(re, mat);
-
-                               /* force correct matrix for scaled cameras */
-                               DEG_id_tag_update_ex(re->main, &camera->id, 
ID_RECALC_TRANSFORM);
-                       }
-
-                       printf("add freestyle\n");
-
                        add_freestyle(re, 1);
                }
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to