Component type for paint in glb file

I get bad colors importing glb files (using the tiny_gltf library GitHub - syoyo/tinygltf: Header only C++11 tiny glTF 2.0 library)

Vertex paint is of type VEC3 in the json part of Nomad glb’s, in the actual data it seems to be of type VEC4 (3 floats + 1 zero). Import works fine if I edit the glb to VEC4.

Note it could also be a bug in the tiny_gltf library (which might be adding the extra 0) .

A good way to quickly test:

Concerning colors in layers, gltf-validator has a bug on their side (I told them so but I think they forgot about it). The khronos viewer had the same bug but it has been fixed.


Otherwise if it’s a recent Nomad file with no issue, yes it’s a bug in tinygltf.

VEC3 is the accessor, but it’s the “byteStride” that drives the padding between elements.
Plus, in Nomad’s case I export COLOR_0 in 16bit (not float) so the glTF spec forces me to add an extra padding element for 32 for alignment purpose.

2 Likes

Thanks! The bug is probably in the importer that used tinygltf. Reported here