VTK  9.5.20250812
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
90
92
98
100
104 vtkSetSmartPointerMacro(Stream, vtkResourceStream);
105 vtkGetSmartPointerMacro(Stream, vtkResourceStream);
107
109
114 vtkSetMacro(GLBStart, vtkTypeInt64);
115 vtkGetMacro(GLBStart, vtkTypeInt64);
117
119
124 vtkSetSmartPointerMacro(URILoader, vtkURILoader);
125 vtkGetSmartPointerMacro(URILoader, vtkURILoader);
127
129
136 vtkGetMacro(ApplyDeformationsToGeometry, bool);
137 vtkBooleanMacro(ApplyDeformationsToGeometry, bool);
139
141
147 vtkGetMacro(NumberOfAnimations, vtkIdType);
148 std::string GetAnimationName(vtkIdType animationIndex);
149 float GetAnimationDuration(vtkIdType animationIndex);
151
153
158 void EnableAnimation(vtkIdType animationIndex);
159 void DisableAnimation(vtkIdType animationIndex);
160 bool IsAnimationEnabled(vtkIdType animationIndex);
162
164
168 std::string GetSceneName(vtkIdType sceneIndex);
169 vtkGetMacro(NumberOfScenes, vtkIdType);
171
173
176 vtkGetMacro(CurrentScene, vtkIdType);
177 vtkSetMacro(CurrentScene, vtkIdType);
178 void SetScene(const std::string& scene);
180
182
191 vtkGetMacro(FrameRate, unsigned int);
192 vtkSetMacro(FrameRate, unsigned int);
194
196
203 vtkSetMacro(OutputPointsPrecision, int);
204 vtkGetMacro(OutputPointsPrecision, int);
206
213
218
219protected:
221 ~vtkGLTFReader() override;
222
224
226
227 std::vector<vtkSmartPointer<vtkGLTFTexture>> Textures;
228
233
238 virtual void InitializeLoader();
239
240 char* FileName = nullptr;
242 vtkTypeInt64 GLBStart = 0;
243 vtkMTimeType LastStreamTimeStamp = 0;
245
246 vtkIdType CurrentScene = 0;
247 unsigned int FrameRate = 60;
248 vtkIdType NumberOfAnimations = 0;
249 vtkIdType NumberOfScenes = 0;
250
251 bool IsModelLoaded = false;
252 bool IsMetaDataLoaded = false;
253
254 bool ApplyDeformationsToGeometry = true;
255 int OutputPointsPrecision = vtkAlgorithm::SINGLE_PRECISION;
256
258
261
264
270
276
277private:
278 vtkGLTFReader(const vtkGLTFReader&) = delete;
279 void operator=(const vtkGLTFReader&) = delete;
280};
281
282VTK_ABI_NAMESPACE_END
283#endif
Store on/off settings for data arrays, etc.
Represents and manipulates a collection of data arrays.
Deserialize a GLTF model file.
Read a GLTF file.
vtkSmartPointer< vtkGLTFDocumentLoader > Loader
void DisableAnimation(vtkIdType animationIndex)
Enable/Disable an animation.
~vtkGLTFReader() override
vtkSetFilePathMacro(FileName)
Set/Get the name of the file from which to read points.
vtkSmartPointer< vtkGLTFTexture > GetTexture(vtkIdType textureIndex)
Materials are not directly applied to this reader's output.
std::string GetAnimationName(vtkIdType animationIndex)
glTF models can contain multiple animations, with various names and duration.
vtkSmartPointer< vtkResourceStream > Stream
void StoreTextureData()
Create and store GLTFTexture struct for each image present in the model.
void SetScene(const std::string &scene)
Get/Set the scene to be used by the reader.
void CreateSceneNamesArray()
Create the SceneNames array, generate unique identifiers for each scene based on their glTF name,...
vtkSmartPointer< vtkDataArraySelection > AnimationSelection
float GetAnimationDuration(vtkIdType animationIndex)
glTF models can contain multiple animations, with various names and duration.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetApplyDeformationsToGeometry(bool flag)
The model's skinning transforms are computed and added to the different vtkPolyData objects' field da...
vtkDataArraySelection * GetAnimationSelection()
Get the vtkDataArraySelection object to enable/disable animations.
vtkSmartPointer< vtkStringArray > SceneNames
std::string GetSceneName(vtkIdType sceneIndex)
glTF models can contain multiple scene descriptions.
void CreateAnimationSelection()
Fill the AnimationSelection vtkDataArraySelection with animation names.
vtkStringArray * GetAllSceneNames()
Get a list all scenes names as a vtkStringArray, with duplicate names numbered and empty names replac...
vtkSmartPointer< vtkMultiBlockDataSet > OutputDataSet
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkURILoader > URILoader
void EnableAnimation(vtkIdType animationIndex)
Enable/Disable an animation.
vtkIdType GetNumberOfTextures()
Materials are not directly applied to this reader's output.
bool IsAnimationEnabled(vtkIdType animationIndex)
Enable/Disable an animation.
std::vector< vtkSmartPointer< vtkGLTFTexture > > Textures
virtual void InitializeLoader()
Initialize the document loader.
vtkGetFilePathMacro(FileName)
Set/Get the name of the file from which to read points.
static vtkGLTFReader * New()
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkSmartPointer< vtkDataArraySelection > PreviousAnimationSelection
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.
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.
int vtkIdType
Definition vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287