[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