Browse Source

Added babylonJS test models

Vicente Penades 6 years ago
parent
commit
ab9026ed41

+ 37 - 20
tests/SharpGLTF.Tests/Schema2/LoadAndSave/LoadSampleTests.cs

@@ -39,34 +39,51 @@ namespace SharpGLTF.Schema2.LoadAndSave
             {
                 if (!f.Contains(section)) continue;
 
-                var perf = System.Diagnostics.Stopwatch.StartNew();                
+                _LoadModel(f);
+            }
+        }
 
-                var model = ModelRoot.Load(f);
-                Assert.NotNull(model);
+        [Test]
+        public void LoadBabylonJsModels()
+        {
+            TestContext.CurrentContext.AttachShowDirLink();
+            TestContext.CurrentContext.AttachGltfValidatorLinks();
 
-                var perf_load = perf.ElapsedMilliseconds;
+            foreach (var f in TestFiles.GetBabylonJSModelsPaths())
+            {
+                _LoadModel(f);
+            }
+        }
 
-                // do a model clone and compare it
-                _AssertAreEqual(model, model.DeepClone());
+        private static void _LoadModel(string f)
+        {
+            var perf = System.Diagnostics.Stopwatch.StartNew();
 
-                var perf_clone= perf.ElapsedMilliseconds;
+            var model = ModelRoot.Load(f);
+            Assert.NotNull(model);
+
+            var perf_load = perf.ElapsedMilliseconds;
 
-                // check extensions used
-                if (!model.ExtensionsUsed.Contains("EXT_lights_image_based"))
-                {
-                    var detectedExtensions = model.RetrieveUsedExtensions().ToArray();
-                    CollectionAssert.AreEquivalent(model.ExtensionsUsed, detectedExtensions);
-                }
-                
-                // Save models
-                model.AttachToCurrentTest(System.IO.Path.ChangeExtension(System.IO.Path.GetFileName(f), ".obj"));
-                var perf_wavefront = perf.ElapsedMilliseconds;
+            // do a model clone and compare it
+            _AssertAreEqual(model, model.DeepClone());
 
-                model.AttachToCurrentTest(System.IO.Path.ChangeExtension(System.IO.Path.GetFileName(f), ".glb"));
-                var perf_glb = perf.ElapsedMilliseconds;
+            var perf_clone = perf.ElapsedMilliseconds;
 
-                TestContext.Progress.WriteLine($"processed {f.ToShortDisplayPath()} - Load:{perf_load}ms Clone:{perf_clone}ms S.obj:{perf_wavefront}ms S.glb:{perf_glb}ms");
+            // check extensions used
+            if (!model.ExtensionsUsed.Contains("EXT_lights_image_based"))
+            {
+                var detectedExtensions = model.RetrieveUsedExtensions().ToArray();
+                CollectionAssert.AreEquivalent(model.ExtensionsUsed, detectedExtensions);
             }
+
+            // Save models
+            model.AttachToCurrentTest(System.IO.Path.ChangeExtension(System.IO.Path.GetFileName(f), ".obj"));
+            var perf_wavefront = perf.ElapsedMilliseconds;
+
+            model.AttachToCurrentTest(System.IO.Path.ChangeExtension(System.IO.Path.GetFileName(f), ".glb"));
+            var perf_glb = perf.ElapsedMilliseconds;
+
+            TestContext.Progress.WriteLine($"processed {f.ToShortDisplayPath()} - Load:{perf_load}ms Clone:{perf_clone}ms S.obj:{perf_wavefront}ms S.glb:{perf_glb}ms");
         }
 
         private static void _AssertAreEqual(ModelRoot a, ModelRoot b)

+ 14 - 1
tests/SharpGLTF.Tests/TestFiles.cs

@@ -21,6 +21,7 @@ namespace SharpGLTF
             _SchemaDir = System.IO.Path.Combine(workingDir, "glTF-Schema");
             _SampleModelsDir = System.IO.Path.Combine(workingDir, "glTF-Sample-Models");
             _PollyModelsDir = System.IO.Path.Combine(workingDir, "glTF-Blender-Exporter");
+            _BabylonJsDir = System.IO.Path.Combine(workingDir, "BabylonJS-MeshesLibrary");
         }
 
         public static void DownloadReferenceModels()
@@ -38,6 +39,7 @@ namespace SharpGLTF
             DownloadUtils.SyncronizeGitRepository("https://github.com/KhronosGroup/glTF-Sample-Models.git", _SampleModelsDir);
             DownloadUtils.SyncronizeGitRepository("https://github.com/KhronosGroup/glTF-Blender-Exporter.git", _PollyModelsDir);            
             DownloadUtils.SyncronizeGitRepository("https://github.com/KhronosGroup/glTF.git", _SchemaDir);
+            DownloadUtils.SyncronizeGitRepository("https://github.com/BabylonJS/MeshesLibrary.git", _BabylonJsDir);
 
             TestContext.Progress.WriteLine("... Download Completed.");
         }
@@ -51,6 +53,7 @@ namespace SharpGLTF
         private static readonly string _SchemaDir;
         private static readonly string _SampleModelsDir;
         private static readonly string _PollyModelsDir;
+        private static readonly string _BabylonJsDir;
 
         private static string _GeneratedModelsDir;        
 
@@ -108,7 +111,17 @@ namespace SharpGLTF
                 .OrderBy(item => item)
                 .Where(item => !item.Contains("\\glTF-Draco\\"))
                 .ToList();
-        }        
+        }
+
+        public static IReadOnlyList<string> GetBabylonJSModelsPaths()
+        {
+            var files = GetModelPathsInDirectory(_BabylonJsDir);
+
+            return files
+                .OrderBy(item => item)
+                .Where(item => !item.Contains("\\AssetGenerator\\0.6\\"))
+                .ToList();
+        }
 
         public static string GetPollyFileModelPath()
         {