3#ifndef GDK_GRAPHICS_EXT_ANIMATION_IK_H
4#define GDK_GRAPHICS_EXT_ANIMATION_IK_H
6#include <gdk/graphics/ext/animation/skeleton.h>
12namespace gdk::graphics::animation {
13 [[nodiscard]]
pose with_limb_reaching(
const skeleton &aSkeleton,
const pose &aPose,
14 const std::size_t aUpper,
const vector3_type &aTarget,
const vector3_type &aPoleDirection);
16 [[nodiscard]]
pose with_limb_reaching_in_world(
const skeleton &aSkeleton,
const pose &aPose,
17 const std::size_t aUpper,
const vector3_type &aWorldTarget,
18 const vector3_type &aWorldPoleDirection,
const vector3_type &aCharacterPosition,
19 const quaternion_type &aCharacterRotation);
25 [[nodiscard]]
float range()
const {
return highest - lowest; }
29 const std::size_t aFoot);
31 [[nodiscard]]
pose with_bone_oriented(
const skeleton &aSkeleton,
const pose &aPose,
32 const std::size_t aBone,
const quaternion_type &aWorldRotation);
34 [[nodiscard]]
pose with_bone_oriented_in_world(
const skeleton &aSkeleton,
const pose &aPose,
35 const std::size_t aBone,
const quaternion_type &aWorldRotation,
36 const quaternion_type &aCharacterRotation);
38 [[nodiscard]]
float stance_weight(
const foot_arc &aArc,
const float aFootHeight,
39 const float aBand = 0.25f);
41 [[nodiscard]]
float pelvis_lift(std::span<const matrix4x4_type> aWorld,
42 std::span<const std::size_t> aFeet,
const vector3_type &aCharacterPosition,
43 const quaternion_type &aCharacterRotation,
44 const std::function<
float(
float,
float)> &aGroundHeight);
a looping sequence of keyframed poses
Definition skeleton.h:86
one bone rotation per bone, relative to its parent.
Definition skeleton.h:57
a chain of bones in bind pose.
Definition skeleton.h:16