Radium Engine  1.5.20
Loading...
Searching...
No Matches
PoseOperation.hpp
1#pragma once
2
3#include <Core/Animation/Pose.hpp>
4#include <Core/Types.hpp>
5
6namespace Ra {
7namespace Core {
8namespace Animation {
9
10/*
11 * Return true if the two poses are compatibile with each other.
12 * A pose is compatible with another if the size of the two poses are equal.
13 *
14 * Possible FUTURE WORKS:
15 * Two poses are compatible if their size is equal and if their transforms
16 * are within the constraints of each others.
17 */
18RA_CORE_API bool compatible( const Pose& p0, const Pose& p1 );
19
20/*
21 * Given a model pose and a compatible rest pose, return the relative pose.
22 */
23RA_CORE_API Pose relativePose( const Pose& modelPose, const RestPose& restPose );
24
25/*
26 * Return the pose resulting in applying the i-th transform to the i-th pose transform.
27 *
28 * The operation is equal to:
29 * pose[i] = transform[i] * pose[i];
30 */
31RA_CORE_API Pose applyTransformation( const Pose& pose,
32 const AlignedStdVector<Transform>& transform );
33
34/*
35 * Return the pose resulting in applying the transform to the pose transforms.
36 *
37 * The operation is equal to:
38 * pose[i] = transform * pose[i];
39 */
40RA_CORE_API Pose applyTransformation( const Pose& pose, const Transform& transform );
41
42RA_CORE_API bool areEqual( const Pose& p0, const Pose& p1 );
43
44RA_CORE_API Pose interpolatePoses( const Pose& a, const Pose& b, const Scalar t );
45
46} // namespace Animation
47} // namespace Core
48} // namespace Ra
std::vector< T, Eigen::aligned_allocator< T > > AlignedStdVector
hepler function to manage enum as underlying types in VariableSet
Definition Cage.cpp:3