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