26 #include <flw/flf/loaders/modelloader/AnimationKey.h> 27 #include <flw/flf/loaders/modelloader/BoneDefault.h> 32 #include <assimp/scene.h> 48 GLint getBoneId(
const std::string& name)
const;
49 void performAnimation(GLfloat timeElapsedInSeconds);
50 void setActiveAnimation(
size_t activeAnimation);
51 void updateBonesBufferRAM();
52 void updateBonesBufferVRAM(GLint uniformLocationBones);
57 BoneAssimp(aiBone* assimpBone);
58 ~BoneAssimp()
override;
61 class NodeAssimp final {
63 NodeAssimp(aiNode* node);
64 virtual ~NodeAssimp();
66 void update(
float time, glm::mat4 parent,
AnimatorAssimp* animator, GLint activeAnimation);
68 static glm::mat4 convert(aiMatrix4x4 matrix);
69 static glm::vec3 convert(aiVector3D vec);
70 static glm::vec4 convert(aiColor4D vec);
71 static glm::quat convert(aiQuaternion vec);
74 std::vector<NodeAssimp*> mChildren;
78 glm::mat4 mTransformation;
83 std::string mAffectedNodeName;
85 std::vector<Key<glm::vec3> > mKeysTranslation;
86 std::vector<Key<glm::quat> > mKeysRotation;
87 std::vector<Key<glm::vec3> > mKeysScaling;
89 Channel(aiNodeAnim* assimpChannel);
92 class Animation final {
94 Animation(aiAnimation* assimpAnimation);
97 float getTicksPerSec();
99 Channel* getChannel(
int i);
100 size_t getHowManyChannels();
106 std::vector<Channel *> mChannels;
111 Channel* findChannel(Animation *animation,
const std::string &nodeName)
const;
112 Animation* getAnimation(GLint i)
const;
113 NodeAssimp* initNode(aiNode* node);
114 glm::fquat lerp(
const glm::fquat &v0,
const glm::fquat &v1,
float alpha)
const;
116 glm::vec3 getCurrentTranslation(
float timeElapsed_s, Channel *channel)
const;
117 glm::quat getCurrentRotation(
float timeElapsed_s, Channel *channel)
const;
118 glm::vec3 getCurrentScale(
float timeElapsed_s, Channel *channel)
const;
120 GLuint getTranslationStep(
float timeElapsed_s, Channel *channel)
const;
121 GLuint getRotationStep(
float timeElapsed_s, Channel *channel)
const;
122 GLuint getScaleStep(
float timeElapsed_s, Channel *channel)
const;
124 float mTimeSinceStartSeconds;
125 NodeAssimp* mRootAnimationNode;
126 glm::mat4 mSceneInverseMatrix;
127 std::vector<pu<BoneDefault>> mBones;
128 std::vector<glm::mat4> mAnimationsBufferData;
129 std::vector<pu<Animation>> mAnimations;
130 GLint mActiveAnimation;
Base for all animation keys.
Definition: BoneDefault.h:34
Manager to handle Bone objects in animation.
Definition: AnimatorAssimp.h:41