载入中...
搜索中...
未找到
Animation.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Module.h"
4#include "animation/Tween.h"
5
6#include <string>
7#include <vector>
8
9namespace eve::model3d {
10class ModelData;
11}
12
13namespace eve::animation {
14
15class AnimSkeleton;
16class AnimClip;
17class AnimPose;
18class AnimPlayer;
19class AnimStateMachine;
20class MotionDatabase;
21class MotionMatcher;
22class ControlAnim;
23class ControlPose;
24class AnimSkin;
25class AnimLattice;
26class AnimTrail;
27class SpriteSheet;
28class SpriteClip;
29class SpriteAnim;
30class SpineAtlas;
31class SpineSkeletonData;
32class SpineSkeleton;
33class SpineAnim;
34
53class Animation : public Module {
54public:
56 Animation() = default;
57 ~Animation() override;
58
60 Tween *newTween(float duration = 1.f);
61
64 SpriteClip *newSpriteClip(const std::string &name = "");
66
72
74 SpineAtlas *newSpineAtlasFromFile(const std::string &path);
75 SpineAtlas *newSpineAtlasFromText(const std::string &text);
76 SpineSkeletonData *newSpineSkeletonDataFromFile(const std::string &path);
77 SpineSkeletonData *newSpineSkeletonDataFromJson(const std::string &json);
78
81 AnimClip *newClip(const std::string &name = "");
82 AnimPose *newPose(int boneCount = 0);
87
92 ControlAnim *newControlAnim(float frequencyHz = 3.f, float dampingZeta = 1.f,
93 float response = 1.f);
95
102 int animIndex = 0);
103 AnimSkeleton *newSkeletonFromEvaFile(const std::string &path);
104 AnimClip *newClipFromEvaFile(const std::string &path);
105
111 AnimSkeleton *skeleton);
112
119 AnimLattice *newLattice(int divX = 2, int divY = 2, int divZ = 2);
120
123 int divX = 2, int divY = 2, int divZ = 2);
124
129 AnimTrail *newTrail(int capacity = 64);
130
132 void update(float dt);
133
134 int getTweenCount() const { return static_cast<int>(tweens_.size()); }
135 int getSpriteAnimCount() const { return static_cast<int>(spriteAnims_.size()); }
136 int getSpineAnimCount() const { return static_cast<int>(spineAnims_.size()); }
137 int getActiveCount() const;
138
140 void clearFinished();
142 void clearAll();
143
144private:
145 friend class Tween;
146 friend class SpriteAnim;
147 friend class SpineAnim;
148
149 void registerTween(Tween *t);
150 void unregisterTween(Tween *t);
151 void registerSpriteAnim(SpriteAnim *a);
152 void unregisterSpriteAnim(SpriteAnim *a);
153 void registerSpineAnim(SpineAnim *a);
154 void unregisterSpineAnim(SpineAnim *a);
155
156 std::vector<Tween *> tweens_;
157 std::vector<SpriteAnim *> spriteAnims_;
158 std::vector<SpineAnim *> spineAnims_;
159};
160
161} // namespace eve::animation
uint32_t a
glm::mat4 model
const char * name
Definition RockMesh.cpp:21
Keyframed skeletal animation clip (local TRS tracks per bone). Script type: AnimClip.
Definition AnimClip.h:17
CPU 3D lattice scale-deformer (晶格缩放变形).
Definition AnimLattice.h:41
Single-clip (or cross-fading) 3D animation player. Script type: AnimPlayer.
Definition AnimPlayer.h:14
Evaluated local (and optional world) pose for an AnimSkeleton. Script type: AnimPose.
Definition AnimPose.h:15
3D bone hierarchy + bind-pose local TRS for skeletal animation. Independent of ik::Skeleton3D (FABRIK...
CPU linear-blend skinning binding for one mesh against an AnimSkeleton.
Definition AnimSkin.h:25
Clip-driven animation state machine with float/bool/trigger parameters and cross-fade transitions....
Motion trail / afterimage recorder + 2D trajectory drawer.
Definition AnimTrail.h:31
Animation module — tween factory + 2D sprite-sheet / Spine + 3D skeletal playback (player / state mac...
Definition Animation.h:53
Tween * newTween(float duration=1.f)
Create a tween (duration in seconds). Returned pointer is owned by script GC.
Definition Animation.cpp:82
AnimPose * newPose(int boneCount=0)
AnimLattice * newLattice(int divX=2, int divY=2, int divZ=2)
3D lattice scale-deformer (晶格缩放变形). divX/divY/divZ are the control-point divisions (each >= 2)....
AnimSkeleton * newSkeletonFromModel(eve::model3d::ModelData *model)
Import skeleton/clip from Assimp-backed ModelData, or from compact .eva fixtures (see AnimImporter).
AnimClip * newClipFromModel(eve::model3d::ModelData *model, AnimSkeleton *skeleton, int animIndex=0)
SpineAtlas * newSpineAtlasFromFile(const std::string &path)
Load helpers (allocate + parse; false → empty object still returned? prefer nullable).
void update(float dt)
Advance all registered tweens, sprite anims, and spine anims.
AnimTrail * newTrail(int capacity=64)
Motion trail / afterimage (script GC owns returned object). capacity: max retained samples (>= 2).
SpineSkeleton * newSpineSkeleton(SpineSkeletonData *data)
SpriteClip * newSpriteClip(const std::string &name="")
Definition Animation.cpp:90
int getSpriteAnimCount() const
Definition Animation.h:135
AnimSkeleton * newSkeleton()
3D skeletal animation factories (script GC owns returned objects).
ControlAnim * newControlAnim(float frequencyHz=3.f, float dampingZeta=1.f, float response=1.f)
Control-theory procedural animation (second-order / spring / PD). frequencyHz: natural frequency f (H...
void clearAll()
Detach all tweens from the registry (does not delete Tween objects).
AnimSkin * newSkinFromModel(eve::model3d::ModelData *model, int meshIndex, AnimSkeleton *skeleton)
CPU linear-blend skin binding for a skinned mesh on ModelData. meshIndex selects the Assimp mesh; bon...
AnimClip * newClip(const std::string &name="")
SpineAtlas * newSpineAtlas()
Spine (region attachment subset) factories.
Definition Animation.cpp:98
MotionDatabase * newMotionDatabase(AnimSkeleton *skeleton)
SpineSkeletonData * newSpineSkeletonDataFromJson(const std::string &json)
AnimPlayer * newPlayer(AnimSkeleton *skeleton)
AnimClip * newClipFromEvaFile(const std::string &path)
AnimStateMachine * newStateMachine(AnimSkeleton *skeleton)
SpriteAnim * newSpriteAnim()
Definition Animation.cpp:92
SpriteSheet * newSpriteSheet()
2D sprite-sheet animation factories (script GC owns returned objects).
Definition Animation.cpp:88
AnimLattice * newLatticeFromModel(eve::model3d::ModelData *model, int meshIndex, int divX=2, int divY=2, int divZ=2)
newLattice bound to meshIndex of model (Assimp vertices).
int getSpineAnimCount() const
Definition Animation.h:136
SpineSkeletonData * newSpineSkeletonData()
MotionMatcher * newMotionMatcher(AnimSkeleton *skeleton, MotionDatabase *database)
void clearFinished()
Drop finished/stopped entries from the registry (does not delete Tween objects).
SpineAnim * newSpineAnim(SpineSkeleton *skeleton)
AnimSkeleton * newSkeletonFromEvaFile(const std::string &path)
ControlPose * newControlPose(AnimSkeleton *skeleton)
SpineAtlas * newSpineAtlasFromText(const std::string &text)
SpineSkeletonData * newSpineSkeletonDataFromFile(const std::string &path)
Control-theory procedural animation for named scalar properties.
Definition ControlAnim.h:23
Control-theory procedural pose driver: tracks a target AnimPose with per-channel second-order / sprin...
Definition ControlPose.h:21
Baked motion-matching feature database from one or more AnimClips. Feature layout per frame: [0....
Runtime motion matching player: builds a query feature from current pose + desired trajectory,...
Spine animation player + 2D draw collector (region attachments).
Definition SpineAnim.h:32
Esoteric Spine .atlas text parser (region rectangles + page metadata). Does not load image pixels — b...
Definition SpineAtlas.h:14
Spine skeleton JSON data (bones / slots / skins / animations).
Runtime Spine skeleton pose (local + world bone transforms, slot attachments). Script type: SpineSkel...
2D sprite-sheet clip player.
Definition SpriteAnim.h:23
Named 2D frame sequence referencing SpriteSheet frame indices. Script type: SpriteClip.
Definition SpriteClip.h:14
Sprite-sheet / texture-atlas frame table (pixel rects).
Definition SpriteSheet.h:20
Property tween — interpolates named float properties from → to over time.
Definition Tween.h:21
CPU-side decoded 3D model (Assimp scene owned via medialoader::ModelScene). Does not upload to GPU — ...
Definition ModelData.h:23