vpenades / SharpGLTF

glTF reader and writer for .NET Standard
MIT License
454 stars 72 forks source link

[BUG] Accessors with sparse storage but without bufferView fail validation #202

Open seberoth opened 7 months ago

seberoth commented 7 months ago

Describe the bug If a accessor uses sparse storage but hasn't defined a bufferView, the validation fails with Message: Accessor[13] _bufferView: must be defined. The gltf spec says thats allowed but the accessor MUST be initialized with zeros.

GLTF 2.0 Accessor specs

To Reproduce Example glb file is attached

please complete the following information:

example accessor

    {
      "componentType": 5126,
      "count": 7251,
      "sparse": {
        "count": 5920,
        "indices": {
          "bufferView": 13,
          "componentType": 5123
        },
        "values": {
          "bufferView": 14
        }
      },
      "type": "VEC3"
    }

a0_005_ma__strongarms_int_l.zip

EDIT: Probably related Blender GLTF plugin commit: https://github.com/KhronosGroup/glTF-Blender-IO/commit/9ea179aacb8b93efbca78af723745e73f4c61e86

vpenades commented 7 months ago

Yes, this is a known issue; for some reason I don't undersand (and I don't fully agree) Khronos accepts glTF with missing buffers as valid.

The problem is that supporting missing buffers breaks some stuff inside the APIs, so I am still reasearching for a proper solution.

vpenades commented 7 months ago

I recalled I already asked about this issue here https://github.com/KhronosGroup/glTF-Validator/issues/189

I'll investigate a solution...