Browse Source

Fixed normals transform.

Vicente Penades 6 years ago
parent
commit
9d1403ef80
2 changed files with 34 additions and 27 deletions
  1. 4 4
      src/SharpGLTF.Core/Transforms/MeshTransforms.cs
  2. 30 23
      tests/SharpGLTF.Tests/Plotting.cs

+ 4 - 4
src/SharpGLTF.Core/Transforms/MeshTransforms.cs

@@ -239,16 +239,16 @@ namespace SharpGLTF.Transforms
         {
             normal = MorphVectors(normal, morphTargets);
 
-            return V3.Normalize(V3.Transform(normal, _WorldMatrix));
+            return V3.Normalize(V3.TransformNormal(normal, _WorldMatrix));
         }
 
         public V4 TransformTangent(V4 tangent, V3[] morphTargets, in SparseWeight8 skinWeights)
         {
-            var n = MorphVectors(new V3(tangent.X, tangent.Y, tangent.Z), morphTargets);
+            var t = MorphVectors(new V3(tangent.X, tangent.Y, tangent.Z), morphTargets);
 
-            n = V3.Normalize(V3.Transform(n, _WorldMatrix));
+            t = V3.Normalize(V3.TransformNormal(t, _WorldMatrix));
 
-            return new V4(n, tangent.W);
+            return new V4(t, tangent.W);
         }
 
         #endregion

+ 30 - 23
tests/SharpGLTF.Tests/Plotting.cs

@@ -132,37 +132,44 @@ namespace SharpGLTF
 
                 var bounds = GetBounds(series);
 
-                using (var pl = new PLplot.PLStream())
+                try
                 {
-                    pl.sdev("pngcairo");
-                    pl.sfnam(filePath);
-                    pl.spal0("cmap0_alternate.pal");
+                    using (var pl = new PLplot.PLStream())
+                    {
+                        pl.sdev("pngcairo");
+                        pl.sfnam(filePath);
+                        pl.spal0("cmap0_alternate.pal");
 
-                    pl.init();
+                        pl.init();
 
-                    pl.env(bounds.Item1.X, bounds.Item2.X, bounds.Item1.Y, bounds.Item2.Y, PLplot.AxesScale.Independent, PLplot.AxisBox.BoxTicksLabelsAxes);
+                        pl.env(bounds.Item1.X, bounds.Item2.X, bounds.Item1.Y, bounds.Item2.Y, PLplot.AxesScale.Independent, PLplot.AxisBox.BoxTicksLabelsAxes);
 
-                    for (int i = 0; i < series.Length; ++i)
-                    {
-                        var ps = series[i];
-                        var s = ps._Points;
+                        for (int i = 0; i < series.Length; ++i)
+                        {
+                            var ps = series[i];
+                            var s = ps._Points;
 
-                        var seriesX = new double[s.Count];
-                        var seriesY = new double[s.Count];
+                            var seriesX = new double[s.Count];
+                            var seriesY = new double[s.Count];
 
-                        for(int j=0; j < s.Count; ++j)
-                        {
-                            seriesX[j] = s[j].X;
-                            seriesY[j] = s[j].Y;
-                        }
+                            for (int j = 0; j < s.Count; ++j)
+                            {
+                                seriesX[j] = s[j].X;
+                                seriesY[j] = s[j].Y;
+                            }
 
-                        pl.col0(i + 2);
+                            pl.col0(i + 2);
 
-                        if (ps.LineType == LineType.Continuous) pl.line(seriesX, seriesY);
-                        else pl.poin(seriesX, seriesY, (char)ps.LineType);
-                    }
+                            if (ps.LineType == LineType.Continuous) pl.line(seriesX, seriesY);
+                            else pl.poin(seriesX, seriesY, (char)ps.LineType);
+                        }
 
-                    pl.eop(); // write to disk
+                        pl.eop(); // write to disk
+                    }
+                }
+                catch
+                {
+                    NUnit.Framework.TestContext.WriteLine("PLPlot not supported.");
                 }
             }
 
@@ -297,7 +304,7 @@ namespace SharpGLTF
 
             Plotting.Point2Series.DrawToFile(fileName, series.ToArray());
 
-            NUnit.Framework.TestContext.AddTestAttachment(fileName);
+            if (System.IO.File.Exists(fileName)) NUnit.Framework.TestContext.AddTestAttachment(fileName);
         }
     }
 }