[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30092] trunk/blender/source/blender/ blenkernel/intern/object.c: Fix #22340: sintel appears in seemingly random poses on load.
Brecht Van Lommel
brecht at blender.org
Wed Jul 7 20:47:50 CEST 2010
Revision: 30092
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30092
Author: blendix
Date: 2010-07-07 20:47:49 +0200 (Wed, 07 Jul 2010)
Log Message:
-----------
Fix #22340: sintel appears in seemingly random poses on load.
Pose proxy synchronization happened after drivers were already evaluated,
now moved to start of object_handle_update.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/object.c
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2010-07-07 18:39:08 UTC (rev 30091)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2010-07-07 18:47:49 UTC (rev 30092)
@@ -2479,6 +2479,17 @@
if(ob->pose)
make_pose_channels_hash(ob->pose);
+ if(ob->recalc & OB_RECALC_DATA) {
+ if(ob->type==OB_ARMATURE) {
+ /* this happens for reading old files and to match library armatures
+ with poses we do it ahead of where_is_object to ensure animation
+ is evaluated on the rebuilt pose, otherwise we get incorrect poses
+ on file load */
+ if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
+ armature_rebuild_pose(ob, ob->data);
+ }
+ }
+
/* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers,
which is only in where_is_object now */
// XXX: should this case be OB_RECALC_OB instead?
@@ -2541,11 +2552,6 @@
lattice_calc_modifiers(scene, ob);
}
else if(ob->type==OB_ARMATURE) {
- /* this happens for reading old files and to match library armatures with poses */
- // XXX this won't screw up the pose set already...
- if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
- armature_rebuild_pose(ob, ob->data);
-
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
More information about the Bf-blender-cvs
mailing list