40 m_inverse_absolute_transforms.begin() + first_index,
41 m_inverse_absolute_transforms.begin() + (first_index + bone_count),
42 [&](
auto& inverse_absolute_transform)
44 bone_index_type bone_index = static_cast<bone_index_type>(&inverse_absolute_transform - m_inverse_absolute_transforms.data());
45 inverse_absolute_transform = math::inverse(m_absolute_transforms[bone_index]);
56 if (bone_count != m_inverse_absolute_transforms.size())
60 m_inverse_absolute_transforms.resize(bone_count);
std::uint16_t bone_index_type
Bone index type.
Base class for skeleton poses.
void update()
Updates the pose after one or more relative transforms have been changed.
const skeleton * m_skeleton
Skeleton with which the pose is associated.
std::vector< bone_transform_type > m_relative_transforms
Relative ransforms for each bone in a skeleton.
std::vector< bone_transform_type > m_absolute_transforms
Absolute transforms for each bone in a skeleton.
void resize()
Updates the number of bones in the rest pose if the skeleton has been modified.
void update()
Updates the pose after one or more relative transforms have been changed.
rest_pose() noexcept=default
Constructs an empty rest pose.
Skeletal animation skeleton.
std::size_t get_bone_count() const noexcept
Returns the number of bones in the skeleton.
T identity(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2)
Returns the percent identity between two proteins.