载入中...
搜索中...
未找到
AnimImporter.h
浏览该文件的文档.
1#pragma once
2
3#include <string>
4#include <vector>
5
6struct aiScene;
7struct aiNode;
8
9namespace eve {
10namespace model3d {
11class ModelData;
12}
13} // namespace eve
14
15namespace eve::animation {
16
17class AnimSkeleton;
18class AnimClip;
19
25public:
27 static AnimSkeleton *loadSkeleton(const aiScene *scene);
28
30 static AnimClip *loadClip(const aiScene *scene, const AnimSkeleton *skeleton, int animIndex = 0);
31
34 static AnimClip *loadClipFromModel(const model3d::ModelData *model, const AnimSkeleton *skeleton,
35 int animIndex = 0);
37 static std::string getAnimationNameFromModel(const model3d::ModelData *model, int animIndex);
38
39 static int getAnimationCount(const aiScene *scene);
40 static std::string getAnimationName(const aiScene *scene, int animIndex);
41
46 static std::string exportEva(const AnimSkeleton *skeleton, const AnimClip *clip);
47
49 static void importEva(const std::string &text, AnimSkeleton **skeletonOut, AnimClip **clipOut);
50
52 static void importEvaFile(const std::string &path, AnimSkeleton **skeletonOut,
53 AnimClip **clipOut);
54
55private:
56 static void collectBones(const aiNode *node, int parent, AnimSkeleton *skeleton,
57 std::vector<const aiNode *> &order);
58};
59
60} // namespace eve::animation
glm::mat4 model
int parent
Definition TreeMesh.cpp:175
Keyframed skeletal animation clip (local TRS tracks per bone). Script type: AnimClip.
Definition AnimClip.h:17
Import AnimSkeleton / AnimClip from an Assimp scene (FBX/glTF/etc), or from compact ....
static int getAnimationCount(const aiScene *scene)
static AnimSkeleton * loadSkeletonFromModel(const model3d::ModelData *model)
Convenience: ModelData wrappers (implemented in AnimImporterModel.cpp).
static AnimClip * loadClipFromModel(const model3d::ModelData *model, const AnimSkeleton *skeleton, int animIndex=0)
static std::string getAnimationNameFromModel(const model3d::ModelData *model, int animIndex)
static AnimClip * loadClip(const aiScene *scene, const AnimSkeleton *skeleton, int animIndex=0)
Load clip by index; maps node-name channels onto skeleton bones.
static void importEvaFile(const std::string &path, AnimSkeleton **skeletonOut, AnimClip **clipOut)
Load from .eva file path.
static int getAnimationCountFromModel(const model3d::ModelData *model)
static std::string getAnimationName(const aiScene *scene, int animIndex)
static std::string exportEva(const AnimSkeleton *skeleton, const AnimClip *clip)
Serialize skeleton + clip to a compact text format (no mesh). Used to ship Mixamo-derived test fixtur...
static AnimSkeleton * loadSkeleton(const aiScene *scene)
Build skeleton from the scene node hierarchy (depth-first).
static void importEva(const std::string &text, AnimSkeleton **skeletonOut, AnimClip **clipOut)
Load skeleton+clip from exportEva text (new'd; caller owns).
3D bone hierarchy + bind-pose local TRS for skeletal animation. Independent of ik::Skeleton3D (FABRIK...
CPU-side decoded 3D model (Assimp scene owned via medialoader::ModelScene). Does not upload to GPU — ...
Definition ModelData.h:23
Definition Build.cpp:11