Skip to content

Conversation

@buhman
Copy link

@buhman buhman commented Jan 2, 2026

"The library will do this for you, so you don't need to know any of this" is completely irrelevant and borderline hostile to what should be the target audience of this article: people trying to work with GLTF data directly.

"The library will do this for you, so you don't need to know any of this" is completely irrelevant and borderline hostile to what should be the target audience of this article: people trying to work with GLTF data directly.
@javagl
Copy link
Contributor

javagl commented Jan 2, 2026

The majority of the tutorial is very narrowly focussed on explaining what is contained in the JSON+binary files. After reading the tutorial, people can understand the structure of glTF, and could, for example, create a glTF reader or writer.

There are hardly any implementation-level hints or pseudocode. Things like the computation of a global transform of a node are straightforward for anyone familiar with 3D graphics, and things like a proper implementation of a PBR shader are far too complex and too low-level to unfold them here.

The "Vertex skinning implementation" section is basically the only section that goes a bit more into implementation details. People (including me) have been struggling with understanding the meaning and usage of the skinning data - there has been quite some iteration on this section - mostly linked from and to #64 - which I see as a hint that it's important to include this information.

At the same time, I think that it makes sense to introduce this section with a disclaimer. People can read and write glTF data - for example, to implement a glTF loader for their favorite game engine - without ever having to write a single line of shader code. (And if they wanted to actually implement a glTF renderer with vertex skinning, from scratch, the information from the given section would only cover the bare minimum of what they need to know, but could still help to get it right...)

@buhman
Copy link
Author

buhman commented Jan 4, 2026

People can read and write glTF data - for example, to implement a glTF loader for their favorite game engine - without ever having to write a single line of shader code

This is not a reasonable statement--it incorrectly assumes:

  • the game engine already has some sort of abstraction for skinned animation
  • the game engine's skinned animation abstraction obviously and cleanly maps 1-to-1 with the structure of GLTF skinned animation data

People (including me) have been struggling with understanding the meaning and usage of the skinning data

I agree. Why then does it make sense to make statements like "Users of existing rendering libraries will hardly ever have to manually process the vertex skinning data contained in a glTF asset". Clearly we're all here because we want to process vertex skinning data, otherwise we wouldn't be reading the article.

@javagl
Copy link
Contributor

javagl commented Jan 4, 2026

Part of the reason why this statement is made might be e73f143#diff-0371bc59d64491a01b1e2aea5eb6e99748b546ff5a87c0ff5397819f4f2fc0d8R285 : When the tutorial was originally written, the shader code was still contained in the asset itself.

Looking at importers in BabylonJS, Godot, or ThreeJS, none of them are dealing with shader code - they usually do have representations of skinned meshes, and their importers aim at translating the structures from glTF into the structure that they already defined (with BabylonJS having a dedicated deep dive about the differences).

I don't see any value in removing that statement. Others might disagree, and merge this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants