HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GLTF_Importer.h
Go to the documentation of this file.
1 #ifndef __GLTF_Importer_h__
2 #define __GLTF_Importer_h__
3 
4 #include "GLTFZ_API.h"
5 
6 #include "GLTF_AnimationData.h"
7 #include "GLTF_ErrorManager.h"
8 #include "GLTF_ImportOptions.h"
9 #include "GLTF_SceneData.h"
10 #include "GLTF_Reader.h"
11 
12 #include <GA/GA_Types.h>
13 #include <GU/GU_DetailHandle.h>
14 #include <UT/UT_Optional.h>
15 #include <UT/UT_SharedPtr.h>
16 
17 class GLTF_Codec;
18 class GU_Detail;
19 
21 {
22 private:
23 
24  enum class ImportLevel
25  {
26  Scene,
27  Node,
28  Mesh,
29  Primitive,
30  Materials
31  };
32 
33 public:
34  void setGltfFile(const char* filepath)
35  {
36  myReader.setFilePath(filepath);
37  }
38 
39  const GLTF_Reader& getReader() { return myReader; }
40  GLTF_ImportOptions& getImportOptions() { return myOptions; }
41  const GLTF_AnimationData& getAnimationData() const { return myAnimData; }
42  const GLTF_SceneData& getSceneData() const { return myScene; }
43  const GLTF_ErrorManager& getErrors() const { return myErrors; }
44 
45 public:
46 
47  bool importScene(
48  GU_Detail& gdp,
49  const GLTF_Index scene_idx);
50 
51  bool importNode(
52  GU_Detail& gdp,
53  const GLTF_Index node_idx);
54 
55  bool importMesh(
56  GU_Detail& gdp,
57  const GLTF_Index mesh_idx);
58 
59  bool importMeshPrimitive(
60  GU_Detail& prim_gdp,
61  const GLTF_Index mesh_idx,
62  const GLTF_Index prim_idx);
63 
64  bool importMaterial(
65  GU_Detail& gdp,
66  const GLTF_Index mat_idx);
67 
68 private:
69 
70  bool doImportScene(
71  GU_Detail& gdp,
72  const GLTF_Index scene_idx);
73 
74  bool doImportNode(
75  GU_Detail& gdp,
76  const GLTF_Index node_idx);
77 
78  GU_DetailHandle doImportNode(
79  const GLTF_Index node_idx);
80 
81  bool doImportCamera(
82  GU_Detail& gdp,
83  const GLTF_Index node_idx,
84  const GLTF_Index cam_idx);
85 
86  bool doImportMesh(
87  GU_Detail& gdp,
88  const GLTF_Index mesh_idx,
90 
91  bool doImportMeshPrimitive(
92  GU_Detail& prim_gdp,
93  const GLTF_Index mesh_idx,
94  const GLTF_Index prim_idx,
96 
97  GU_DetailHandle doImportMeshPrimitive(
98  const GLTF_Index mesh_idx,
99  const GLTF_Index prim_idx,
101 
102  bool doImportAnimations();
103 
104  bool doImportMaterial(
105  GU_Detail& gdp,
106  const GLTF_Index mat_idx);
107 
108 private:
109 
110  void traverseNodeGraph(
111  const GLTF_Index node_idx,
112  UT_Array<GLTF_Index>& traversed,
113  UT_Optional<GLTF_Index> end_node);
114 
115  bool addStringAttributeUniformVal(
116  GU_Detail& gdp,
117  const char* attrib_name,
118  const char* attrib_val,
119  GA_AttributeOwner owner) const;
120 
121  bool addDictAttributeUniformVal(
122  GU_Detail& gdp,
123  const char* attrib_name,
124  const UT_OptionsHolder& attrib_val,
125  GA_AttributeOwner owner) const;
126 
127  bool checkRequiredExtensionsAreSupportedOrIgnored();
128 
129 private:
130 
132  createMatchingMeshCodec(bool is_draco_mesh);
134  createMatchingMaterialCodec();
135 
136 private:
137  GLTF_Reader myReader;
138  GLTF_ImportOptions myOptions;
139  GLTF_ErrorManager myErrors;
140  GLTF_AnimationData myAnimData;
141  GLTF_SceneData myScene;
142 
143  ImportLevel myImportLevel;
144 };
145 
146 #endif // __GLTF_Importer_h__
Definition: Mesh.h:240
const GLTF_ErrorManager & getErrors() const
Definition: GLTF_Importer.h:43
Definition: Node.h:52
GLTF_ImportOptions & getImportOptions()
Definition: GLTF_Importer.h:40
const GLTF_Reader & getReader()
Definition: GLTF_Importer.h:39
std::optional< T > UT_Optional
Definition: UT_Optional.h:26
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
GT_API const UT_StringHolder winding_order
void setGltfFile(const char *filepath)
Definition: GLTF_Importer.h:34
const GLTF_AnimationData & getAnimationData() const
Definition: GLTF_Importer.h:41
std::size_t GLTF_Index
Definition: GLTF_Types.h:13
GA_AttributeOwner
Definition: GA_Types.h:35
#define GLTFZ_API
Definition: GLTFZ_API.h:37
GLTF_WindingOrder
Definition: GLTF_Types.h:90
const GLTF_SceneData & getSceneData() const
Definition: GLTF_Importer.h:42