Просмотр исходного кода

fixed MESH_PRIMITIVE_ACCESSOR_WITHOUT_BYTESTRIDE gltf validator error

Vicente Penades 6 лет назад
Родитель
Сommit
6d0e5c9d79
2 измененных файлов с 6 добавлено и 3 удалено
  1. 1 1
      src/SharpGLTF.Core/Schema2/gltf.Accessors.cs
  2. 5 2
      src/SharpGLTF.Core/Schema2/gltf.Mesh.cs

+ 1 - 1
src/SharpGLTF.Core/Schema2/gltf.Accessors.cs

@@ -202,7 +202,7 @@ namespace SharpGLTF.Schema2
         {
         {
             Guard.NotNull(src, nameof(src));
             Guard.NotNull(src, nameof(src));
 
 
-            var bv = this.LogicalParent.UseBufferView(src.Data, src.Attribute.ByteStride, BufferMode.ARRAY_BUFFER);
+            var bv = this.LogicalParent.UseBufferView(src.Data, src.Attribute.PaddedByteLength, BufferMode.ARRAY_BUFFER);
 
 
             SetVertexData(bv, src.Attribute.ByteOffset, src.Attribute.ItemsCount, src.Attribute.Dimensions, src.Attribute.Encoding, src.Attribute.Normalized);
             SetVertexData(bv, src.Attribute.ByteOffset, src.Attribute.ItemsCount, src.Attribute.Dimensions, src.Attribute.Encoding, src.Attribute.Normalized);
         }
         }

+ 5 - 2
src/SharpGLTF.Core/Schema2/gltf.Mesh.cs

@@ -43,9 +43,12 @@ namespace SharpGLTF.Schema2
             while (_weights.Count > count) _weights.RemoveAt(_weights.Count - 1);
             while (_weights.Count > count) _weights.RemoveAt(_weights.Count - 1);
             while (_weights.Count < count) _weights.Add(0);
             while (_weights.Count < count) _weights.Add(0);
 
 
-            foreach (var kw in weights.GetIndexedWeights())
+            if (_weights.Count > 0)
             {
             {
-                _weights[kw.Item1] = kw.Item2;
+                foreach (var kw in weights.GetIndexedWeights())
+                {
+                    _weights[kw.Item1] = kw.Item2;
+                }
             }
             }
         }
         }