This model was reported as not working in three.js, and it doesn't appear to work in the Sample Viewer either. The buffer layout has a single mesh primitive with several vertex attributes, which are interleaved, but each attribute accessor has its own buffer view — rather than setting byteOffset on each accessor, a byteOffset is assigned to the accessor's unique buffer view.
This passes the validator, and seems valid according to the spec too. It's not a data layout I'd want to encourage, but the bug it identified in three.js could technically happen in some reasonable cases too, so maybe it's worth including a test case here.
It appears to work in BabylonJS already, although the accessor three.js failed on was (by chance) an unused UV set, so if BabylonJS ignores unused UVs it might have dodged the issue entirely that way.
bloc1.glb.zip
donmccurdy/three-gltf-viewer#202
This model was reported as not working in three.js, and it doesn't appear to work in the Sample Viewer either. The buffer layout has a single mesh primitive with several vertex attributes, which are interleaved, but each attribute accessor has its own buffer view — rather than setting
byteOffseton each accessor, abyteOffsetis assigned to the accessor's unique buffer view.This passes the validator, and seems valid according to the spec too. It's not a data layout I'd want to encourage, but the bug it identified in three.js could technically happen in some reasonable cases too, so maybe it's worth including a test case here.
It appears to work in BabylonJS already, although the accessor three.js failed on was (by chance) an unused UV set, so if BabylonJS ignores unused UVs it might have dodged the issue entirely that way.
bloc1.glb.zip
donmccurdy/three-gltf-viewer#202