diff --git a/code/AssetLib/glTF2/glTF2Asset.h b/code/AssetLib/glTF2/glTF2Asset.h index ead8ca1dd..23c19cc58 100644 --- a/code/AssetLib/glTF2/glTF2Asset.h +++ b/code/AssetLib/glTF2/glTF2Asset.h @@ -863,6 +863,7 @@ struct Sampler : public Object { }; struct Scene : public Object { + std::string name; std::vector> nodes; Scene() {} diff --git a/code/AssetLib/glTF2/glTF2Asset.inl b/code/AssetLib/glTF2/glTF2Asset.inl index 2c7e9fc5a..af9a4e94e 100644 --- a/code/AssetLib/glTF2/glTF2Asset.inl +++ b/code/AssetLib/glTF2/glTF2Asset.inl @@ -1400,6 +1400,11 @@ inline void Node::Read(Value &obj, Asset &r) { } inline void Scene::Read(Value &obj, Asset &r) { + if (Value *name = FindString(obj, "name")) { + if (name->IsString()) { + this->name = name->GetString(); + } + } if (Value *array = FindArray(obj, "nodes")) { for (unsigned int i = 0; i < array->Size(); ++i) { if (!(*array)[i].IsUint()) continue; diff --git a/code/AssetLib/glTF2/glTF2Importer.cpp b/code/AssetLib/glTF2/glTF2Importer.cpp index b1ba5b67b..ad0cea221 100644 --- a/code/AssetLib/glTF2/glTF2Importer.cpp +++ b/code/AssetLib/glTF2/glTF2Importer.cpp @@ -1386,6 +1386,7 @@ void glTF2Importer::InternReadFile(const std::string &pFile, aiScene *pScene, IO // read the asset file glTF2::Asset asset(pIOHandler); asset.Load(pFile, GetExtension(pFile) == "glb"); + pScene->mName = asset.scene->name; // // Copy the data out diff --git a/include/assimp/scene.h b/include/assimp/scene.h index a189f5700..2a9a77b02 100644 --- a/include/assimp/scene.h +++ b/include/assimp/scene.h @@ -335,12 +335,15 @@ struct aiScene /** * @brief The global metadata assigned to the scene itself. * - * This data contains global metadata which belongs to the scene like - * unit-conversions, versions, vendors or other model-specific data. This + * This data contains global metadata which belongs to the scene like + * unit-conversions, versions, vendors or other model-specific data. This * can be used to store format-specific metadata as well. */ C_STRUCT aiMetadata* mMetaData; + /** The name of the scene itself. + */ + C_STRUCT aiString mName; #ifdef __cplusplus