17#include <assimp/scene.h>
99 virtual void Create()
override;
100 virtual void Destroy()
override;
108 void SetMaterial(
class Material* newMaterial);
110 uint32_t GetNumIndices();
111 uint32_t GetNumFaces();
112 uint32_t GetNumVertices();
116 int32_t FindBoneIndex(
const std::string& name)
const;
117 const std::vector<Bone>& GetBones()
const;
118 const Bone& GetBone(int32_t index)
const;
119 uint32_t GetNumBones()
const;
121 glm::mat4 GetInvRootTransform()
const;
123 const std::vector<Animation>& GetAnimations()
const;
124 const Animation* GetAnimation(
const char* name);
127 float GetAnimationDuration(
const char* name);
129 const std::vector<VertexSkinned>& GetVertices()
const;
131 void FinalizeBoneTransforms(std::vector<glm::mat4>& inoutTransforms);
133 void CopyBindPose(std::vector<glm::mat4>& outTransforms);
137 const glm::mat4 GetBindPoseMatrix(int32_t boneIndex)
const;
142 static bool HandlePropChange(
Datum* datum, uint32_t index,
const void* newValue);
151 uint32_t mNumVertices;
152 uint32_t mNumIndices;
155 std::vector<Bone> mBones;
156 std::vector<Animation> mAnimations;
157 std::vector<VertexSkinned> mVertices;
159 glm::mat4 mInvRootTransform;
160 std::vector<glm::mat4> mBindPoseMatrices;
161 std::vector<IndexType> mIndices;
164 float mBoundsScale = 1.1f;
171 void Create(
const aiScene& scene,
172 const aiMesh& meshData,
173 std::vector<Material>* materials =
nullptr);
175 void SetupBoneHierarchy(
177 const aiMesh& meshData,
178 std::vector<uint8_t>& boneIndices,
179 std::vector<float>& boneWeights,
180 int32_t parentBoneIndex);
182 void SetupAnimations(
const aiScene& scene);
183 void SetupResource(
const aiMesh& meshData,
184 const std::vector<float>& boneWeights,
185 const std::vector<uint8_t>& boneIndices);
Platform
Definition EngineTypes.h:31
uint16_t IndexType
Definition GraphicsTypes.h:121
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Bounds ComputeBounds(const std::vector< T > &vertices)
Definition Utilities.h:153
virtual bool Import(const std::string &path, ImportOptions *options=nullptr)
Definition Asset.cpp:244
virtual void Create()
Definition Asset.cpp:77
virtual void SaveStream(Stream &stream, Platform platform)
Definition Asset.cpp:236
virtual glm::vec4 GetTypeColor()
Definition Asset.cpp:254
virtual const char * GetTypeImportExt()
Definition Asset.cpp:264
virtual const char * GetTypeName()
Definition Asset.cpp:259
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Asset.cpp:249
virtual void LoadStream(Stream &stream, Platform platform)
Definition Asset.cpp:222
virtual void Destroy()
Definition Asset.cpp:87
Definition SkeletalMesh3d.h:52
Definition SkeletalMesh.h:86
DECLARE_ASSET(SkeletalMesh, Asset)
Definition SkeletalMesh.h:48
float mTime
Definition SkeletalMesh.h:49
glm::vec3 mValue
Definition SkeletalMesh.h:50
Definition SkeletalMesh.h:54
std::string mName
Definition SkeletalMesh.h:55
std::vector< AnimEventKey > mEventKeys
Definition SkeletalMesh.h:56
Definition SkeletalMesh.h:60
SkeletalMesh3D * mNode
Definition SkeletalMesh.h:61
float mTime
Definition SkeletalMesh.h:64
std::string mAnimation
Definition SkeletalMesh.h:63
glm::vec3 mValue
Definition SkeletalMesh.h:65
std::string mName
Definition SkeletalMesh.h:62
Definition SkeletalMesh.h:77
std::string mName
Definition SkeletalMesh.h:78
std::vector< Channel > mChannels
Definition SkeletalMesh.h:81
float mTicksPerSecond
Definition SkeletalMesh.h:80
std::vector< AnimEventTrack > mEventTracks
Definition SkeletalMesh.h:82
float mDuration
Definition SkeletalMesh.h:79
Definition SkeletalMesh.h:21
glm::mat4 mInvOffsetMatrix
Definition SkeletalMesh.h:26
glm::mat4 mOffsetMatrix
Definition SkeletalMesh.h:25
std::string mName
Definition SkeletalMesh.h:22
int32_t mIndex
Definition SkeletalMesh.h:23
int32_t mParentIndex
Definition SkeletalMesh.h:24
Definition EngineTypes.h:193
Definition SkeletalMesh.h:69
std::vector< ScaleKey > mScaleKeys
Definition SkeletalMesh.h:73
int32_t mBoneIndex
Definition SkeletalMesh.h:70
std::vector< PositionKey > mPositionKeys
Definition SkeletalMesh.h:71
std::vector< RotationKey > mRotationKeys
Definition SkeletalMesh.h:72
Definition SkeletalMesh.h:30
glm::vec3 mValue
Definition SkeletalMesh.h:32
float mTime
Definition SkeletalMesh.h:31
Definition SkeletalMesh.h:36
glm::quat mValue
Definition SkeletalMesh.h:38
float mTime
Definition SkeletalMesh.h:37
Definition SkeletalMesh.h:42
float mTime
Definition SkeletalMesh.h:43
glm::vec3 mValue
Definition SkeletalMesh.h:44
Definition GraphicsTypes.h:178