Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
Cargando...
Buscando...
Nada coincide
Model3D.h
Ir a la documentación de este archivo.
1
6#pragma once
7#include "Prerequisites.h"
8#include "IResource.h"
9#include "MeshComponent.h"
10#include "fbxsdk.h"
11
12enum
15 FBX
16};
17
18class
19Model3D : public IResource {
20public:
21 Model3D(const std::string& name, ModelType modelType)
22 : IResource(name), m_modelType(modelType), lSdkManager(nullptr), lScene(nullptr) {
24 }
25
26 Model3D(const std::string& name,
27 const SkyboxVertex vertices[],
28 const unsigned int indices[]) : IResource(name) {
29 MeshComponent mesh;
30 mesh.m_skyVertex.assign(vertices, vertices + 8);
31 mesh.m_index.assign(indices, indices + 36);
32 mesh.m_numIndex = mesh.m_index.size();
34 m_meshes.push_back(mesh);
35 }
36
37 ~Model3D() override;
38
39 bool
40 load(const std::string& path) override;
41
42 bool
43 init() override;
44
45 void
46 unload() override;
47
48 size_t
49 getSizeInBytes() const override;
50
51 const std::vector<MeshComponent>&
52 GetMeshes() const { return m_meshes; }
53
54 /* FBX MODEL LOADER*/
55 bool
57
58 std::vector<MeshComponent>
59 LoadFBXModel(const std::string & filePath);
60
61 std::vector<MeshComponent>
62 LoadOBJModel(const std::string& filePath);
63
64 void
65 ProcessFBXNode(FbxNode* node);
66
67 void
68 ProcessFBXMesh(FbxNode* node);
69
70 void
71 ProcessFBXMaterials(FbxSurfaceMaterial* material);
72
73 std::vector<std::string>
75
76private:
77 std::string GetBinaryCachePath() const;
78 bool IsBinaryCacheUpToDate(const std::string& sourcePath, const std::string& cachePath) const;
79 bool LoadBinaryCache(const std::string& cachePath);
80 bool SaveBinaryCache(const std::string& cachePath) const;
81
82private:
83 FbxManager* lSdkManager;
84 FbxScene* lScene;
85 std::vector<std::string> textureFileNames;
86public:
88 std::vector<MeshComponent> m_meshes;
89};
90
91
Declara la API de IResource dentro del subsistema Core.
Declara la API de MeshComponent dentro del subsistema Core.
ModelType
Definition Model3D.h:13
@ OBJ
Definition Model3D.h:14
@ FBX
Definition Model3D.h:15
Declara la API de Prerequisites dentro del subsistema Core.
void SetType(ResourceType t)
Definition IResource.h:48
Componente ECS que almacena la información de geometría (malla) de un actor.
std::vector< unsigned int > m_index
Lista de índices que definen las primitivas de la malla.
int m_numIndex
Número total de índices en la malla.
std::vector< SkyboxVertex > m_skyVertex
std::vector< MeshComponent > LoadOBJModel(const std::string &filePath)
Definition Model3D.cpp:217
std::string GetBinaryCachePath() const
Definition Model3D.cpp:681
size_t getSizeInBytes() const override
Definition Model3D.cpp:134
std::vector< MeshComponent > LoadFBXModel(const std::string &filePath)
Definition Model3D.cpp:164
bool InitializeFBXManager()
Definition Model3D.cpp:145
void unload() override
Definition Model3D.cpp:120
std::vector< std::string > textureFileNames
Definition Model3D.h:85
std::vector< std::string > GetTextureFileNames() const
Definition Model3D.h:74
Model3D(const std::string &name, const SkyboxVertex vertices[], const unsigned int indices[])
Definition Model3D.h:26
bool IsBinaryCacheUpToDate(const std::string &sourcePath, const std::string &cachePath) const
Definition Model3D.cpp:686
void ProcessFBXNode(FbxNode *node)
Definition Model3D.cpp:461
FbxManager * lSdkManager
Definition Model3D.h:83
Model3D(const std::string &name, ModelType modelType)
Definition Model3D.h:21
~Model3D() override
Definition Model3D.cpp:62
void ProcessFBXMaterials(FbxSurfaceMaterial *material)
Definition Model3D.cpp:664
bool LoadBinaryCache(const std::string &cachePath)
Definition Model3D.cpp:702
FbxScene * lScene
Definition Model3D.h:84
std::vector< MeshComponent > m_meshes
Definition Model3D.h:88
ModelType m_modelType
Definition Model3D.h:87
const std::vector< MeshComponent > & GetMeshes() const
Definition Model3D.h:52
bool init() override
Definition Model3D.cpp:84
bool SaveBinaryCache(const std::string &cachePath) const
Definition Model3D.cpp:776
bool load(const std::string &path) override
Definition Model3D.cpp:67
void ProcessFBXMesh(FbxNode *node)
Definition Model3D.cpp:474