[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59844] trunk/blender/source/blender: Fix #36649 and #36650: animation of freestyle line thickness and linestyle did
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Sep 5 17:47:52 CEST 2013
Revision: 59844
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59844
Author: blendix
Date: 2013-09-05 15:47:52 +0000 (Thu, 05 Sep 2013)
Log Message:
-----------
Fix #36649 and #36650: animation of freestyle line thickness and linestyle did
not render correct in animations, due to missing updates.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/scene.c
trunk/blender/source/blender/render/intern/source/pipeline.c
Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c 2013-09-05 15:40:50 UTC (rev 59843)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c 2013-09-05 15:47:52 UTC (rev 59844)
@@ -44,6 +44,7 @@
#include "DNA_anim_types.h"
#include "DNA_group_types.h"
+#include "DNA_linestyle_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_rigidbody_types.h"
@@ -1064,6 +1065,7 @@
*/
static void scene_update_drivers(Main *UNUSED(bmain), Scene *scene)
{
+ SceneRenderLayer *srl;
float ctime = BKE_scene_frame_get(scene);
/* scene itself */
@@ -1098,6 +1100,22 @@
if (adt && adt->drivers.first)
BKE_animsys_evaluate_animdata(scene, nid, adt, ctime, ADT_RECALC_DRIVERS);
}
+
+ /* freestyle */
+ for (srl = scene->r.layers.first; srl; srl = srl->next) {
+ FreestyleConfig *config = &srl->freestyleConfig;
+ FreestyleLineSet *lineset;
+
+ for (lineset = config->linesets.first; lineset; lineset = lineset->next) {
+ if (lineset->linestyle) {
+ ID *lid = &lineset->linestyle->id;
+ AnimData *adt = BKE_animdata_from_id(lid);
+
+ if (adt && adt->drivers.first)
+ BKE_animsys_evaluate_animdata(scene, lid, adt, ctime, ADT_RECALC_DRIVERS);
+ }
+ }
+ }
}
/* deps hack - do extra recalcs at end */
Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c 2013-09-05 15:40:50 UTC (rev 59843)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c 2013-09-05 15:47:52 UTC (rev 59844)
@@ -630,6 +630,22 @@
RE_init_threadcount(re);
}
+/* update some variables that can be animated, and otherwise wouldn't be due to
+ * RenderData getting copied once at the start of animation render */
+static void render_update_anim_renderdata(Render *re, RenderData *rd)
+{
+ /* filter */
+ re->r.gauss = rd->gauss;
+
+ /* motion blur */
+ re->r.mblur_samples = rd->mblur_samples;
+ re->r.blurfac = rd->blurfac;
+
+ /* freestyle */
+ re->r.line_thickness_mode = rd->line_thickness_mode;
+ re->r.unit_line_thickness = rd->unit_line_thickness;
+}
+
void RE_SetWindow(Render *re, rctf *viewplane, float clipsta, float clipend)
{
/* re->ok flag? */
@@ -2408,6 +2424,7 @@
/* not too nice, but it survives anim-border render */
if (anim) {
+ render_update_anim_renderdata(re, &scene->r);
re->disprect = disprect;
return 1;
}
More information about the Bf-blender-cvs
mailing list