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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to