RavEngine
Loading...
Searching...
No Matches
Skeleton.hpp
1#pragma once
2#include "Array.hpp"
3#include "Vector.hpp"
4#include "Map.hpp"
5#include "mathtypes.hpp"
6
7class aiNode;
8class aiBone;
9class aiScene;
10
11namespace RavEngine {
13 Array<char, 4> header = { 'r','v','e','s' };
14 uint32_t numBones = 0;
15 };
16
18 glm::quat rotation;
19 glm::vec3 translation, scale;
20 };
21
23 struct Bone {
24 BoneTransform transform;
25 std::string name;
26 };
27 Vector<Bone> allBones;
28 Vector<Vector<uint16_t>> childrenMap;
29 uint16_t IndexForBoneName(const std::string_view name);
30 };
31
32 struct SkeletonData {
33 struct Bone {
34 BoneTransform transform;
35 std::string name;
36 Vector<Bone> children;
37 };
38 Bone root;
39 };
40
41
44 aiNode* rootBone;
45 };
46 NameToBoneResult NameToBone(const aiScene* scene);
47 SkeletonData CreateSkeleton(const NameToBoneResult& result);
48 SerializedSkeleton FlattenSkeleton(const SkeletonData& skeleton);
49
51 struct vweights {
52 struct vw {
53 uint32_t joint_idx = 0;
54 float influence = 0;
55 };
56 Vector<vw> weights;
57 };
58
59 vweights::vw w[4];
60 };
61}
Definition concurrentqueue.h:747
Definition Animation.hpp:6
Definition Skeleton.hpp:17
Definition Skeleton.hpp:42
Definition Skeleton.hpp:12
Definition Skeleton.hpp:23
Definition Skeleton.hpp:22
Definition Skeleton.hpp:33
Definition Skeleton.hpp:32
Definition Skeleton.hpp:52
Definition Skeleton.hpp:51
Definition Skeleton.hpp:50
Definition type_quat.hpp:20
Definition qualifier.hpp:35