VTK
9.4.20241221
|
Deserialize a GLTF model file. More...
#include <vtkGLTFDocumentLoader.h>
Classes | |
struct | Accessor |
This struct describes an accessor glTF object. More... | |
struct | Animation |
This struct describes a glTF animation object. More... | |
struct | BufferView |
This struct describes a glTF bufferView object. More... | |
struct | Camera |
This struct describes a glTF camera object. More... | |
struct | Extensions |
This struct contains extension metadata. More... | |
struct | Image |
This struct describes a glTF image object. More... | |
struct | Material |
This struct describes a glTF material object. More... | |
struct | Mesh |
This struct describes a glTF mesh object. More... | |
struct | Model |
This struct contains all data from a gltf asset. More... | |
struct | MorphTarget |
This struct describes a glTF Morph Target object. More... | |
struct | Node |
This struct describes a glTF node object. More... | |
struct | Primitive |
This struct describes a glTF primitive object. More... | |
struct | Sampler |
This struct describes a glTF sampler object. More... | |
struct | Scene |
This struct describes a glTF scene object. More... | |
struct | Skin |
This struct describes a glTF asset. More... | |
struct | Texture |
This struct describes a glTF texture object. More... | |
struct | TextureInfo |
This struct describes a glTF textureInfo object, mostly used in material descriptions They contain two indexes, one to a texture object, and the second being used to construct a string with the format TEXCOORD_<index>, which references a key in mesh.primitives.attributes. More... | |
Public Types | |
enum class | Target : unsigned short { ARRAY_BUFFER = 34962 , ELEMENT_ARRAY_BUFFER = 34963 } |
Define an openGL draw target. More... | |
enum class | AccessorType : unsigned char { SCALAR , VEC2 , VEC3 , VEC4 , MAT2 , MAT3 , MAT4 , INVALID } |
Defines an accessor's type. More... | |
enum class | ComponentType : unsigned short { BYTE = 5120 , UNSIGNED_BYTE = 5121 , SHORT = 5122 , UNSIGNED_SHORT = 5123 , UNSIGNED_INT = 5125 , FLOAT = 5126 } |
Define a type for different data components. More... | |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual vtkTypeBool | IsA (const char *type) |
Return 1 if this class is the same type of (or a subclass of) the named class. | |
vtkGLTFDocumentLoader * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Methods invoked by print to print information about the object including superclasses. | |
bool | ApplyAnimation (float t, int animationId, bool forceStep=false) |
Apply the specified animation, at the specified time value t, to the internal Model. | |
void | ResetAnimation (int animationId) |
Restore the transforms that were modified by an animation to their initial state. | |
bool | LoadModelData (const std::vector< char > &glbBuffer) |
Load buffer data into the internal Model. | |
bool | BuildModelVTKGeometry () |
Converts the internal Model's loaded data into more convenient vtk objects. | |
std::shared_ptr< Model > | GetInternalModel () |
Get the internal Model. | |
virtual std::vector< std::string > | GetSupportedExtensions () |
Get the list of extensions that are supported by this loader. | |
const std::vector< std::string > & | GetUsedExtensions () |
Get the list of extensions that are used by the current model. | |
void | BuildGlobalTransforms (unsigned int nodeIndex, vtkSmartPointer< vtkMatrix4x4 > parentTransform) |
Concatenate the current node's local transform to its parent's global transform, storing the resulting transform in the node's globalTransform field. | |
void | BuildGlobalTransforms () |
Build all global transforms. | |
virtual void | PrepareData () |
Some extensions require a preparation on the model before building VTK objects. | |
bool | LoadFileBuffer (VTK_FILEPATH const std::string &fileName, std::vector< char > &glbBuffer) |
Load the binary part of a binary glTF (.glb) file. | |
bool | LoadStreamBuffer (vtkResourceStream *stream, std::vector< char > &glbBuffer) |
Load the binary part of a binary glTF (.glb) file. | |
bool | LoadModelMetaDataFromFile (VTK_FILEPATH const std::string &FileName) |
Reset internal Model struct, and serialize glTF metadata (all json information) into it. | |
bool | LoadModelMetaDataFromStream (vtkResourceStream *stream, vtkURILoader *loader=nullptr) |
Reset internal Model struct, and serialize glTF metadata (all json information) into it. | |
virtual void | SetGLBStart (vtkTypeInt64) |
Set/Get the Stream start, where the GLB starts. | |
virtual vtkTypeInt64 | GetGLBStart () |
Set/Get the Stream start, where the GLB starts. | |
Public Member Functions inherited from vtkObject | |
vtkBaseTypeMacro (vtkObject, vtkObjectBase) | |
virtual void | DebugOn () |
Turn debugging output on. | |
virtual void | DebugOff () |
Turn debugging output off. | |
bool | GetDebug () |
Get the value of the debug flag. | |
void | SetDebug (bool debugFlag) |
Set the value of the debug flag. | |
virtual void | Modified () |
Update the modification time for this object. | |
virtual vtkMTimeType | GetMTime () |
Return this object's modified time. | |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Methods invoked by print to print information about the object including superclasses. | |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
vtkTypeBool | HasObserver (unsigned long event) |
vtkTypeBool | HasObserver (const char *event) |
vtkTypeBool | InvokeEvent (unsigned long event) |
vtkTypeBool | InvokeEvent (const char *event) |
std::string | GetObjectDescription () const override |
The object description printed in messages and PrintSelf output. | |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkCommand * | GetCommand (unsigned long tag) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObserver (vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObservers (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
void | RemoveObservers (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkTypeBool | HasObserver (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
vtkTypeBool | HasObserver (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Overloads to AddObserver that allow developers to add class member functions as callbacks for events. | |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
Allow user to set the AbortFlagOn() with the return value of the callback method. | |
vtkTypeBool | InvokeEvent (unsigned long event, void *callData) |
This method invokes an event and return whether the event was aborted or not. | |
vtkTypeBool | InvokeEvent (const char *event, void *callData) |
This method invokes an event and return whether the event was aborted or not. | |
virtual void | SetObjectName (const std::string &objectName) |
Set/get the name of this object for reporting purposes. | |
virtual std::string | GetObjectName () const |
Set/get the name of this object for reporting purposes. | |
Public Member Functions inherited from vtkObjectBase | |
const char * | GetClassName () const |
Return the class name as a string. | |
virtual std::string | GetObjectDescription () const |
The object description printed in messages and PrintSelf output. | |
virtual vtkTypeBool | IsA (const char *name) |
Return 1 if this class is the same type of (or a subclass of) the named class. | |
virtual vtkIdType | GetNumberOfGenerationsFromBase (const char *name) |
Given the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). | |
virtual void | Delete () |
Delete a VTK object. | |
virtual void | FastDelete () |
Delete a reference to this object. | |
void | InitializeObjectBase () |
void | Print (ostream &os) |
Print an object to an ostream. | |
void | Register (vtkObjectBase *o) |
Increase the reference count (mark as used by another object). | |
virtual void | UnRegister (vtkObjectBase *o) |
Decrease the reference count (release by another object). | |
int | GetReferenceCount () |
Return the current reference count of this object. | |
void | SetReferenceCount (int) |
Sets the reference count. | |
bool | GetIsInMemkind () const |
A local state flag that remembers whether this object lives in the normal or extended memory space. | |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. | |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. | |
virtual bool | UsesGarbageCollector () const |
Indicate whether the class uses vtkGarbageCollector or not. | |
Static Public Member Functions | |
static vtkGLTFDocumentLoader * | New () |
static vtkTypeBool | IsTypeOf (const char *type) |
static vtkGLTFDocumentLoader * | SafeDownCast (vtkObjectBase *o) |
static unsigned int | GetNumberOfComponentsForType (vtkGLTFDocumentLoader::AccessorType type) |
Returns the number of components for a given accessor type. | |
static void | ComputeJointMatrices (const Model &model, const Skin &skin, Node &node, std::vector< vtkSmartPointer< vtkMatrix4x4 > > &jointMats) |
Compute all joint matrices of the skin of a specific node. | |
Static Public Member Functions inherited from vtkObject | |
static vtkObject * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. | |
static void | BreakOnError () |
This method is called when vtkErrorMacro executes. | |
static void | SetGlobalWarningDisplay (vtkTypeBool val) |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static void | GlobalWarningDisplayOn () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static void | GlobalWarningDisplayOff () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
static vtkTypeBool | GetGlobalWarningDisplay () |
This is a global flag that controls whether any debug, warning or error messages are displayed. | |
Static Public Member Functions inherited from vtkObjectBase | |
static vtkTypeBool | IsTypeOf (const char *name) |
Return 1 if this class type is the same type of (or a subclass of) the named class. | |
static vtkIdType | GetNumberOfGenerationsFromBaseType (const char *name) |
Given a the name of a base class of this class type, return the distance of inheritance between this class type and the named class (how many generations of inheritance are there between this class and the named class). | |
static vtkObjectBase * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. | |
static void | SetMemkindDirectory (const char *directoryname) |
The name of a directory, ideally mounted -o dax, to memory map an extended memory space within. | |
static bool | GetUsingMemkind () |
A global state flag that controls whether vtkObjects are constructed in the usual way (the default) or within the extended memory space. | |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkGLTFDocumentLoader ()=default | |
~vtkGLTFDocumentLoader () override=default | |
Protected Member Functions inherited from vtkObject | |
vtkObject () | |
~vtkObject () override | |
void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr) |
These methods allow a command to exclusively grab all events. | |
void | InternalReleaseFocus () |
These methods allow a command to exclusively grab all events. | |
Protected Member Functions inherited from vtkObjectBase | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | RegisterInternal (vtkObjectBase *, vtkTypeBool check) |
virtual void | UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) |
virtual void | ReportReferences (vtkGarbageCollector *) |
virtual void | ObjectFinalize () |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Additional Inherited Members | |
Static Protected Member Functions inherited from vtkObjectBase | |
static vtkMallocingFunction | GetCurrentMallocFunction () |
static vtkReallocingFunction | GetCurrentReallocFunction () |
static vtkFreeingFunction | GetCurrentFreeFunction () |
static vtkFreeingFunction | GetAlternateFreeFunction () |
Protected Attributes inherited from vtkObject | |
bool | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
std::string | ObjectName |
Protected Attributes inherited from vtkObjectBase | |
std::atomic< int32_t > | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
Deserialize a GLTF model file.
vtkGLTFDocument loader is an internal utility class which defines data structures and functions with the purpose of deserializing a glTF model from a glTF file, loading its data from binary buffers and creating vtk objects with the extracted geometry. It contains an internal Model structure into which all loading is performed.
The GL Transmission Format (glTF) is an API-neutral runtime asset delivery format. A glTF asset is represented by:
For the full specification, see: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0
Definition at line 53 of file vtkGLTFDocumentLoader.h.
Definition at line 57 of file vtkGLTFDocumentLoader.h.
|
strong |
Define an openGL draw target.
Enumerator | |
---|---|
ARRAY_BUFFER | |
ELEMENT_ARRAY_BUFFER |
Definition at line 63 of file vtkGLTFDocumentLoader.h.
|
strong |
Defines an accessor's type.
These are defined as strings in the glTF specification. Each type implies a specific number of components.
Enumerator | |
---|---|
SCALAR | |
VEC2 | |
VEC3 | |
VEC4 | |
MAT2 | |
MAT3 | |
MAT4 | |
INVALID |
Definition at line 73 of file vtkGLTFDocumentLoader.h.
|
strong |
Define a type for different data components.
Values match with the corresponding GLenum, as they are used in the glTF specification.
Enumerator | |
---|---|
BYTE | |
UNSIGNED_BYTE | |
SHORT | |
UNSIGNED_SHORT | |
UNSIGNED_INT | |
FLOAT |
Definition at line 89 of file vtkGLTFDocumentLoader.h.
|
protecteddefault |
|
overrideprotecteddefault |
|
static |
|
static |
|
virtual |
Return 1 if this class is the same type of (or a subclass of) the named class.
Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkObjectBase.
|
static |
|
protectedvirtual |
vtkGLTFDocumentLoader * vtkGLTFDocumentLoader::NewInstance | ( | ) | const |
|
overridevirtual |
Methods invoked by print to print information about the object including superclasses.
Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from vtkObjectBase.
bool vtkGLTFDocumentLoader::ApplyAnimation | ( | float | t, |
int | animationId, | ||
bool | forceStep = false |
||
) |
Apply the specified animation, at the specified time value t, to the internal Model.
Changes node transforms and morphing weights.
void vtkGLTFDocumentLoader::ResetAnimation | ( | int | animationId | ) |
Restore the transforms that were modified by an animation to their initial state.
bool vtkGLTFDocumentLoader::LoadFileBuffer | ( | VTK_FILEPATH const std::string & | fileName, |
std::vector< char > & | glbBuffer | ||
) |
Load the binary part of a binary glTF (.glb) file.
Input can either be a file (LoadFileBuffer) or a stream (LoadStreamBuffer).
bool vtkGLTFDocumentLoader::LoadStreamBuffer | ( | vtkResourceStream * | stream, |
std::vector< char > & | glbBuffer | ||
) |
Load the binary part of a binary glTF (.glb) file.
Input can either be a file (LoadFileBuffer) or a stream (LoadStreamBuffer).
bool vtkGLTFDocumentLoader::LoadModelMetaDataFromFile | ( | VTK_FILEPATH const std::string & | FileName | ) |
Reset internal Model struct, and serialize glTF metadata (all json information) into it.
To load buffers, use LoadModelData. Input can either be a file (LoadModelMetaDataFromFile) or a stream + optional URI loader.
true
if internal model is correctly filled, false
otherwise. bool vtkGLTFDocumentLoader::LoadModelMetaDataFromStream | ( | vtkResourceStream * | stream, |
vtkURILoader * | loader = nullptr |
||
) |
Reset internal Model struct, and serialize glTF metadata (all json information) into it.
To load buffers, use LoadModelData. Input can either be a file (LoadModelMetaDataFromFile) or a stream + optional URI loader.
true
if internal model is correctly filled, false
otherwise. bool vtkGLTFDocumentLoader::LoadModelData | ( | const std::vector< char > & | glbBuffer | ) |
Load buffer data into the internal Model.
bool vtkGLTFDocumentLoader::BuildModelVTKGeometry | ( | ) |
Converts the internal Model's loaded data into more convenient vtk objects.
|
static |
Returns the number of components for a given accessor type.
|
virtual |
Get the list of extensions that are supported by this loader.
const std::vector< std::string > & vtkGLTFDocumentLoader::GetUsedExtensions | ( | ) |
Get the list of extensions that are used by the current model.
void vtkGLTFDocumentLoader::BuildGlobalTransforms | ( | unsigned int | nodeIndex, |
vtkSmartPointer< vtkMatrix4x4 > | parentTransform | ||
) |
Concatenate the current node's local transform to its parent's global transform, storing the resulting transform in the node's globalTransform field.
Then does the same for the current node's children. Recursive.
void vtkGLTFDocumentLoader::BuildGlobalTransforms | ( | ) |
Build all global transforms.
|
static |
Compute all joint matrices of the skin of a specific node.
|
inlinevirtual |
Some extensions require a preparation on the model before building VTK objects.
For example, a subclass supporting KHR_draco_mesh_compression could override this function to consume the extension metadata and modify the internal model. This is not done in VTK yet which does not modify the internal model once read.
Definition at line 609 of file vtkGLTFDocumentLoader.h.
|
virtual |
Set/Get the Stream start, where the GLB starts.
By default it is 0, but can be different than 0 for file formats have a GLB embeded in it, for instance 3D Tiles B3DM.
|
virtual |
Set/Get the Stream start, where the GLB starts.
By default it is 0, but can be different than 0 for file formats have a GLB embeded in it, for instance 3D Tiles B3DM.