Revision: 56880 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56880 Author: ton Date: 2013-05-17 13:15:43 +0000 (Fri, 17 May 2013) Log Message: ----------- Bug fix, own collection.
Shapekey drivers were executed for every call to derivedmesh, which shouldn't happen. It now only runs on the object_update() function, once for every depsgraph change. Error was found while testing preview render in viewport. On each render, the animsys sent a 'changed data' because of the shapekey drivers being called, causing eternal re-render loops (without showing anything). Modified Paths: -------------- trunk/blender/source/blender/blenkernel/intern/key.c trunk/blender/source/blender/blenkernel/intern/object.c Modified: trunk/blender/source/blender/blenkernel/intern/key.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/key.c 2013-05-17 13:02:03 UTC (rev 56879) +++ trunk/blender/source/blender/blenkernel/intern/key.c 2013-05-17 13:15:43 UTC (rev 56880) @@ -1389,10 +1389,6 @@ cp_cu_key(ob->data, key, actkb, kb, 0, tot, out, tot); } else { - /* do shapekey local drivers */ - float ctime = BKE_scene_frame_get(scene); - - BKE_animsys_evaluate_animdata(scene, &key->id, key->adt, ctime, ADT_RECALC_DRIVERS); if (ob->type == OB_MESH) do_mesh_key(scene, ob, key, out, tot); else if (ob->type == OB_LATTICE) do_latt_key(scene, ob, key, out, tot); Modified: trunk/blender/source/blender/blenkernel/intern/object.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/object.c 2013-05-17 13:02:03 UTC (rev 56879) +++ trunk/blender/source/blender/blenkernel/intern/object.c 2013-05-17 13:15:43 UTC (rev 56880) @@ -2621,6 +2621,7 @@ if (ob->recalc & OB_RECALC_DATA) { ID *data_id = (ID *)ob->data; AnimData *adt = BKE_animdata_from_id(data_id); + Key *key; float ctime = BKE_scene_frame_get(scene); if (G.debug & G_DEBUG) @@ -2631,6 +2632,12 @@ /* XXX: for mesh types, should we push this to derivedmesh instead? */ BKE_animsys_evaluate_animdata(scene, data_id, adt, ctime, ADT_RECALC_DRIVERS); } + + key = BKE_key_from_object(ob); + if (key && key->block.first) { + if (!(ob->shapeflag & OB_SHAPE_LOCK)) + BKE_animsys_evaluate_animdata(scene, &key->id, key->adt, ctime, ADT_RECALC_DRIVERS); + } /* includes all keys and modifiers */ switch (ob->type) { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs