diff --git a/libs/gfx/include/psemek/gfx/armature.hpp b/libs/gfx/include/psemek/gfx/armature.hpp index 1261da40..f869d03e 100644 --- a/libs/gfx/include/psemek/gfx/armature.hpp +++ b/libs/gfx/include/psemek/gfx/armature.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include @@ -84,6 +85,18 @@ namespace psemek::gfx return {geom::slerp(m1.rotation, m2.rotation, t), std::exp(geom::lerp(std::log(m1.scale), std::log(m2.scale), t)), geom::lerp(m1.translation, m2.translation, t)}; } + template + geom::vector operator * (bone_transform const & m, geom::vector const & v) + { + return m.translation + m.scale * geom::rotate(m.rotation, v); + } + + template + geom::point operator * (bone_transform const & m, geom::point const & p) + { + return p.zero() + m * (p - p.zero()); + } + template using pose = std::vector>;