From 3d00ece41d1f7125c0c6196b8a10152d8b01ada3 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Sat, 23 Jun 2018 11:31:31 +0200 Subject: [PATCH] Merge solution of task 3 --- 04_Skinning.pdf | Bin 0 -> 148686 bytes CGII/src/AtomicTransform.cpp | 102 ++++------ CGII/src/IKViewer.cpp | 369 +++++++++++++---------------------- CGII/src/IKViewer.h | 37 ++-- CGII/src/main.cpp | 10 +- 5 files changed, 207 insertions(+), 311 deletions(-) create mode 100644 04_Skinning.pdf diff --git a/04_Skinning.pdf b/04_Skinning.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2cee002e78e652674bebe1704154496fa7aae39 GIT binary patch literal 148686 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 GXZt_VC%qv6 literal 0 HcmV?d00001 diff --git a/CGII/src/AtomicTransform.cpp b/CGII/src/AtomicTransform.cpp index c4e7e8a..3ac6740 100644 --- a/CGII/src/AtomicTransform.cpp +++ b/CGII/src/AtomicTransform.cpp @@ -1,5 +1,5 @@ -// This source code is property of the Computer Graphics and Visualization -// chair of the TU Dresden. Do not distribute! +// This source code is property of the Computer Graphics and Visualization +// chair of the TU Dresden. Do not distribute! // Copyright (C) CGV TU Dresden - All Rights Reserved // #include "AtomicTransform.h" @@ -16,14 +16,14 @@ void AtomicTransform::set_limits(double lower, double upper) this->value = 0; } -void AtomicTransform::set_value(const double &value, void *) +void AtomicTransform::set_value(const double& value, void*) { this->value = value; changed_signal(value); } std::string AtomicTransform::get_name() const { return title; } -const double AtomicTransform::get_value(void *) const { return value; } +const double AtomicTransform::get_value(void*) const { return value; } const double AtomicTransform::get_lower_limit() const { return lower_limit; } const double AtomicTransform::get_upper_limit() const { return upper_limit; } @@ -37,7 +37,7 @@ AtomicRotationTransform::AtomicRotationTransform(Vec3 axis) Mat4 AtomicRotationTransform::calculate_matrix() { - return rotate(axis, (float)value); + return rotate(axis, (float)value); } void AtomicRotationTransform::drawIndicator(float size) @@ -80,76 +80,58 @@ void AtomicRotationTransform::drawActualIndicator(float size) glEnd(); } -template -T clamp(T &v, T &c1, T &c2) +void AtomicRotationTransform::optimize_value(const Vec3& local_vector, const Vec3& target, bool inverse) { - if (v < c1) - return c1; - - if (v > c2) - return c2; - - return v; -} - -float angle(const Vec3 &v1, const Vec3 &v2) -{ - return std::acos(dot(v1, v2) / (length(v1) * length(v2))) * 180.0f / PI; -} - -float optimize_angle(const Vec3 &v1, const Vec3 &v2) -{ - Vec3 first_cross = cross(v1, v2); - Vec3 second_cross = cross(v1, first_cross); - - float plane_angle = angle(second_cross, v2); - - if (plane_angle >= 90.0f) - { - return -angle(v1, v2); - } - else - { - return angle(v1, v2); - } -} - -void AtomicRotationTransform::optimize_value(const Vec3 &local_vector, const Vec3 &target, bool inverse) -{ - /*Task: Implement parameter optimization*/ - - // optimize this that: target = this->calculate_matrix() * local_vector; - - double result = 0.0; - - Vec3 lp = local_vector - (dot(local_vector, axis) * axis); - Vec3 tp = target - (dot(target, axis) * axis); - - result = (double)angle(lp, tp); + //project vectors in the tangent plane of the axis and normalize + Vec3 local_in_tangent_plane = local_vector - cgv::math::dot(local_vector, axis) * axis; + auto length = local_in_tangent_plane.length(); + if (length < 0.01) + return; //the local vector is mostly parallel to the axis; there is not much we can do + local_in_tangent_plane.normalize(); + Vec3 target_in_tangent_plane = target - cgv::math::dot(target, axis) * axis; + length = target_in_tangent_plane.length(); + if (length < 0.01) + return; //the target vector is mostly parallel to the axis; there is not much we can do + target_in_tangent_plane.normalize(); + + double optimal_value = atan2( + cgv::math::dot(axis, cgv::math::cross(local_in_tangent_plane, target_in_tangent_plane)), + cgv::math::dot(local_in_tangent_plane, target_in_tangent_plane)) * 180.0f / 3.1415926f; if (inverse) - result = -result; - - result = clamp(result, lower_limit, upper_limit); - - set_value(result); + optimal_value *= -1; + if (optimal_value < lower_limit || optimal_value > upper_limit) + { + //check which limit is closer + while (abs(upper_limit - optimal_value) > 180.0f) + optimal_value += 360.0f * (optimal_value < upper_limit ? 1.0f : -1.0f); + double distance_to_upper = abs(upper_limit - optimal_value); + while (abs(lower_limit - optimal_value) > 180.0f) + optimal_value += 360.0f * (optimal_value < lower_limit ? 1.0f : -1.0f); + double distance_to_lower = abs(lower_limit - optimal_value); + if (distance_to_lower < distance_to_upper) + optimal_value = lower_limit; + else + optimal_value = upper_limit; + } + set_value(optimal_value); } -AtomicTranslationTransform::AtomicTranslationTransform(int dim) - : dim(dim) +AtomicTranslationTransform::AtomicTranslationTransform(int dim) + : dim(dim) { lower_limit = -10; upper_limit = 10; } Mat4 AtomicTranslationTransform::calculate_matrix() -{ +{ Mat4 result; result.identity(); - result(dim, 3) = (float)value; + result(dim, 3) = (float)value; return result; } -void AtomicTranslationTransform::optimize_value(const Vec3 &local_vector, const Vec3 &target, bool inverse) +void AtomicTranslationTransform::optimize_value(const Vec3& local_vector, const Vec3& target, bool inverse) { } \ No newline at end of file diff --git a/CGII/src/IKViewer.cpp b/CGII/src/IKViewer.cpp index 4141d2d..811e170 100644 --- a/CGII/src/IKViewer.cpp +++ b/CGII/src/IKViewer.cpp @@ -1,5 +1,5 @@ -// This source code is property of the Computer Graphics and Visualization -// chair of the TU Dresden. Do not distribute! +// This source code is property of the Computer Graphics and Visualization +// chair of the TU Dresden. Do not distribute! // Copyright (C) CGV TU Dresden - All Rights Reserved // #include "IKViewer.h" @@ -12,199 +12,120 @@ #include #include -Vec3 into_vec3(const Vec4 &v) -{ - return Vec3(v.x(), v.y(), v.z()); -} - -IKViewer::IKViewer(DataStore *data) +IKViewer::IKViewer(DataStore* data) : node("IK Viewer"), data(data), modifying(false), target_position(0, 0, 0, 1), max_iterations(20) { connect(data->endeffector_changed, this, &IKViewer::endeffector_changed); connect(data->base_changed, this, &IKViewer::base_changed); } -void IKViewer::endeffector_changed(Bone *b) +void IKViewer::endeffector_changed(Bone* b) { calculate_kinematic_chain(data->get_base(), data->get_endeffector()); post_redraw(); } -void IKViewer::base_changed(Bone *b) +void IKViewer::base_changed(Bone* b) { calculate_kinematic_chain(data->get_base(), data->get_endeffector()); post_redraw(); } -int IKViewer::find_element(std::vector &v, Bone *element) +void IKViewer::calculate_kinematic_chain(Bone* base, Bone* endeffector) { - for (int i = 0; i < v.size(); i++) - { - if (v[i] == element) - { - return i; - } - } - - return -1; -} - -void IKViewer::calculate_kinematic_chain(Bone *base, Bone *endeffector) -{ - /*Task 3.1: Calculate kinematic chain*/ - kinematic_chain.clear(); - - this->base = base; - this->endeffector = endeffector; - - if (!base) + if (!base || !endeffector) return; - - // gather all bones from base to root - std::vector base_tree; - - Bone *current_bone = base; - - while (1) + Bone *b; + Mat4 transform_root_to_base; + transform_root_to_base.identity(); + std::unordered_set base_path_to_root; + if (base) { - base_tree.emplace_back(current_bone); - - // break if we reached base bone - if (current_bone->get_parent() == nullptr) - break; - - // set next bone in hierarchy - current_bone = current_bone->get_parent(); - } - - // calculate base transformation - std::list> base_chain; - - for (Bone *bone : base_tree) - { - for (int i = bone->dof_count() - 1; i >= 0; i--) + //traverse from base to root + b = base; + while (b) { - base_chain.emplace_front(bone->get_dof(i)); + transform_root_to_base = b->get_translation_transform_current_joint_to_next() * transform_root_to_base; + for (int i = b->dof_count() - 1; i >= 0; --i) + transform_root_to_base = b->get_dof(i)->calculate_matrix() * transform_root_to_base; + transform_root_to_base = b->get_orientation_transform_prev_joint_to_current() * transform_root_to_base; + base_path_to_root.insert(b); + b = b->get_parent(); } - - Transform *tmp = new StaticTransform(bone->calculate_transform_prev_to_current_without_dofs()); - std::shared_ptr transform = std::shared_ptr(tmp); - base_chain.emplace_front(transform); + current_base_matrix = data->get_skeleton()->get_origin() * transform_root_to_base; } - - current_base_matrix.identity(); - - for (auto &transform : base_chain) - { - current_base_matrix = current_base_matrix * transform->calculate_matrix(); - } - - current_base_matrix = current_base_matrix * base->get_translation_transform_current_joint_to_next(); - - if (!endeffector) + if (!base || !endeffector) return; - - // get list of bones in order of endeffector to base - std::vector endeffector_tree; - - // gather all bones from endeffector to root - current_bone = endeffector; - - while (1) - { - endeffector_tree.emplace_back(current_bone); - - // break if we reached base bone - if (current_bone->get_parent() == nullptr) - break; - - // set next bone in hierarchy - current_bone = current_bone->get_parent(); - } - - // add all transform from endeffector to common ancestor and to reverse base - - // state == 0 means, iterating through endeffector_tree - // state == 1 means, reverse iterating through base_tree - int state = 0; - - int endeffector_index = 0; - int base_index = 0; - - //TODO: check if common ancestor is visited twice - - std::shared_ptr static_trans = std::shared_ptr(new StaticTransform(endeffector->get_translation_transform_current_joint_to_next())); - kinematic_chain.emplace_front(static_trans); - - while (1) - { - if (state == 0) - { - if (endeffector_index >= endeffector_tree.size()) - break; - - Bone *bone = endeffector_tree[endeffector_index]; - - for (int i = bone->dof_count() - 1; i >= 0; i--) - { - kinematic_chain.emplace_front(bone->get_dof(i)); - } - - Transform *tmp = new StaticTransform(bone->calculate_transform_prev_to_current_without_dofs()); - std::shared_ptr transform = std::shared_ptr(tmp); - kinematic_chain.emplace_front(transform); - - int index = find_element(base_tree, bone); - if (index != -1) - { - base_index = index; - state = 1; - continue; - } - - endeffector_index++; - } - else if (state == 1) - { - if (base_index < 0) - break; - - Bone *bone = base_tree[base_index]; - - std::shared_ptr inverse_static = std::shared_ptr(new StaticTransform(inv(bone->calculate_transform_prev_to_current_without_dofs()))); - kinematic_chain.emplace_front(inverse_static); - - for (int i = 0; i < bone->dof_count(); i++) - { - Transform *tmp = new InverseTransform(bone->get_dof(i)); - std::shared_ptr inverse_dof = std::shared_ptr(tmp); - kinematic_chain.emplace_front(inverse_dof); - } - - base_index--; - } - else - { - // can never happen, but when it does, we will know - abort(); - } - } - - std::shared_ptr inverse_static = std::shared_ptr(new StaticTransform(inv(base->get_translation_transform_current_joint_to_next()))); - kinematic_chain.emplace_front(inverse_static); - + Mat4 t; current_endeffector_matrix.identity(); - kinematic_vector.clear(); - - for (auto &transform : kinematic_chain) + kinematic_chain.clear(); + common_ancestor = nullptr; + //traverse from endeffector to lowest common ancestor + b = endeffector; + while (b) { - kinematic_vector.emplace_back(transform); - current_endeffector_matrix = current_endeffector_matrix * transform->calculate_matrix(); + if (base_path_to_root.find(b) != base_path_to_root.end()) + { + common_ancestor = b; + break; + } + t = b->get_translation_transform_current_joint_to_next(); + kinematic_chain.push_front(std::make_shared(t)); + current_endeffector_matrix = t * current_endeffector_matrix; + for (int current_dof_id = b->dof_count() - 1; current_dof_id >= 0; --current_dof_id) + { + auto dof = b->get_dof(current_dof_id); + t = dof->calculate_matrix(); + kinematic_chain.push_front(dof); + current_endeffector_matrix = t * current_endeffector_matrix; + } + t = b->get_orientation_transform_prev_joint_to_current(); + kinematic_chain.push_front(std::make_shared(t)); + current_endeffector_matrix = t * current_endeffector_matrix; + b = b->get_parent(); } - - target_position = current_base_matrix * current_endeffector_matrix * Vec4(0.0f, 0.0f, 0.0f, 1.0f); + //traverse from base to lowest common ancestor + std::deque> chain_base_to_ancestor; + Mat4 matrix_base_to_ancestor; matrix_base_to_ancestor.identity(); + b = base; + while (b) + { + if (b == common_ancestor) + break; + t = cgv::math::inv(b->get_translation_transform_current_joint_to_next()); + chain_base_to_ancestor.push_back(std::make_shared(t)); + matrix_base_to_ancestor = matrix_base_to_ancestor * t; + for (int current_dof_id = b->dof_count() - 1; current_dof_id >= 0; --current_dof_id) + { + auto dof = b->get_dof(current_dof_id); + t = cgv::math::inv(dof->calculate_matrix()); + chain_base_to_ancestor.push_back(std::make_shared(dof)); + matrix_base_to_ancestor = matrix_base_to_ancestor * t; + } + t = cgv::math::inv(b->get_orientation_transform_prev_joint_to_current()); + chain_base_to_ancestor.push_back(std::make_shared(t)); + matrix_base_to_ancestor = matrix_base_to_ancestor * t; + b = b->get_parent(); + } + current_endeffector_matrix = matrix_base_to_ancestor * current_endeffector_matrix; + kinematic_chain.insert(kinematic_chain.begin(), chain_base_to_ancestor.begin(), chain_base_to_ancestor.end()); + //traverse from ancestor to root + current_ancestor_matrix.identity(); + b = common_ancestor; + while (b) + { + current_ancestor_matrix = b->get_translation_transform_current_joint_to_next() * current_ancestor_matrix; + for (int i = b->dof_count() - 1; i >= 0; --i) + current_ancestor_matrix = b->get_dof(i)->calculate_matrix() * current_ancestor_matrix; + current_ancestor_matrix = b->get_orientation_transform_prev_joint_to_current() * current_ancestor_matrix; + b = b->get_parent(); + } + t = data->get_skeleton()->get_origin() * transform_root_to_base * current_endeffector_matrix; + target_position.x() = t(0, 3); + target_position.y() = t(1, 3); + target_position.z() = t(2, 3); } void IKViewer::optimize() @@ -213,56 +134,51 @@ void IKViewer::optimize() data->dof_changed_by_ik = true; auto skeleton_size = (data->get_skeleton()->getMax() - data->get_skeleton()->getMin()); - float distance_threshold = 0.0001f * std::max({skeleton_size.x(), skeleton_size.y(), skeleton_size.z()}); + float distance_threshold = 0.0001f * std::max({ skeleton_size.x(), skeleton_size.y(), skeleton_size.z() }); - /*Task 3.3: Implement CCD */ - for (int i = 0; i < max_iterations; i++) + //split the current matrix in: + // before_dof -> dof -> after_dof + + for (unsigned int iteration = 0; iteration < max_iterations; ++iteration) { - int kc_size = kinematic_vector.size(); - - // reverse iterate through kinematic chain - for (int j = kc_size - 1; j >= 0; j--) + Mat4 after_dof; + after_dof.identity(); + Mat4 before_dof = current_endeffector_matrix; + Vec4 target_base_local = cgv::math::inv(current_base_matrix) * target_position; + //start from the last bone + for (auto it = kinematic_chain.rbegin(); it != kinematic_chain.rend(); ++it) { - Mat4 before_dof = current_base_matrix; - - for (int k = 0; k < j; k++) - { - before_dof = before_dof * kinematic_vector[k]->calculate_matrix(); - } - - Mat4 after_dof; - after_dof.identity(); - - int after_dof_index = j + 1; - - for (int k = j + 1; k < kc_size; k++) - { - after_dof = after_dof * kinematic_vector[k]->calculate_matrix(); - } - - // now we got 3 matrices - // (1) before dof: base_matrix * kinematic_vector[0...j-1] - // (2) dof: kinematic_vector[j] - // (3) after_dof: kinematic_vector[j+1...kc_size-1] - - auto v_local = after_dof * Vec4(0.0f, 0.0f, 0.0f, 1.0f); - auto v_target = inv(before_dof) * target_position; - - kinematic_vector[j]->optimize_value(into_vec3(v_local), into_vec3(v_target)); + auto t = *it; + before_dof = before_dof * inv(t->calculate_matrix()); + Vec4 target_dof_local = inv(before_dof) * target_base_local; + t->optimize_value(Vec3(after_dof(0, 3), after_dof(1, 3), after_dof(2, 3)), Vec3(target_dof_local)); + after_dof = t->calculate_matrix() * after_dof; } - - current_endeffector_matrix.identity(); - - for (auto &transform : kinematic_chain) - { - current_endeffector_matrix = current_endeffector_matrix * transform->calculate_matrix(); - } - - Vec4 current_endeffector_position = current_endeffector_matrix * endeffector->get_bone_local_tip_position(); - - if (distance_threshold >= length(current_endeffector_position - target_position)) + current_endeffector_matrix = before_dof * after_dof; + float error = Vec3(current_endeffector_matrix(0, 3) - target_base_local.x(), + current_endeffector_matrix(1, 3) - target_base_local.y(), + current_endeffector_matrix(2, 3) - target_base_local.z()).length(); + if (error <= distance_threshold) break; } + //update the origin + //traverse from base to ancestor + Mat4 transform_ancestor_to_base; + transform_ancestor_to_base.identity(); + Bone* b = data->get_base(); + while (b) + { + if (b == common_ancestor) + break; + transform_ancestor_to_base = b->get_translation_transform_current_joint_to_next() * transform_ancestor_to_base; + for (int i = b->dof_count() - 1; i >= 0; --i) + transform_ancestor_to_base = b->get_dof(i)->calculate_matrix() * transform_ancestor_to_base; + transform_ancestor_to_base = b->get_orientation_transform_prev_joint_to_current() * transform_ancestor_to_base; + b = b->get_parent(); + } + Mat4 origin_to_base = current_ancestor_matrix * transform_ancestor_to_base; + Mat4 global_to_origin = current_base_matrix * cgv::math::inv(origin_to_base); + data->get_skeleton()->set_origin(global_to_origin); //used for correct GUI behavior data->dof_changed_by_ik = false; @@ -294,7 +210,7 @@ void IKViewer::set_target_position_2d(int x, int y) int width = ctx->get_width(); int height = ctx->get_height(); - float proj_position[4] = {(2.0f * x) / width - 1.0f, (-2.0f * y) / height + 1.0f, z, 1.0f}; + float proj_position[4] = { (2.0f * x) / width - 1.0f, (-2.0f * y) / height + 1.0f, z, 1.0f }; auto unprojected = inv_mvp * cgv::math::vec(4, proj_position); unprojected *= 1.0f / unprojected.w(); @@ -308,21 +224,19 @@ void IKViewer::set_target_position_2d(int x, int y) post_redraw(); } -bool IKViewer::handle(event &e) -{ - if (e.get_kind() == EID_MOUSE) - { - cgv::gui::mouse_event me = (cgv::gui::mouse_event &)e; - switch (me.get_action()) - { +bool IKViewer::handle(event& e) +{ + if (e.get_kind() == EID_MOUSE) { + cgv::gui::mouse_event me = (cgv::gui::mouse_event&) e; + + switch (me.get_action()) { case MA_PRESS: - if (me.get_button() == MB_LEFT_BUTTON && me.get_modifiers() == EM_CTRL) - { + if (me.get_button() == MB_LEFT_BUTTON && me.get_modifiers() == EM_CTRL) { modifying = true; set_target_position_2d(me.get_x(), me.get_y()); return true; - } + } break; case MA_RELEASE: modifying = false; @@ -333,25 +247,24 @@ bool IKViewer::handle(event &e) set_target_position_2d(me.get_x(), me.get_y()); return true; } - break; - default: - break; + break; + default: break; } } return false; } -void IKViewer::stream_help(std::ostream &os) +void IKViewer::stream_help(std::ostream& os) { } -void IKViewer::draw(cgv::render::context &ctx) +void IKViewer::draw(cgv::render::context& ctx) { if (!data->get_skeleton()) return; auto skeleton_size = (data->get_skeleton()->getMax() - data->get_skeleton()->getMin()); - float scale = 0.2f * std::max({skeleton_size.x(), skeleton_size.y(), skeleton_size.z()}); + float scale = 0.2f * std::max({ skeleton_size.x(), skeleton_size.y(), skeleton_size.z() }); glBegin(GL_LINES); diff --git a/CGII/src/IKViewer.h b/CGII/src/IKViewer.h index 3b2b699..4afd5c5 100644 --- a/CGII/src/IKViewer.h +++ b/CGII/src/IKViewer.h @@ -1,5 +1,5 @@ -// This source code is property of the Computer Graphics and Visualization -// chair of the TU Dresden. Do not distribute! +// This source code is property of the Computer Graphics and Visualization +// chair of the TU Dresden. Do not distribute! // Copyright (C) CGV TU Dresden - All Rights Reserved // #pragma once @@ -25,42 +25,41 @@ using namespace cgv::utils; class IKViewer : public node, public drawable, public provider, public event_handler { - private: - DataStore *data; - +private: + DataStore* data; + void set_target_position_2d(int x, int y); - void endeffector_changed(Bone *); - void base_changed(Bone *); + void endeffector_changed(Bone*); + void base_changed(Bone*); - int find_element(std::vector &v, Bone *element); - void calculate_kinematic_chain(Bone *base, Bone *endeffector); + void calculate_kinematic_chain(Bone* base, Bone* endeffector); - bool modifying; //Specifies if the user is currently modifying the IK target position + bool modifying; //Specifies if the user is currently modifying the IK target position Vec4 target_position; Mat4 current_endeffector_matrix; //transform from base to endeffector - Mat4 current_base_matrix; //transform from global origin to base + Mat4 current_base_matrix; //transform from global origin to base - Bone *base; - Bone *endeffector; + Bone* common_ancestor; //lowest common ancestor of base and endeffector + Mat4 current_ancestor_matrix; //transform from root to common_ancestor unsigned int max_iterations; std::list> kinematic_chain; - std::vector> kinematic_vector; void optimize(); - public: +public: // The constructor of this class - IKViewer(DataStore *); + IKViewer(DataStore*); - bool handle(cgv::gui::event &e); - void stream_help(std::ostream &os); + bool handle(cgv::gui::event& e); + void stream_help(std::ostream& os); // Create the gui elements void create_gui(); // Draw the scene - void draw(context &c); + void draw(context& c); }; + diff --git a/CGII/src/main.cpp b/CGII/src/main.cpp index e6e8b06..166ba68 100644 --- a/CGII/src/main.cpp +++ b/CGII/src/main.cpp @@ -1,5 +1,5 @@ -// This source code is property of the Computer Graphics and Visualization -// chair of the TU Dresden. Do not distribute! +// This source code is property of the Computer Graphics and Visualization +// chair of the TU Dresden. Do not distribute! // Copyright (C) CGV TU Dresden - All Rights Reserved // // The main file of the plugin. It defines a global register variable @@ -16,10 +16,12 @@ using namespace cgv::base; struct Initializer { - DataStore *data; + DataStore* data; Initializer() - { + { + + data = new DataStore(); register_object(base_ptr(new SkeletonViewer(data)), "");