VTK  9.4.20241212
vtkGLTFReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
52#ifndef vtkGLTFReader_h
53#define vtkGLTFReader_h
54
55#include "vtkIOGeometryModule.h" // For export macro
57#include "vtkResourceStream.h" // For vtkResourceStream
58#include "vtkSmartPointer.h" // For vtkSmartPointer
59#include "vtkURILoader.h" // For vtkURILoader
60
61#include <string> // For std::string
62#include <vector> // For std::vector
63
64VTK_ABI_NAMESPACE_BEGIN
66class vtkFieldData;
68class vtkImageData;
69class vtkStringArray;
70class vtkTexture;
71class vtkGLTFTexture;
72
73class VTKIOGEOMETRY_EXPORT vtkGLTFReader : public vtkMultiBlockDataSetAlgorithm
74{
75public:
76 static vtkGLTFReader* New();
78 void PrintSelf(ostream& os, vtkIndent indent) override;
79
81
87 struct VTK_DEPRECATED_IN_9_4_0("Use vtkGLTFTexture instead.") GLTFTexture
88 {
90 unsigned short MinFilterValue;
91 unsigned short MaxFilterValue;
92 unsigned short WrapSValue;
93 unsigned short WrapTValue;
94 };
95
97 VTK_DEPRECATED_IN_9_4_0("Use GetTexture() instead.")
98 GLTFTexture GetGLTFTexture(vtkIdType textureIndex);
99 vtkSmartPointer<vtkGLTFTexture> GetTexture(vtkIdType textureIndex);
101
103
106 vtkSetFilePathMacro(FileName);
107 vtkGetFilePathMacro(FileName);
109
111
115 vtkSetSmartPointerMacro(Stream, vtkResourceStream);
116 vtkGetSmartPointerMacro(Stream, vtkResourceStream);
118
120
125 vtkSetMacro(GLBStart, vtkTypeInt64);
126 vtkGetMacro(GLBStart, vtkTypeInt64);
128
130
135 vtkSetSmartPointerMacro(URILoader, vtkURILoader);
136 vtkGetSmartPointerMacro(URILoader, vtkURILoader);
138
140
146 void SetApplyDeformationsToGeometry(bool flag);
147 vtkGetMacro(ApplyDeformationsToGeometry, bool);
148 vtkBooleanMacro(ApplyDeformationsToGeometry, bool);
150
152
158 vtkGetMacro(NumberOfAnimations, vtkIdType);
159 std::string GetAnimationName(vtkIdType animationIndex);
160 float GetAnimationDuration(vtkIdType animationIndex);
162
164
169 void EnableAnimation(vtkIdType animationIndex);
170 void DisableAnimation(vtkIdType animationIndex);
171 bool IsAnimationEnabled(vtkIdType animationIndex);
173
175
179 std::string GetSceneName(vtkIdType sceneIndex);
180 vtkGetMacro(NumberOfScenes, vtkIdType);
182
184
187 vtkGetMacro(CurrentScene, vtkIdType);
188 vtkSetMacro(CurrentScene, vtkIdType);
189 void SetScene(const std::string& scene);
191
193
202 vtkGetMacro(FrameRate, unsigned int);
203 vtkSetMacro(FrameRate, unsigned int);
205
207
214 vtkSetMacro(OutputPointsPrecision, int);
215 vtkGetMacro(OutputPointsPrecision, int);
217
223 vtkStringArray* GetAllSceneNames();
224
228 vtkDataArraySelection* GetAnimationSelection();
229
230protected:
232 ~vtkGLTFReader() override;
233
235
237
239
243 void StoreTextureData();
244
249 virtual void InitializeLoader();
250
251 char* FileName = nullptr;
253 vtkTypeInt64 GLBStart = 0;
254 vtkMTimeType LastStreamTimeStamp = 0;
256
257 vtkIdType CurrentScene = 0;
258 unsigned int FrameRate = 60;
259 vtkIdType NumberOfAnimations = 0;
260 vtkIdType NumberOfScenes = 0;
261
262 bool IsModelLoaded = false;
263 bool IsMetaDataLoaded = false;
264
265 bool ApplyDeformationsToGeometry = true;
266 int OutputPointsPrecision = vtkAlgorithm::SINGLE_PRECISION;
267
269
270 vtkSmartPointer<vtkDataArraySelection> PreviousAnimationSelection;
272
273 int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
275
280 void CreateSceneNamesArray();
281
286 void CreateAnimationSelection();
287
288private:
289 vtkGLTFReader(const vtkGLTFReader&) = delete;
290 void operator=(const vtkGLTFReader&) = delete;
291};
292
293VTK_ABI_NAMESPACE_END
294#endif
Superclass for all sources, filters, and sinks in VTK.
Store on/off settings for data arrays, etc.
represent and manipulate fields of data
Deserialize a GLTF model file.
Read a GLTF file.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdType GetNumberOfTextures()
static vtkGLTFReader * New()
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Composite dataset that organizes datasets into blocks.
Abstract class used for custom streams.
Hold a reference to a vtkObjectBase instance.
a vtkAbstractArray subclass for strings
handles properties associated with a texture map
Definition vtkTexture.h:168
Helper class for readers and importer that need to load more than one resource.
Materials are not directly applied to this reader's output.
unsigned short MinFilterValue
unsigned short MaxFilterValue
vtkSmartPointer< vtkImageData > Image
#define VTK_DEPRECATED_IN_9_4_0(reason)
int vtkIdType
Definition vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270