[Bf-blender-cvs] [22489db] depsgraph_refactor: Depsgraph: Fix wrong dependency from the bone target in IK solver

Sergey Sharybin noreply at git.blender.org
Thu Nov 20 17:08:06 CET 2014


Commit: 22489db6239a0c38629d29c89aa4c9d2fa5a79af
Author: Sergey Sharybin
Date:   Thu Nov 20 17:08:20 2014 +0100
Branches: depsgraph_refactor
https://developer.blender.org/rB22489db6239a0c38629d29c89aa4c9d2fa5a79af

Depsgraph: Fix wrong dependency from the bone target in IK solver

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

M	source/blender/depsgraph/intern/depsgraph_build_relations.cpp

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 6a4f73b..8b9be6b 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -761,7 +761,7 @@ void DepsgraphRelationBuilder::build_ik_pose(Object *ob, bPoseChannel *pchan, bC
 	OperationKey solver_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE, rootchan->name, deg_op_name_ik_solver);
 	add_relation(transforms_key, solver_key, DEPSREL_TYPE_TRANSFORM, "IK Solver Owner");
 
-	if (data->tar != ob) {
+	if (data->tar != NULL) {
 		/* TODO(sergey): For until we'll store partial matricies in the depsgraph,
 		 * we create dependency bewteen target object and pose eval component.
 		 *
@@ -769,9 +769,15 @@ void DepsgraphRelationBuilder::build_ik_pose(Object *ob, bPoseChannel *pchan, bC
 		 * need of intermediate matricies. This is an overkill, but good enough for
 		 * testing IK solver.
 		 */
-		ComponentKey target_key(&data->tar->id, DEPSNODE_TYPE_TRANSFORM);
 		ComponentKey pose_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE);
-		add_relation(target_key, pose_key, DEPSREL_TYPE_TRANSFORM, con->name);
+		if ((data->tar->type == OB_ARMATURE) && (data->subtarget[0])) {
+			ComponentKey target_key(&data->tar->id, DEPSNODE_TYPE_BONE, data->subtarget);
+			add_relation(target_key, pose_key, DEPSREL_TYPE_TRANSFORM, con->name);
+		}
+		else {
+			ComponentKey target_key(&data->tar->id, DEPSNODE_TYPE_TRANSFORM);
+			add_relation(target_key, pose_key, DEPSREL_TYPE_TRANSFORM, con->name);
+		}
 	}
 
 	bPoseChannel *parchan = pchan;




More information about the Bf-blender-cvs mailing list