diff --git a/IO/Import/Testing/Cxx/CMakeLists.txt b/IO/Import/Testing/Cxx/CMakeLists.txt index adbc456562801b2d364facd6f040f3e0a54a7a50..76cc48a52377dcae9183fe38b55136e1aa19562a 100644 --- a/IO/Import/Testing/Cxx/CMakeLists.txt +++ b/IO/Import/Testing/Cxx/CMakeLists.txt @@ -98,32 +98,41 @@ vtk_add_test_cxx(vtkIOImportCxxTests tests ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporter,TestGLTFImporter.cxx DATA{../Data/glTF/Avocado/Avocado.glb} -1 1 0 0 + TestGLTFImporter,TestGLTFImporter.cxx DATA{../Data/glTF/Avocado/Avocado.glb} 0 -1 1 0 0 +) + +vtk_add_test_cxx(vtkIOImportCxxTests tests + TestGLTFImporterStream,TestGLTFImporter.cxx DATA{../Data/glTF/Avocado/Avocado.glb} 1 -1 1 0 0 +) + +vtk_add_test_cxx(vtkIOImportCxxTests tests + LOOSE_VALID + TestGLTFImporterPBR,TestGLTFImporter.cxx DATA{../Data/glTF/WaterBottle/WaterBottle.glb} 0 -1 1 0 0 ) vtk_add_test_cxx(vtkIOImportCxxTests tests LOOSE_VALID - TestGLTFImporterPBR,TestGLTFImporter.cxx DATA{../Data/glTF/WaterBottle/WaterBottle.glb} -1 1 0 0 + TestGLTFImporterPBRStream,TestGLTFImporter.cxx DATA{../Data/glTF/WaterBottle/WaterBottle.glb} 1 -1 1 0 0 ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporterKHRLightsPunctual,TestGLTFImporter.cxx DATA{../Data/glTF/Lights/lights.gltf} 0 1 5 1 + TestGLTFImporterKHRLightsPunctual,TestGLTFImporter.cxx DATA{../Data/glTF/Lights/lights.gltf} 0 0 1 5 1 ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporterCamera,TestGLTFImporter.cxx DATA{../Data/glTF/Cameras/Cameras.gltf} 1 1 0 2 + TestGLTFImporterCamera,TestGLTFImporter.cxx DATA{../Data/glTF/Cameras/Cameras.gltf} 0 1 1 0 2 ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporterUnlit,TestGLTFImporter.cxx DATA{../Data/glTF/UnlitTest/UnlitTest.glb} -1 2 0 0 + TestGLTFImporterUnlit,TestGLTFImporter.cxx DATA{../Data/glTF/UnlitTest/UnlitTest.glb} 0 -1 2 0 0 ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporterArmature,TestGLTFImporter.cxx DATA{../Data/glTF/Armature.gltf} -1 1 0 0 + TestGLTFImporterArmature,TestGLTFImporter.cxx DATA{../Data/glTF/Armature.gltf} 0 -1 1 0 0 ) vtk_add_test_cxx(vtkIOImportCxxTests tests - TestGLTFImporterURITexture,TestGLTFImporter.cxx DATA{../Data/glTF/Lantern/Lantern.gltf} -1 3 0 0 + TestGLTFImporterURITexture,TestGLTFImporter.cxx DATA{../Data/glTF/Lantern/Lantern.gltf} 0 -1 3 0 0 DATA{../Data/glTF/Lantern/Lantern.bin} DATA{../Data/glTF/Lantern/Lantern_baseColor.png} DATA{../Data/glTF/Lantern/Lantern_emissive.png} diff --git a/IO/Import/Testing/Cxx/TestGLTFImporter.cxx b/IO/Import/Testing/Cxx/TestGLTFImporter.cxx index 400a08d27072a693d0acf7d2cf3aca62ffe88a28..428a1804b0b9f34390f2da72aedbaef6919f76c4 100644 --- a/IO/Import/Testing/Cxx/TestGLTFImporter.cxx +++ b/IO/Import/Testing/Cxx/TestGLTFImporter.cxx @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause +#include <vtkFileResourceStream.h> #include <vtkGLTFImporter.h> #include <vtkLightCollection.h> #include <vtkRegressionTestImage.h> @@ -11,19 +12,42 @@ int TestGLTFImporter(int argc, char* argv[]) { - if (argc < 6) + if (argc < 7) { - std::cout << "Usage: " << argv[0] - << " <gltf file> <camera index> <expected nb of actors> <expected nb of lights> " - "<expected nb of cameras>" - << std::endl; + std::cout + << "Usage: " << argv[0] + << " <gltf file> <use_stream> <camera index> <expected nb of actors> <expected nb of lights> " + "<expected nb of cameras>" + << std::endl; return EXIT_FAILURE; } - vtkIdType cameraIndex = atoi(argv[2]); + vtkIdType cameraIndex = atoi(argv[3]); vtkNew<vtkGLTFImporter> importer; - importer->SetFileName(argv[1]); + if (atoi(argv[2]) > 0) + { + bool is_binary = false; + std::string extension = vtksys::SystemTools::GetFilenameLastExtension(argv[1]); + if (extension == ".glb") + { + is_binary = true; + } + vtkNew<vtkFileResourceStream> file; + file->Open(argv[1]); + if (file->EndOfStream()) + { + std::cerr << "Can not open test file " << argv[1] << std::endl; + return EXIT_FAILURE; + } + importer->SetStream(file); + importer->SetStreamIsBinary(is_binary); + } + else + { + importer->SetFileName(argv[1]); + } + importer->ImportArmatureOn(); vtkNew<vtkRenderWindow> renderWindow; @@ -43,19 +67,19 @@ int TestGLTFImporter(int argc, char* argv[]) return EXIT_FAILURE; } - if (importer->GetImportedActors()->GetNumberOfItems() != atoi(argv[3])) + if (importer->GetImportedActors()->GetNumberOfItems() != atoi(argv[4])) { std::cerr << "ERROR: Unexpected number of imported actors: " << importer->GetImportedActors()->GetNumberOfItems() << "\n"; return EXIT_FAILURE; } - if (importer->GetImportedLights()->GetNumberOfItems() != atoi(argv[4])) + if (importer->GetImportedLights()->GetNumberOfItems() != atoi(argv[5])) { std::cerr << "ERROR: Unexpected number of imported lights: " << importer->GetImportedActors()->GetNumberOfItems() << "\n"; return EXIT_FAILURE; } - if (importer->GetImportedCameras()->GetNumberOfItems() != atoi(argv[5])) + if (importer->GetImportedCameras()->GetNumberOfItems() != atoi(argv[6])) { std::cerr << "ERROR: Unexpected number of imported cameras: " << importer->GetImportedActors()->GetNumberOfItems() << "\n"; diff --git a/IO/Import/Testing/Data/Baseline/TestGLTFImporterPBRStream.png.sha512 b/IO/Import/Testing/Data/Baseline/TestGLTFImporterPBRStream.png.sha512 new file mode 100644 index 0000000000000000000000000000000000000000..62bcd42965736512ddb48103aa12fab14da064af --- /dev/null +++ b/IO/Import/Testing/Data/Baseline/TestGLTFImporterPBRStream.png.sha512 @@ -0,0 +1 @@ +c59b73eff93b98942a8bd18743d71ca6d0d4de001c0c0765a7684b0bc4ca1d3b8b46805854b1f77616407fbdc8fcded7ea777cff4ea511a585a6864970ae5d71 diff --git a/IO/Import/Testing/Data/Baseline/TestGLTFImporterStream.png.sha512 b/IO/Import/Testing/Data/Baseline/TestGLTFImporterStream.png.sha512 new file mode 100644 index 0000000000000000000000000000000000000000..3178a03cbab456700f1943e79e0c9efdde10fb4a --- /dev/null +++ b/IO/Import/Testing/Data/Baseline/TestGLTFImporterStream.png.sha512 @@ -0,0 +1 @@ +a40ba06e652140ed031e7cda5597b2cfa84b42ab2ae05ca068c015432e5302f00c72bea03b2bb9e6532181fb0a33ec4abc7f178ad2292d57cb82d6bc9ee97bf7