2017-08-24 21:15:48 +00:00
/*
Open Asset Import Library ( assimp )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2024-02-23 21:30:05 +00:00
Copyright ( c ) 2006 - 2024 , assimp team
2018-01-28 18:42:05 +00:00
2017-08-24 21:15:48 +00:00
All rights reserved .
Redistribution and use of this software in source and binary forms ,
with or without modification , are permitted provided that the
following conditions are met :
* Redistributions of source code must retain the above
copyright notice , this list of conditions and the
following disclaimer .
* Redistributions in binary form must reproduce the above
copyright notice , this list of conditions and the
following disclaimer in the documentation and / or other
materials provided with the distribution .
* Neither the name of the assimp team , nor the names of its
contributors may be used to endorse or promote products
derived from this software without specific prior
written permission of the assimp team .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
" AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT
LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE ,
DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
# ifndef AI_GLTF2IMPORTER_H_INC
# define AI_GLTF2IMPORTER_H_INC
2018-01-06 00:18:33 +00:00
# include <assimp/BaseImporter.h>
2023-05-08 18:04:38 +00:00
# include <AssetLib/glTF2/glTF2Asset.h>
2017-08-24 21:15:48 +00:00
struct aiNode ;
2021-09-13 20:38:20 +00:00
namespace glTF2 {
2021-09-14 18:45:36 +00:00
class Asset ;
2017-08-24 21:15:48 +00:00
}
namespace Assimp {
/**
* Load the glTF2 format .
* https : //github.com/KhronosGroup/glTF/tree/master/specification
*/
2021-09-13 20:38:20 +00:00
class glTF2Importer : public BaseImporter {
2017-08-24 21:15:48 +00:00
public :
glTF2Importer ( ) ;
2023-06-08 18:56:14 +00:00
~ glTF2Importer ( ) override = default ;
2021-09-13 20:38:20 +00:00
bool CanRead ( const std : : string & pFile , IOSystem * pIOHandler , bool checkSig ) const override ;
2017-08-24 21:15:48 +00:00
protected :
2021-09-13 20:38:20 +00:00
const aiImporterDesc * GetInfo ( ) const override ;
void InternReadFile ( const std : : string & pFile , aiScene * pScene , IOSystem * pIOHandler ) override ;
2023-01-16 07:12:24 +00:00
void SetupProperties ( const Importer * pImp ) override ;
2017-08-24 21:15:48 +00:00
private :
2021-09-13 20:38:20 +00:00
void ImportEmbeddedTextures ( glTF2 : : Asset & a ) ;
void ImportMaterials ( glTF2 : : Asset & a ) ;
void ImportMeshes ( glTF2 : : Asset & a ) ;
void ImportCameras ( glTF2 : : Asset & a ) ;
void ImportLights ( glTF2 : : Asset & a ) ;
void ImportNodes ( glTF2 : : Asset & a ) ;
void ImportAnimations ( glTF2 : : Asset & a ) ;
void ImportCommonMetadata ( glTF2 : : Asset & a ) ;
2023-05-08 18:04:38 +00:00
aiNode * ImportNode ( glTF2 : : Asset & r , glTF2 : : Ref < glTF2 : : Node > & ptr ) ;
2023-06-08 18:56:14 +00:00
private :
2017-08-24 21:15:48 +00:00
std : : vector < unsigned int > meshOffsets ;
2022-01-18 20:23:43 +00:00
std : : vector < int > mEmbeddedTexIdxs ;
2023-05-08 18:04:38 +00:00
std : : vector < std : : vector < unsigned int > > mVertexRemappingTables ; // for each converted aiMesh in the scene, it stores a list of vertices that are actually used
2021-09-13 20:38:20 +00:00
aiScene * mScene ;
2021-10-06 12:41:45 +00:00
/// An instance of rapidjson::IRemoteSchemaDocumentProvider
void * mSchemaDocumentProvider = nullptr ;
2017-08-24 21:15:48 +00:00
} ;
2021-09-13 20:38:20 +00:00
} // namespace Assimp
2017-08-24 21:15:48 +00:00
# endif // AI_GLTF2IMPORTER_H_INC