[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26152] trunk/blender/source/blender/ editors/transform/transform_generics.c: Proxy + Transforms Bugfix:

Joshua Leung aligorith at gmail.com
Wed Jan 20 23:21:10 CET 2010


Revision: 26152
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26152
Author:   aligorith
Date:     2010-01-20 23:21:10 +0100 (Wed, 20 Jan 2010)

Log Message:
-----------
Proxy + Transforms Bugfix:
This commit fixes some update issues for some rig setups used for Durian, with proxies not updating correctly during transforms.

The setup involves an armature that has been proxified, which deforms a mesh in the group it came from. One of the bones in this armature is constrained to an empty that was added in the shot file.  
When the empty is moved around, the mesh does not deform in response to the armature until the transform is confirmed. 

This was because the depsgraph tagging was not comprehensive enough, since only a few cached tags got restored (but not all). For now, full depsgraph tagging is now performed for objects as they are transformed.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform_generics.c

Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c	2010-01-20 21:21:05 UTC (rev 26151)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c	2010-01-20 22:21:10 UTC (rev 26152)
@@ -774,16 +774,6 @@
 		else {
 			int i;
 			
-			for(base= FIRSTBASE; base; base= base->next) {
-				Object *ob= base->object;
-				
-				/* this flag is from depgraph, was stored in initialize phase, handled in drawview.c */
-				if(base->flag & BA_HAS_RECALC_OB)
-					ob->recalc |= OB_RECALC_OB;
-				if(base->flag & BA_HAS_RECALC_DATA)
-					ob->recalc |= OB_RECALC_DATA;
-			}
-			
 			for (i = 0; i < t->total; i++) {
 				TransData *td = t->data + i;
 				Object *ob = td->ob;
@@ -804,11 +794,10 @@
 					autokeyframe_ob_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode);
 				}
 				
-				/* proxy exception */
-				if(ob->proxy)
-					ob->proxy->recalc |= ob->recalc;
-				if(ob->proxy_group)
-					group_tag_recalc(ob->proxy_group->dup_group);
+				/* sets recalc flags fully, instead of flushing existing ones 
+				 * otherwise proxies don't function correctly
+				 */
+				DAG_id_flush_update(&ob->id, OB_RECALC);  
 			}
 		}
 		





More information about the Bf-blender-cvs mailing list