[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46663] trunk/blender/source/blender: Blender Internal Render: Split quads to predictable (vertices 0, 1, 3) triangles for animated meshes.

Daniel Genrich daniel.genrich at gmx.net
Tue May 15 15:39:45 CEST 2012


Revision: 46663
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46663
Author:   genscher
Date:     2012-05-15 13:39:44 +0000 (Tue, 15 May 2012)
Log Message:
-----------
Blender Internal Render: Split quads to predictable (vertices 0,1,3) triangles for animated meshes.

This solves problems with collisions beeing rendered different than in viewport.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h	2012-05-15 13:32:55 UTC (rev 46662)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2012-05-15 13:39:44 UTC (rev 46663)
@@ -151,6 +151,7 @@
 
 int BKE_object_is_modified(struct Scene *scene, struct Object *ob);
 int BKE_object_is_deform_modified(struct Scene *scene, struct Object *ob);
+int BKE_object_is_animated(struct Scene *scene, struct Object *ob);
 
 void BKE_object_relink(struct Object *ob);
 

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2012-05-15 13:32:55 UTC (rev 46662)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2012-05-15 13:39:44 UTC (rev 46663)
@@ -3020,6 +3020,19 @@
 	return flag;
 }
 
+/* See if an object is using an animated modifier */
+int BKE_object_is_animated(Scene *scene, Object *ob)
+{
+	ModifierData *md;
+
+	for (md = modifiers_getVirtualModifierList(ob); md; md = md->next)
+		if(modifier_dependsOnTime(md) && 
+			(modifier_isEnabled(scene, md, eModifierMode_Realtime) || 
+			modifier_isEnabled(scene, md, eModifierMode_Render)))
+			return 1;
+	return 0;
+}
+
 static void copy_object__forwardModifierLinks(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin)
 {
 	/* this is copied from ID_NEW; it might be better to have a macro */

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2012-05-15 13:32:55 UTC (rev 46662)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2012-05-15 13:39:44 UTC (rev 46663)
@@ -4318,6 +4318,8 @@
 				/* Baking lets us define a quad split order */
 				split_quads(obr, re->r.bake_quad_split);
 			}
+			else if(BKE_object_is_animated(re->scene, ob))
+				split_quads(obr, 1);
 			else {
 				if ((re->r.mode & R_SIMPLIFY && re->r.simplify_flag & R_SIMPLE_NO_TRIANGULATE) == 0)
 					check_non_flat_quads(obr);




More information about the Bf-blender-cvs mailing list