|
@@ -60,7 +60,7 @@ using namespace Assimp;
|
|
|
|
|
|
class utglTF2ImportExport : public AbstractImportExportBase {
|
|
class utglTF2ImportExport : public AbstractImportExportBase {
|
|
public:
|
|
public:
|
|
- virtual bool importerMatTest(const char *file, bool spec_gloss, std::array<aiTextureMapMode, 2> exp_modes = { aiTextureMapMode_Wrap, aiTextureMapMode_Wrap }) {
|
|
|
|
|
|
+ virtual bool importerMatTest(const char *file, bool spec, bool gloss, std::array<aiTextureMapMode, 2> exp_modes = { aiTextureMapMode_Wrap, aiTextureMapMode_Wrap }) {
|
|
Assimp::Importer importer;
|
|
Assimp::Importer importer;
|
|
const aiScene *scene = importer.ReadFile(file, aiProcess_ValidateDataStructure);
|
|
const aiScene *scene = importer.ReadFile(file, aiProcess_ValidateDataStructure);
|
|
EXPECT_NE(scene, nullptr);
|
|
EXPECT_NE(scene, nullptr);
|
|
@@ -105,16 +105,19 @@ public:
|
|
|
|
|
|
aiColor3D spec_color = { 0, 0, 0 };
|
|
aiColor3D spec_color = { 0, 0, 0 };
|
|
ai_real glossiness = ai_real(0.5);
|
|
ai_real glossiness = ai_real(0.5);
|
|
- if (spec_gloss) {
|
|
|
|
|
|
+ if (spec) {
|
|
EXPECT_EQ(aiReturn_SUCCESS, material->Get(AI_MATKEY_COLOR_SPECULAR, spec_color));
|
|
EXPECT_EQ(aiReturn_SUCCESS, material->Get(AI_MATKEY_COLOR_SPECULAR, spec_color));
|
|
constexpr ai_real spec_val(0.20000000298023225); // From the file
|
|
constexpr ai_real spec_val(0.20000000298023225); // From the file
|
|
EXPECT_EQ(spec_val, spec_color.r);
|
|
EXPECT_EQ(spec_val, spec_color.r);
|
|
EXPECT_EQ(spec_val, spec_color.g);
|
|
EXPECT_EQ(spec_val, spec_color.g);
|
|
EXPECT_EQ(spec_val, spec_color.b);
|
|
EXPECT_EQ(spec_val, spec_color.b);
|
|
|
|
+ } else {
|
|
|
|
+ EXPECT_EQ(aiReturn_FAILURE, material->Get(AI_MATKEY_COLOR_SPECULAR, spec_color));
|
|
|
|
+ }
|
|
|
|
+ if (gloss) {
|
|
EXPECT_EQ(aiReturn_SUCCESS, material->Get(AI_MATKEY_GLOSSINESS_FACTOR, glossiness));
|
|
EXPECT_EQ(aiReturn_SUCCESS, material->Get(AI_MATKEY_GLOSSINESS_FACTOR, glossiness));
|
|
EXPECT_EQ(ai_real(1.0), glossiness);
|
|
EXPECT_EQ(ai_real(1.0), glossiness);
|
|
} else {
|
|
} else {
|
|
- EXPECT_EQ(aiReturn_FAILURE, material->Get(AI_MATKEY_COLOR_SPECULAR, spec_color));
|
|
|
|
EXPECT_EQ(aiReturn_FAILURE, material->Get(AI_MATKEY_GLOSSINESS_FACTOR, glossiness));
|
|
EXPECT_EQ(aiReturn_FAILURE, material->Get(AI_MATKEY_GLOSSINESS_FACTOR, glossiness));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -143,7 +146,7 @@ public:
|
|
};
|
|
};
|
|
|
|
|
|
TEST_F(utglTF2ImportExport, importglTF2FromFileTest) {
|
|
TEST_F(utglTF2ImportExport, importglTF2FromFileTest) {
|
|
- EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF/BoxTextured.gltf", false, {aiTextureMapMode_Mirror, aiTextureMapMode_Clamp}));
|
|
|
|
|
|
+ EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF/BoxTextured.gltf", false, false, {aiTextureMapMode_Mirror, aiTextureMapMode_Clamp}));
|
|
}
|
|
}
|
|
|
|
|
|
TEST_F(utglTF2ImportExport, importBinaryglTF2FromFileTest) {
|
|
TEST_F(utglTF2ImportExport, importBinaryglTF2FromFileTest) {
|
|
@@ -151,7 +154,7 @@ TEST_F(utglTF2ImportExport, importBinaryglTF2FromFileTest) {
|
|
}
|
|
}
|
|
|
|
|
|
TEST_F(utglTF2ImportExport, importglTF2_KHR_materials_pbrSpecularGlossiness) {
|
|
TEST_F(utglTF2ImportExport, importglTF2_KHR_materials_pbrSpecularGlossiness) {
|
|
- EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured.gltf", true));
|
|
|
|
|
|
+ EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured.gltf", true, true));
|
|
}
|
|
}
|
|
|
|
|
|
void VerifyClearCoatScene(const aiScene *scene) {
|
|
void VerifyClearCoatScene(const aiScene *scene) {
|
|
@@ -223,13 +226,16 @@ TEST_F(utglTF2ImportExport, importglTF2AndExport_KHR_materials_pbrSpecularGlossi
|
|
// Export with specular glossiness disabled
|
|
// Export with specular glossiness disabled
|
|
EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "glb2", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb"));
|
|
EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "glb2", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb"));
|
|
|
|
|
|
|
|
+ // And re-import
|
|
|
|
+ EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb", true, false));
|
|
|
|
+
|
|
// Export with specular glossiness enabled
|
|
// Export with specular glossiness enabled
|
|
ExportProperties props;
|
|
ExportProperties props;
|
|
props.SetPropertyBool(AI_CONFIG_USE_GLTF_PBR_SPECULAR_GLOSSINESS, true);
|
|
props.SetPropertyBool(AI_CONFIG_USE_GLTF_PBR_SPECULAR_GLOSSINESS, true);
|
|
EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "glb2", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb", 0, &props));
|
|
EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "glb2", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb", 0, &props));
|
|
|
|
|
|
// And re-import
|
|
// And re-import
|
|
- EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb", true));
|
|
|
|
|
|
+ EXPECT_TRUE(importerMatTest(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-pbrSpecularGlossiness/BoxTextured_out.glb", true, true));
|
|
}
|
|
}
|
|
|
|
|
|
TEST_F(utglTF2ImportExport, importglTF2AndExportToOBJ) {
|
|
TEST_F(utglTF2ImportExport, importglTF2AndExportToOBJ) {
|