Merge branch 'master' into GLTF2_recursive_references_fix

pull/3070/head
Max Vollmer (Microsoft Havok) 2020-03-26 10:16:58 +00:00 committed by GitHub
commit 3c9751ce0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 2 deletions

View File

@ -952,8 +952,8 @@ aiNode *ImportNode(aiScene *pScene, glTF2::Asset &r, std::vector<unsigned int> &
void glTF2Importer::ImportNodes(glTF2::Asset &r) { void glTF2Importer::ImportNodes(glTF2::Asset &r) {
if (!r.scene) { if (!r.scene) {
return; throw DeadlyImportError("GLTF: No scene");
} }
std::vector<Ref<Node>> rootNodes = r.scene->nodes; std::vector<Ref<Node>> rootNodes = r.scene->nodes;
@ -970,6 +970,8 @@ void glTF2Importer::ImportNodes(glTF2::Asset &r) {
root->mChildren[root->mNumChildren++] = node; root->mChildren[root->mNumChildren++] = node;
} }
mScene->mRootNode = root; mScene->mRootNode = root;
} else {
mScene->mRootNode = new aiNode("ROOT");
} }
} }

View File

@ -0,0 +1,6 @@
{
"asset": {
"version": "2.0"
},
"scene": 0
}

View File

@ -0,0 +1,10 @@
{
"asset": {
"version": "2.0"
},
"scene": 0,
"scenes": [
{
}
]
}

View File

@ -496,3 +496,16 @@ TEST_F(utglTF2ImportExport, recursive_nodes) {
const aiScene* scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/RecursiveNodes/RecursiveNodes.gltf", aiProcess_ValidateDataStructure); const aiScene* scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/RecursiveNodes/RecursiveNodes.gltf", aiProcess_ValidateDataStructure);
EXPECT_EQ(nullptr, scene); EXPECT_EQ(nullptr, scene);
} }
TEST_F(utglTF2ImportExport, norootnode_noscene) {
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/TestNoRootNode/NoScene.gltf", aiProcess_ValidateDataStructure);
ASSERT_EQ(scene, nullptr);
}
TEST_F(utglTF2ImportExport, norootnode_scenewithoutnodes) {
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/TestNoRootNode/SceneWithoutNodes.gltf", aiProcess_ValidateDataStructure);
ASSERT_NE(scene, nullptr);
ASSERT_NE(scene->mRootNode, nullptr);
}