[Bf-blender-cvs] [58b1544] depsgraph_refactor: Depsgraph: Need relation between IK solver and object transform
Sergey Sharybin
noreply at git.blender.org
Fri Jan 23 13:57:01 CET 2015
Commit: 58b154419568a4c517ff8def8affac380fb4b22b
Author: Sergey Sharybin
Date: Fri Jan 23 17:55:22 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB58b154419568a4c517ff8def8affac380fb4b22b
Depsgraph: Need relation between IK solver and object transform
IK solver ode needs to know object transform matrix so added relation for that.
Currently the relation is between object transform and pose components, so all
pose eval evaluation init happens nicely. In the future we might want to redirect
this relation to solver operation itself.
===================================================================
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 08799fa..11fa28f 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -1244,15 +1244,18 @@ void DepsgraphRelationBuilder::build_rig(Scene *scene, Object *ob)
* - Animated chain-lengths are a problem...
*/
RootPChanMap root_map;
+ bool have_ik_solver = false;
for (bPoseChannel *pchan = (bPoseChannel *)ob->pose->chanbase.first; pchan; pchan = pchan->next) {
for (bConstraint *con = (bConstraint *)pchan->constraints.first; con; con = con->next) {
switch (con->type) {
case CONSTRAINT_TYPE_KINEMATIC:
build_ik_pose(ob, pchan, con, &root_map);
+ have_ik_solver = true;
break;
case CONSTRAINT_TYPE_SPLINEIK:
build_splineik_pose(ob, pchan, con, &root_map);
+ have_ik_solver = true;
break;
default:
@@ -1261,6 +1264,15 @@ void DepsgraphRelationBuilder::build_rig(Scene *scene, Object *ob)
}
}
+ if (have_ik_solver) {
+ /* TODO(sergey): Once partial updates are possible use relation between
+ * object transform and solver itself in it's build function.
+ */
+ ComponentKey pose_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE);
+ ComponentKey local_transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM);
+ add_relation(local_transform_key, pose_key, DEPSREL_TYPE_TRANSFORM, "Local Transforms");
+ }
+
#if 0
/* links between different bones - parenting relationships */
for (bPoseChannel *pchan = (bPoseChannel *)ob->pose->chanbase.first;
More information about the Bf-blender-cvs
mailing list