Repository navigation
KHR_skeleton_bone - #2626
KHR_skeleton_bone#2626aaronfranke wants to merge 1 commit into
Conversation
|
The list of requirements in
"Stricter Skin Definitions": #1669
"Sharing skeletons between two skinned mesh": #1285 Brief discussion here, but the main point discussed there is that stricter skeleton definitions are needed but should be done by an extension. "Stricter Skinning Requirements": #1665
"Stricter Skinning Requirements" comment from @reduz: #1665 (comment)
The point of "A mesh must only be able to bind to a single skin" is not relevant, since glTF nodes can only have one "Stricter Skinning Requirements" comment from @marstaik: #1665 (comment) Marstaik's entire comment is worth a read, but his conclusion is this:
For any of these, please let me know if you would like me to tweak the wording of |
7227195 to
f595daf
Compare
f595daf to
a5b63bd
Compare
This pull request proposes a new extension,
KHR_skeleton_bone. This extension serves to solve multiple problems at once with skeleton bones. Broadly, two categories:It allows for the definition of bone length and connectivity.
It provides a stronger definition of bones and skeletons.
KHR_skeleton_boneinstead ofnodeto structurally restrict its scope, depending onKHR_skeleton_bone's requirements rather than its own prose.Both of these categories are important common needs that have been requested by many parties over the years, but have not been pushed to the finish line. This extension is a proposal to finally address the needs of skeleton bone style skinning in glTF in a comprehensive and strict way.
This extension is intended to be always optional. Applications that do not care about bone length, bone connectivity, or the stricter hierarchy can ignore this extension entirely, loading it as a normal glTF file with skinned meshes and joint hierarchies. Applications that do care about having strict skeletons and bones can export with this extension to indicate their compliance and semantic meaning. Asset authors that do not wish to be restricted to these requirements can choose to not use this extension. These restrictions are not desired by some parts of the glTF ecosystem, and therefore this should be an optional extension, not required, nor part of the core glTF specification.
I am proposing that these properties and requirements be defined in the same extension because the strict requirements for bones depend on the ability to clearly define bones, and the requirements of applications that need clearly defined bones are usually these requirements. For example, if we want to declare that the bone hierarchy is contiguous, what happens if a glTF node that isn't used as a joint is in the middle of the bone hierarchy? We could require that the node be used as a joint, but that would be strange if the node has no skinning influence over any mesh.
KHR_skeleton_boneprovides an alternative way to explicitly mark that node as a bone. Assets specifyingKHR_skeleton_boneon each bone node would also make the requirements easier to validate just by looking at thenodesarray. It is also reasonable to propose these as two separate extensions if the community feels that is more appropriate, but then each would need to indicate their interaction with the other. I think it is better to have them together in one extension.