[Bf-blender-cvs] [fdd9990] master: Depsgraph: A bit of experiment with skipping where_is_bone if channels is taged as done

Sergey Sharybin noreply at git.blender.org
Tue May 10 17:31:36 CEST 2016


Commit: fdd999042b930f24118cd0967a70e1ca472f3957
Author: Sergey Sharybin
Date:   Tue May 10 17:30:19 2016 +0200
Branches: master
https://developer.blender.org/rBfdd999042b930f24118cd0967a70e1ca472f3957

Depsgraph: A bit of experiment with skipping where_is_bone if channels is taged as done

This is what old dependency graph was doing and apparently this avoids some updates,
however it's not really clear why those nodes are considering done. Maybe just because
of the way how relations are working. But needs a closer investigation.

===================================================================

M	source/blender/blenkernel/intern/armature_update.c

===================================================================

diff --git a/source/blender/blenkernel/intern/armature_update.c b/source/blender/blenkernel/intern/armature_update.c
index ceda9f0..34d9962 100644
--- a/source/blender/blenkernel/intern/armature_update.c
+++ b/source/blender/blenkernel/intern/armature_update.c
@@ -619,7 +619,9 @@ void BKE_pose_eval_bone(EvaluationContext *UNUSED(eval_ctx),
 			else {
 				/* TODO(sergey): Use time source node for time. */
 				float ctime = BKE_scene_frame_get(scene); /* not accurate... */
-				BKE_pose_where_is_bone(scene, ob, pchan, ctime, 1);
+				if ((pchan->flag & POSE_DONE) == 0) {
+					BKE_pose_where_is_bone(scene, ob, pchan, ctime, 1);
+				}
 			}
 		}
 	}
@@ -636,7 +638,9 @@ void BKE_pose_constraints_evaluate(EvaluationContext *UNUSED(eval_ctx),
 	}
 	else {
 		float ctime = BKE_scene_frame_get(scene); /* not accurate... */
-		BKE_pose_where_is_bone(scene, ob, pchan, ctime, 1);
+		if ((pchan->flag & POSE_DONE) == 0) {
+			BKE_pose_where_is_bone(scene, ob, pchan, ctime, 1);
+		}
 	}
 }




More information about the Bf-blender-cvs mailing list