VTK  9.0.1
vtkGLTFDocumentLoader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGLTFDocumentLoader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
40 #ifndef vtkGLTFDocumentLoader_h
41 #define vtkGLTFDocumentLoader_h
42 
43 #include "vtkIOGeometryModule.h" // For export macro
44 #include "vtkObject.h"
45 #include "vtkSmartPointer.h" // For SmartPointer
46 
47 #include <map> // For std::map
48 #include <memory> // For std::shared_ptr
49 #include <string> // For std::string
50 #include <vector> // For std::vector
51 
52 class vtkCellArray;
53 class vtkDataArray;
54 class vtkFloatArray;
55 class vtkImageData;
56 class vtkMatrix4x4;
57 class vtkPoints;
58 class vtkPolyData;
59 class vtkTransform;
61 
62 class VTKIOGEOMETRY_EXPORT vtkGLTFDocumentLoader : public vtkObject
63 {
64 public:
65  static vtkGLTFDocumentLoader* New();
67  void PrintSelf(ostream& os, vtkIndent indent) override;
68 
72  enum class Target : unsigned short
73  {
74  ARRAY_BUFFER = 34962,
75  ELEMENT_ARRAY_BUFFER = 34963
76  };
77 
82  enum class AccessorType : unsigned char
83  {
84  SCALAR,
85  VEC2,
86  VEC3,
87  VEC4,
88  MAT2,
89  MAT3,
90  MAT4,
91  INVALID
92  };
93 
98  enum class ComponentType : unsigned short
99  {
100  BYTE = 5120,
101  UNSIGNED_BYTE = 5121,
102  SHORT = 5122,
103  UNSIGNED_SHORT = 5123,
104  UNSIGNED_INT = 5125,
105  FLOAT = 5126
106  };
107 
108  /* The following structs help deserialize a glTF document, representing each object. As such,
109  * their members mostly match with the specification. Default values and boundaries are set
110  * according to the specification.
111  * Most of these structs contain a name property, which is optional, and, while being loaded, is
112  * not currently exploited by the loader.
113  * They are mostly root-level properties, and once created, are stored into vectors in the Model
114  * structure.
115  */
116 
121  struct BufferView
122  {
123  int Buffer;
127  int Target;
129  };
130 
137  struct Accessor
138  {
143  struct Sparse
144  {
145  int Count;
151  };
156  int Count;
157  unsigned int NumberOfComponents;
159  std::vector<double> Max;
160  std::vector<double> Min;
161  bool IsSparse;
164  };
165 
172  struct MorphTarget
173  {
174  // accessor indices from the .gltf file, the map's keys correspond to attribute names
175  std::map<std::string, int> AttributeIndices;
176  // attribute values
177  std::map<std::string, vtkSmartPointer<vtkFloatArray> > AttributeValues;
178  };
179 
187  struct Primitive
188  {
189  // accessor indices from the .glTF file, the map's keys correspond to attribute names
190  std::map<std::string, int> AttributeIndices;
193 
194  // attribute values from buffer data
195  std::map<std::string, vtkSmartPointer<vtkDataArray> > AttributeValues;
196 
198 
199  std::vector<MorphTarget> Targets;
200 
201  int Material;
202  int Mode;
203  int CellSize; // 1, 2 or 3, depending on draw mode
204  };
205 
212  struct Node
213  {
214  std::vector<int> Children;
215  int Camera;
216  int Mesh;
217  int Skin;
218 
221 
222  bool TRSLoaded;
223 
225 
226  std::vector<float> InitialRotation;
227  std::vector<float> InitialTranslation;
228  std::vector<float> InitialScale;
229  std::vector<float> InitialWeights;
230  std::vector<float> Rotation;
231  std::vector<float> Translation;
232  std::vector<float> Scale;
233  std::vector<float> Weights;
234 
235  // Object-specific extension metadata
236  struct Extensions
237  {
238  // KHR_lights_punctual extension
240  {
241  int Light = -1;
242  };
244  };
246 
248 
249  void UpdateTransform();
250  };
251 
256  struct Mesh
257  {
258  std::vector<struct Primitive> Primitives;
259  std::vector<float> Weights;
261  };
262 
268  struct TextureInfo
269  {
270  int Index = -1;
271  int TexCoord;
272  };
273 
278  struct Image
279  {
283 
285 
287  };
288 
295  struct Material
296  {
297  enum class AlphaModeType : unsigned char
298  {
299  OPAQUE,
300  MASK,
301  BLEND
302  };
303 
305  {
307  std::vector<double> BaseColorFactor;
308 
312  };
313 
315 
321  std::vector<double> EmissiveFactor;
322 
324  double AlphaCutoff;
325 
327 
329  };
330 
335  struct Texture
336  {
337  int Sampler;
338  int Source;
340  };
341 
346  struct Sampler
347  {
348  enum FilterType : unsigned short
349  {
350  NEAREST = 9728,
351  LINEAR = 9729,
352  NEAREST_MIPMAP_NEAREST = 9984,
353  LINEAR_MIPMAP_NEAREST = 9985,
354  NEAREST_MIPMAP_LINEAR = 9986,
355  LINEAR_MIPMAP_LINEAR = 9987
356  };
357  enum WrapType : unsigned short
358  {
359  CLAMP_TO_EDGE = 33071,
360  MIRRORED_REPEAT = 33648,
361  REPEAT = 10497
362  };
368  };
369 
375  struct Scene
376  {
377  std::vector<unsigned int> Nodes;
379  };
380 
386  struct Skin
387  {
388  std::vector<vtkSmartPointer<vtkMatrix4x4> > InverseBindMatrices;
389  std::vector<int> Joints;
391  int Skeleton;
393  };
394 
401  struct Animation
402  {
403  struct Sampler
404  {
405  enum class InterpolationMode : unsigned char
406  {
407  LINEAR,
408  STEP,
409  CUBICSPLINE
410  };
412  unsigned int Input;
413  unsigned int Output;
415 
418 
422  void GetInterpolatedData(float t, size_t numberOfComponents, std::vector<float>* output,
423  bool forceStep = false, bool isRotation = false) const;
424  };
425 
426  struct Channel
427  {
428  enum class PathType : unsigned char
429  {
430  ROTATION,
431  TRANSLATION,
432  SCALE,
433  WEIGHTS
434  };
435  int Sampler;
438  };
439 
440  float Duration; // In seconds
441  std::vector<Animation::Channel> Channels;
442  std::vector<Animation::Sampler> Samplers;
444  };
445 
451  struct Camera
452  {
453  // common properties
454  double Znear;
455  double Zfar;
456  bool IsPerspective; // if not, camera mode is orthographic
457  // perspective
458  double Xmag;
459  double Ymag;
460  // orthographic
461  double Yfov;
462  double AspectRatio;
464  };
465 
472  struct Extensions
473  {
474  // KHR_lights_punctual extension
476  {
477  struct Light
478  {
479  enum class LightType : unsigned char
480  {
481  DIRECTIONAL,
482  POINT,
483  SPOT
484  };
486 
487  std::vector<double> Color;
488  double Intensity;
489  double Range;
490 
491  // Type-specific parameters
494 
496  };
497  std::vector<Light> Lights;
498  };
500  };
501 
505  struct Model
506  {
507  std::vector<Accessor> Accessors;
508  std::vector<Animation> Animations;
509  std::vector<std::vector<char> > Buffers;
510  std::vector<BufferView> BufferViews;
511  std::vector<Camera> Cameras;
512  std::vector<Image> Images;
513  std::vector<Material> Materials;
514  std::vector<Mesh> Meshes;
515  std::vector<Node> Nodes;
516  std::vector<Sampler> Samplers;
517  std::vector<Scene> Scenes;
518  std::vector<Skin> Skins;
519  std::vector<Texture> Textures;
520 
522 
526  };
527 
532  bool ApplyAnimation(float t, int animationId, bool forceStep = false);
533 
537  void ResetAnimation(int animationId);
538 
543  bool LoadFileBuffer(const std::string& fileName, std::vector<char>& glbBuffer);
544 
549  bool LoadModelMetaDataFromFile(std::string FileName);
550 
554  bool LoadModelData(const std::vector<char>& glbBuffer);
555 
559  bool BuildModelVTKGeometry();
560 
564  std::shared_ptr<Model> GetInternalModel();
565 
569  static unsigned int GetNumberOfComponentsForType(vtkGLTFDocumentLoader::AccessorType type);
570 
574  const std::vector<std::string>& GetSupportedExtensions();
575 
579  const std::vector<std::string>& GetUsedExtensions();
580 
581 protected:
582  vtkGLTFDocumentLoader() = default;
583  ~vtkGLTFDocumentLoader() override = default;
584 
585 private:
586  struct AccessorLoadingWorker;
587 
588  struct SparseAccessorLoadingWorker;
589 
590  template <typename Type>
591  struct BufferDataExtractionWorker;
592 
594  void operator=(const vtkGLTFDocumentLoader&) = delete;
595 
599  bool LoadSkinMatrixData();
600 
605  bool ExtractPrimitiveAttributes(Primitive& primitive);
606 
613  bool ExtractPrimitiveAccessorData(Primitive& primitive);
614 
619  bool BuildPolyDataFromPrimitive(Primitive& primitive);
620 
624  bool LoadAnimationData();
625 
629  bool LoadImageData();
630 
637  void BuildGlobalTransforms(unsigned int nodeIndex, vtkSmartPointer<vtkTransform> parentTransform);
638 
639  std::shared_ptr<Model> InternalModel;
640 
641  static const std::vector<std::string> SupportedExtensions;
642  std::vector<std::string> UsedExtensions;
643 };
644 
645 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:33
vtkGLTFDocumentLoader::Primitive::Material
int Material
Definition: vtkGLTFDocumentLoader.h:201
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:495
vtkGLTFDocumentLoader::Node::InitialScale
std::vector< float > InitialScale
Definition: vtkGLTFDocumentLoader.h:228
vtkGLTFDocumentLoader::Node::Translation
std::vector< float > Translation
Definition: vtkGLTFDocumentLoader.h:231
vtkGLTFDocumentLoader::Model::Images
std::vector< Image > Images
Definition: vtkGLTFDocumentLoader.h:512
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Lights
std::vector< Light > Lights
Definition: vtkGLTFDocumentLoader.h:497
vtkGLTFDocumentLoader::Scene::Nodes
std::vector< unsigned int > Nodes
Definition: vtkGLTFDocumentLoader.h:377
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::Type
LightType Type
Definition: vtkGLTFDocumentLoader.h:485
vtkGLTFDocumentLoader::Node::ExtensionMetaData
Node::Extensions ExtensionMetaData
Definition: vtkGLTFDocumentLoader.h:245
vtkGLTFDocumentLoader::Model::Animations
std::vector< Animation > Animations
Definition: vtkGLTFDocumentLoader.h:508
vtkGLTFDocumentLoader::Model::Textures
std::vector< Texture > Textures
Definition: vtkGLTFDocumentLoader.h:519
vtkGLTFDocumentLoader::Animation::Sampler::InputData
vtkSmartPointer< vtkFloatArray > InputData
Definition: vtkGLTFDocumentLoader.h:416
vtkGLTFDocumentLoader::Node::Transform
vtkSmartPointer< vtkTransform > Transform
Definition: vtkGLTFDocumentLoader.h:219
vtkGLTFDocumentLoader::Material::AlphaModeType
AlphaModeType
Definition: vtkGLTFDocumentLoader.h:297
vtkGLTFDocumentLoader::Animation
This struct describes a glTF animation object.
Definition: vtkGLTFDocumentLoader.h:401
vtkGLTFDocumentLoader::Image::MimeType
std::string MimeType
Definition: vtkGLTFDocumentLoader.h:281
vtkGLTFDocumentLoader::Node::GlobalTransform
vtkSmartPointer< vtkTransform > GlobalTransform
Definition: vtkGLTFDocumentLoader.h:220
vtkGLTFDocumentLoader::Sampler::FilterType
FilterType
Definition: vtkGLTFDocumentLoader.h:348
vtkGLTFDocumentLoader::Animation::Channel::TargetPath
PathType TargetPath
Definition: vtkGLTFDocumentLoader.h:437
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual
Definition: vtkGLTFDocumentLoader.h:475
vtkGLTFDocumentLoader::Mesh::Weights
std::vector< float > Weights
Definition: vtkGLTFDocumentLoader.h:259
vtkGLTFDocumentLoader::Camera::Znear
double Znear
Definition: vtkGLTFDocumentLoader.h:454
vtkGLTFDocumentLoader::Accessor::Normalized
bool Normalized
Definition: vtkGLTFDocumentLoader.h:155
vtkGLTFDocumentLoader::Skin
This struct describes a glTF asset.
Definition: vtkGLTFDocumentLoader.h:386
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::SpotInnerConeAngle
double SpotInnerConeAngle
Definition: vtkGLTFDocumentLoader.h:492
vtkX3D::type
@ type
Definition: vtkX3D.h:522
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::Color
std::vector< double > Color
Definition: vtkGLTFDocumentLoader.h:487
vtkGLTFDocumentLoader::Animation::Samplers
std::vector< Animation::Sampler > Samplers
Definition: vtkGLTFDocumentLoader.h:442
vtkUnsignedShortArray
dynamic, self-adjusting array of unsigned short
Definition: vtkUnsignedShortArray.h:39
vtkGLTFDocumentLoader::Animation::Sampler::Interpolation
InterpolationMode Interpolation
Definition: vtkGLTFDocumentLoader.h:411
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:35
vtkGLTFDocumentLoader::Scene
This struct describes a glTF scene object.
Definition: vtkGLTFDocumentLoader.h:375
vtkGLTFDocumentLoader::Sampler::WrapS
WrapType WrapS
Definition: vtkGLTFDocumentLoader.h:365
vtkGLTFDocumentLoader::Model::Cameras
std::vector< Camera > Cameras
Definition: vtkGLTFDocumentLoader.h:511
vtkGLTFDocumentLoader::Sampler::WrapT
WrapType WrapT
Definition: vtkGLTFDocumentLoader.h:366
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkGLTFDocumentLoader::Animation::Channels
std::vector< Animation::Channel > Channels
Definition: vtkGLTFDocumentLoader.h:441
vtkGLTFDocumentLoader::Camera::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:463
vtkGLTFDocumentLoader::Camera::Xmag
double Xmag
Definition: vtkGLTFDocumentLoader.h:458
vtkGLTFDocumentLoader::Node::Matrix
vtkSmartPointer< vtkMatrix4x4 > Matrix
Definition: vtkGLTFDocumentLoader.h:224
vtkGLTFDocumentLoader::TextureInfo
This struct describes a glTF textureInfo object, mostly used in material descriptions They contain tw...
Definition: vtkGLTFDocumentLoader.h:268
vtkGLTFDocumentLoader::Node::InitialTranslation
std::vector< float > InitialTranslation
Definition: vtkGLTFDocumentLoader.h:227
vtkGLTFDocumentLoader::TextureInfo::TexCoord
int TexCoord
Definition: vtkGLTFDocumentLoader.h:271
vtkGLTFDocumentLoader::Primitive::Geometry
vtkSmartPointer< vtkPolyData > Geometry
Definition: vtkGLTFDocumentLoader.h:197
vtkGLTFDocumentLoader::Material::OcclusionTexture
TextureInfo OcclusionTexture
Definition: vtkGLTFDocumentLoader.h:318
vtkGLTFDocumentLoader::Node::Mesh
int Mesh
Definition: vtkGLTFDocumentLoader.h:216
vtkSmartPointer< vtkCellArray >
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkGLTFDocumentLoader::Model::Scenes
std::vector< Scene > Scenes
Definition: vtkGLTFDocumentLoader.h:517
vtkGLTFDocumentLoader::Primitive::Targets
std::vector< MorphTarget > Targets
Definition: vtkGLTFDocumentLoader.h:199
vtkGLTFDocumentLoader::Camera::Ymag
double Ymag
Definition: vtkGLTFDocumentLoader.h:459
vtkGLTFDocumentLoader::Animation::Channel::Sampler
int Sampler
Definition: vtkGLTFDocumentLoader.h:435
vtkGLTFDocumentLoader::Animation::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:443
vtkGLTFDocumentLoader::Texture::Source
int Source
Definition: vtkGLTFDocumentLoader.h:338
vtkGLTFDocumentLoader::Skin::Joints
std::vector< int > Joints
Definition: vtkGLTFDocumentLoader.h:389
vtkGLTFDocumentLoader::Image::Uri
std::string Uri
Definition: vtkGLTFDocumentLoader.h:282
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:49
vtkGLTFDocumentLoader::Image::ImageData
vtkSmartPointer< vtkImageData > ImageData
Definition: vtkGLTFDocumentLoader.h:284
vtkGLTFDocumentLoader::Material::EmissiveTexture
TextureInfo EmissiveTexture
Definition: vtkGLTFDocumentLoader.h:320
vtkGLTFDocumentLoader::Model::Buffers
std::vector< std::vector< char > > Buffers
Definition: vtkGLTFDocumentLoader.h:509
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:54
vtkGLTFDocumentLoader::Texture::Sampler
int Sampler
Definition: vtkGLTFDocumentLoader.h:337
vtkGLTFDocumentLoader::Primitive::Indices
vtkSmartPointer< vtkCellArray > Indices
Definition: vtkGLTFDocumentLoader.h:192
vtkGLTFDocumentLoader::Model::Materials
std::vector< Material > Materials
Definition: vtkGLTFDocumentLoader.h:513
vtkGLTFDocumentLoader::Extensions
This struct contains extension metadata.
Definition: vtkGLTFDocumentLoader.h:472
vtkGLTFDocumentLoader::Animation::Channel
Definition: vtkGLTFDocumentLoader.h:426
vtkGLTFDocumentLoader::Accessor::NumberOfComponents
unsigned int NumberOfComponents
Definition: vtkGLTFDocumentLoader.h:157
vtkGLTFDocumentLoader::BufferView::Target
int Target
Definition: vtkGLTFDocumentLoader.h:127
vtkGLTFDocumentLoader::Node::InitialWeights
std::vector< float > InitialWeights
Definition: vtkGLTFDocumentLoader.h:229
vtkGLTFDocumentLoader::Material::OcclusionTextureStrength
double OcclusionTextureStrength
Definition: vtkGLTFDocumentLoader.h:319
vtkGLTFDocumentLoader::Camera::Zfar
double Zfar
Definition: vtkGLTFDocumentLoader.h:455
vtkGLTFDocumentLoader::Node::Children
std::vector< int > Children
Definition: vtkGLTFDocumentLoader.h:214
vtkGLTFDocumentLoader::Mesh::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:260
vtkGLTFDocumentLoader::Model
This struct contains all data from a gltf asset.
Definition: vtkGLTFDocumentLoader.h:505
vtkGLTFDocumentLoader::Sampler::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:367
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness::MetallicFactor
float MetallicFactor
Definition: vtkGLTFDocumentLoader.h:310
vtkGLTFDocumentLoader::Texture::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:339
vtkGLTFDocumentLoader::Primitive::AttributeIndices
std::map< std::string, int > AttributeIndices
Definition: vtkGLTFDocumentLoader.h:190
vtkGLTFDocumentLoader::Node::Rotation
std::vector< float > Rotation
Definition: vtkGLTFDocumentLoader.h:230
vtkGLTFDocumentLoader::Model::DefaultScene
int DefaultScene
Definition: vtkGLTFDocumentLoader.h:524
vtkGLTFDocumentLoader::Primitive::AttributeValues
std::map< std::string, vtkSmartPointer< vtkDataArray > > AttributeValues
Definition: vtkGLTFDocumentLoader.h:195
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::LightType
LightType
Definition: vtkGLTFDocumentLoader.h:479
vtkGLTFDocumentLoader::Model::BufferMetaData
std::string BufferMetaData
Definition: vtkGLTFDocumentLoader.h:523
vtkGLTFDocumentLoader::Material::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:328
vtkGLTFDocumentLoader::Animation::Duration
float Duration
Definition: vtkGLTFDocumentLoader.h:440
vtkGLTFDocumentLoader::Model::FileName
std::string FileName
Definition: vtkGLTFDocumentLoader.h:525
vtkGLTFDocumentLoader::Accessor::Sparse::Count
int Count
Definition: vtkGLTFDocumentLoader.h:145
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness::BaseColorTexture
TextureInfo BaseColorTexture
Definition: vtkGLTFDocumentLoader.h:306
vtkGLTFDocumentLoader::Target
Target
Define an openGL draw target.
Definition: vtkGLTFDocumentLoader.h:72
vtkGLTFDocumentLoader::Model::BufferViews
std::vector< BufferView > BufferViews
Definition: vtkGLTFDocumentLoader.h:510
vtkGLTFDocumentLoader::Node::Extensions::KHRLightsPunctualMetaData
Node::Extensions::KHRLightsPunctual KHRLightsPunctualMetaData
Definition: vtkGLTFDocumentLoader.h:243
vtkGLTFDocumentLoader::Accessor::ComponentTypeValue
ComponentType ComponentTypeValue
Definition: vtkGLTFDocumentLoader.h:154
vtkGLTFDocumentLoader::Accessor::ByteOffset
int ByteOffset
Definition: vtkGLTFDocumentLoader.h:153
vtkGLTFDocumentLoader::Node::Camera
int Camera
Definition: vtkGLTFDocumentLoader.h:215
vtkGLTFDocumentLoader::Animation::Sampler::Input
unsigned int Input
Definition: vtkGLTFDocumentLoader.h:412
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::Intensity
double Intensity
Definition: vtkGLTFDocumentLoader.h:488
vtkGLTFDocumentLoader::Texture
This struct describes a glTF texture object.
Definition: vtkGLTFDocumentLoader.h:335
vtkGLTFDocumentLoader::Image::BufferView
int BufferView
Definition: vtkGLTFDocumentLoader.h:280
vtkGLTFDocumentLoader::Material::AlphaCutoff
double AlphaCutoff
Definition: vtkGLTFDocumentLoader.h:324
vtkGLTFDocumentLoader::Material
This struct describes a glTF material object.
Definition: vtkGLTFDocumentLoader.h:295
vtkGLTFDocumentLoader::Node::InitialRotation
std::vector< float > InitialRotation
Definition: vtkGLTFDocumentLoader.h:226
vtkGLTFDocumentLoader::Mesh::Primitives
std::vector< struct Primitive > Primitives
Definition: vtkGLTFDocumentLoader.h:258
vtkGLTFDocumentLoader::Model::Accessors
std::vector< Accessor > Accessors
Definition: vtkGLTFDocumentLoader.h:507
vtkGLTFDocumentLoader::Node::Scale
std::vector< float > Scale
Definition: vtkGLTFDocumentLoader.h:232
vtkGLTFDocumentLoader::Animation::Sampler::OutputData
vtkSmartPointer< vtkFloatArray > OutputData
Definition: vtkGLTFDocumentLoader.h:417
vtkGLTFDocumentLoader::Animation::Sampler::NumberOfComponents
int NumberOfComponents
Definition: vtkGLTFDocumentLoader.h:414
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:35
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:179
vtkGLTFDocumentLoader::Accessor
This struct describes an accessor glTF object.
Definition: vtkGLTFDocumentLoader.h:137
vtkGLTFDocumentLoader::MorphTarget::AttributeIndices
std::map< std::string, int > AttributeIndices
Definition: vtkGLTFDocumentLoader.h:175
vtkGLTFDocumentLoader::Node::Extensions
Definition: vtkGLTFDocumentLoader.h:236
vtkSmartPointer.h
vtkGLTFDocumentLoader::Primitive::CellSize
int CellSize
Definition: vtkGLTFDocumentLoader.h:203
vtkGLTFDocumentLoader::BufferView
This struct describes a glTF bufferView object.
Definition: vtkGLTFDocumentLoader.h:121
vtkGLTFDocumentLoader::Material::DoubleSided
bool DoubleSided
Definition: vtkGLTFDocumentLoader.h:326
vtkGLTFDocumentLoader::Node::Extensions::KHRLightsPunctual
Definition: vtkGLTFDocumentLoader.h:239
vtkGLTFDocumentLoader::Model::Skins
std::vector< Skin > Skins
Definition: vtkGLTFDocumentLoader.h:518
vtkGLTFDocumentLoader::Model::Meshes
std::vector< Mesh > Meshes
Definition: vtkGLTFDocumentLoader.h:514
vtkGLTFDocumentLoader::Image
This struct describes a glTF image object.
Definition: vtkGLTFDocumentLoader.h:278
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkGLTFDocumentLoader::MorphTarget
This struct describes a glTF Morph Target object.
Definition: vtkGLTFDocumentLoader.h:172
vtkGLTFDocumentLoader::Accessor::Min
std::vector< double > Min
Definition: vtkGLTFDocumentLoader.h:160
vtkGLTFDocumentLoader::BufferView::ByteOffset
int ByteOffset
Definition: vtkGLTFDocumentLoader.h:124
vtkGLTFDocumentLoader::Camera::Yfov
double Yfov
Definition: vtkGLTFDocumentLoader.h:461
vtkGLTFDocumentLoader::Accessor::Sparse::ValuesBufferView
int ValuesBufferView
Definition: vtkGLTFDocumentLoader.h:149
vtkGLTFDocumentLoader::Accessor::Sparse::ValuesByteOffset
int ValuesByteOffset
Definition: vtkGLTFDocumentLoader.h:150
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness::MetallicRoughnessTexture
TextureInfo MetallicRoughnessTexture
Definition: vtkGLTFDocumentLoader.h:309
vtkObject.h
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::SpotOuterConeAngle
double SpotOuterConeAngle
Definition: vtkGLTFDocumentLoader.h:493
vtkGLTFDocumentLoader::Accessor::Sparse
This struct describes an accessor.sparse glTF object.
Definition: vtkGLTFDocumentLoader.h:143
vtkGLTFDocumentLoader::Accessor::Sparse::IndicesComponentType
ComponentType IndicesComponentType
Definition: vtkGLTFDocumentLoader.h:148
vtkGLTFDocumentLoader::Skin::Skeleton
int Skeleton
Definition: vtkGLTFDocumentLoader.h:391
vtkGLTFDocumentLoader::MorphTarget::AttributeValues
std::map< std::string, vtkSmartPointer< vtkFloatArray > > AttributeValues
Definition: vtkGLTFDocumentLoader.h:177
vtkGLTFDocumentLoader::Accessor::IsSparse
bool IsSparse
Definition: vtkGLTFDocumentLoader.h:161
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkGLTFDocumentLoader::Model::ExtensionMetaData
Extensions ExtensionMetaData
Definition: vtkGLTFDocumentLoader.h:521
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness::RoughnessFactor
float RoughnessFactor
Definition: vtkGLTFDocumentLoader.h:311
vtkGLTFDocumentLoader::AccessorType
AccessorType
Defines an accessor's type.
Definition: vtkGLTFDocumentLoader.h:82
vtkGLTFDocumentLoader::Node::Weights
std::vector< float > Weights
Definition: vtkGLTFDocumentLoader.h:233
vtkGLTFDocumentLoader::Accessor::SparseObject
Sparse SparseObject
Definition: vtkGLTFDocumentLoader.h:162
vtkGLTFDocumentLoader::Node
This struct describes a glTF node object.
Definition: vtkGLTFDocumentLoader.h:212
vtkGLTFDocumentLoader::Camera
This struct describes a glTF camera object.
Definition: vtkGLTFDocumentLoader.h:451
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness
PbrMetallicRoughness PbrMetallicRoughness
Definition: vtkGLTFDocumentLoader.h:314
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness
Definition: vtkGLTFDocumentLoader.h:304
vtkGLTFDocumentLoader::Sampler::WrapType
WrapType
Definition: vtkGLTFDocumentLoader.h:357
vtkGLTFDocumentLoader
Deserialize a GLTF model file.
Definition: vtkGLTFDocumentLoader.h:62
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light::Range
double Range
Definition: vtkGLTFDocumentLoader.h:489
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctualMetaData
KHRLightsPunctual KHRLightsPunctualMetaData
Definition: vtkGLTFDocumentLoader.h:499
vtkGLTFDocumentLoader::Mesh
This struct describes a glTF mesh object.
Definition: vtkGLTFDocumentLoader.h:256
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkGLTFDocumentLoader::BufferView::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:128
vtkGLTFDocumentLoader::Sampler
This struct describes a glTF sampler object.
Definition: vtkGLTFDocumentLoader.h:346
vtkGLTFDocumentLoader::Camera::AspectRatio
double AspectRatio
Definition: vtkGLTFDocumentLoader.h:462
vtkGLTFDocumentLoader::Camera::IsPerspective
bool IsPerspective
Definition: vtkGLTFDocumentLoader.h:456
vtkGLTFDocumentLoader::Primitive::Mode
int Mode
Definition: vtkGLTFDocumentLoader.h:202
vtkGLTFDocumentLoader::Material::NormalTexture
TextureInfo NormalTexture
Definition: vtkGLTFDocumentLoader.h:316
vtkGLTFDocumentLoader::Node::Skin
int Skin
Definition: vtkGLTFDocumentLoader.h:217
vtkGLTFDocumentLoader::Extensions::KHRLightsPunctual::Light
Definition: vtkGLTFDocumentLoader.h:477
vtkGLTFDocumentLoader::Material::AlphaMode
AlphaModeType AlphaMode
Definition: vtkGLTFDocumentLoader.h:323
vtkGLTFDocumentLoader::Image::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:286
vtkGLTFDocumentLoader::BufferView::ByteLength
int ByteLength
Definition: vtkGLTFDocumentLoader.h:125
vtkGLTFDocumentLoader::Accessor::Type
AccessorType Type
Definition: vtkGLTFDocumentLoader.h:158
vtkGLTFDocumentLoader::Model::Nodes
std::vector< Node > Nodes
Definition: vtkGLTFDocumentLoader.h:515
vtkGLTFDocumentLoader::Primitive
This struct describes a glTF primitive object.
Definition: vtkGLTFDocumentLoader.h:187
vtkGLTFDocumentLoader::ComponentType
ComponentType
Define a type for different data components.
Definition: vtkGLTFDocumentLoader.h:98
vtkGLTFDocumentLoader::Animation::Channel::PathType
PathType
Definition: vtkGLTFDocumentLoader.h:428
vtkGLTFDocumentLoader::Accessor::Max
std::vector< double > Max
Definition: vtkGLTFDocumentLoader.h:159
vtkGLTFDocumentLoader::BufferView::ByteStride
int ByteStride
Definition: vtkGLTFDocumentLoader.h:126
vtkGLTFDocumentLoader::Accessor::Sparse::IndicesBufferView
int IndicesBufferView
Definition: vtkGLTFDocumentLoader.h:146
vtkGLTFDocumentLoader::Accessor::Count
int Count
Definition: vtkGLTFDocumentLoader.h:156
vtkGLTFDocumentLoader::Material::EmissiveFactor
std::vector< double > EmissiveFactor
Definition: vtkGLTFDocumentLoader.h:321
vtkGLTFDocumentLoader::Model::Samplers
std::vector< Sampler > Samplers
Definition: vtkGLTFDocumentLoader.h:516
vtkGLTFDocumentLoader::Node::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:247
vtkGLTFDocumentLoader::Skin::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:392
vtkGLTFDocumentLoader::BufferView::Buffer
int Buffer
Definition: vtkGLTFDocumentLoader.h:123
vtkGLTFDocumentLoader::Skin::InverseBindMatricesAccessorId
int InverseBindMatricesAccessorId
Definition: vtkGLTFDocumentLoader.h:390
vtkGLTFDocumentLoader::Primitive::IndicesId
int IndicesId
Definition: vtkGLTFDocumentLoader.h:191
vtkGLTFDocumentLoader::Accessor::Sparse::IndicesByteOffset
int IndicesByteOffset
Definition: vtkGLTFDocumentLoader.h:147
vtkGLTFDocumentLoader::Animation::Sampler::Output
unsigned int Output
Definition: vtkGLTFDocumentLoader.h:413
vtkGLTFDocumentLoader::Material::PbrMetallicRoughness::BaseColorFactor
std::vector< double > BaseColorFactor
Definition: vtkGLTFDocumentLoader.h:307
vtkGLTFDocumentLoader::Skin::InverseBindMatrices
std::vector< vtkSmartPointer< vtkMatrix4x4 > > InverseBindMatrices
Definition: vtkGLTFDocumentLoader.h:388
vtkGLTFDocumentLoader::Sampler::MinFilter
FilterType MinFilter
Definition: vtkGLTFDocumentLoader.h:364
vtkGLTFDocumentLoader::Animation::Sampler
Definition: vtkGLTFDocumentLoader.h:403
vtkGLTFDocumentLoader::Node::TRSLoaded
bool TRSLoaded
Definition: vtkGLTFDocumentLoader.h:222
vtkGLTFDocumentLoader::Animation::Channel::TargetNode
int TargetNode
Definition: vtkGLTFDocumentLoader.h:436
vtkGLTFDocumentLoader::Accessor::BufferView
int BufferView
Definition: vtkGLTFDocumentLoader.h:152
vtkGLTFDocumentLoader::Scene::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:378
vtkGLTFDocumentLoader::Material::NormalTextureScale
double NormalTextureScale
Definition: vtkGLTFDocumentLoader.h:317
vtkGLTFDocumentLoader::Accessor::Name
std::string Name
Definition: vtkGLTFDocumentLoader.h:163
vtkGLTFDocumentLoader::Sampler::MagFilter
FilterType MagFilter
Definition: vtkGLTFDocumentLoader.h:363
vtkGLTFDocumentLoader::Animation::Sampler::InterpolationMode
InterpolationMode
Definition: vtkGLTFDocumentLoader.h:405