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);

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

Reply via email to