Calculate current_base_matrix

This commit is contained in:
hodasemi 2018-06-11 20:15:49 +02:00
parent d8d3ebc4b8
commit 593dd3509f

View file

@ -115,6 +115,28 @@ void IKViewer::calculate_kinematic_chain(Bone *base, Bone *endeffector)
current_bone = current_bone->get_parent(); current_bone = current_bone->get_parent();
} }
// calculate base transformation
std::list<std::shared_ptr<Transform>> base_chain;
for (Bone *bone : base_tree)
{
for (int i = bone->dof_count() - 1; i >= 0; i--)
{
base_chain.emplace_front(bone->get_dof(i));
}
Transform *tmp = new StaticTransform(bone->calculate_transform_prev_to_current_without_dofs());
std::shared_ptr<Transform> transform = std::shared_ptr<Transform>(tmp);
base_chain.emplace_front(transform);
}
current_base_matrix.identity();
for (auto &transform : base_chain)
{
current_base_matrix = current_base_matrix * transform->calculate_matrix();
}
// add all transform from endeffector to common ancestor and to reverse base // add all transform from endeffector to common ancestor and to reverse base
// state == 0 means, iterating through endeffector_tree // state == 0 means, iterating through endeffector_tree