Browse Source

fixed tangent and normal generation

Vicente Penades 6 years ago
parent
commit
ce8e4c01d5

+ 4 - 2
src/SharpGLTF.Toolkit/Schema2/MeshExtensions.cs

@@ -486,7 +486,8 @@ namespace SharpGLTF.Schema2
             {
                 var prims = primitives
                     .Where(p => p.Item2.Normals == null)
-                    .Select(p => (p.Item2, p.Item3));
+                    .Select(p => (p.Item2, p.Item3))
+                    .ToList();
 
                 if (prims.Any()) VertexBufferColumns.CalculateSmoothNormals(prims);
             }
@@ -495,7 +496,8 @@ namespace SharpGLTF.Schema2
             {
                 var prims = primitives
                     .Where(p => p.Item2.Tangents == null && p.Item2.TexCoords0 != null)
-                    .Select(p => (p.Item2, p.Item3));
+                    .Select(p => (p.Item2, p.Item3))
+                    .ToList();
 
                 if (prims.Any()) VertexBufferColumns.CalculateTangents(prims);
             }

+ 14 - 0
tests/SharpGLTF.Tests/Schema2/LoadAndSave/LoadSpecialModelsTest.cs

@@ -95,5 +95,19 @@ namespace SharpGLTF.Schema2.LoadAndSave
             var model = ModelRoot.Load(path);
             Assert.NotNull(model);
         }
+
+        [Test]
+        public void LoadGeneratedTangetsTest()
+        {
+            TestContext.CurrentContext.AttachShowDirLink();
+
+            var path = TestFiles.GetSampleModelsPaths().FirstOrDefault(item => item.EndsWith("NormalTangentTest.glb"));
+
+            var model = ModelRoot.Load(path);
+
+            var tris = model.DefaultScene
+                .EvaluateTriangles<Geometry.VertexTypes.VertexPositionNormalTangent, Geometry.VertexTypes.VertexTexture1>()
+                .ToArray();
+        }
     }
 }