KhronosGroup / KhronosGroup/glTF
Skinning use cases and examples
- Dominant language
- HTML
- Stars
- 7.8k
- Forks
- 1.2k
- Avg merge
- 17h 26m
- Merged PRs (30d)
- 5
Description
We currently do not have example assets for many of the less-common situations involving skinning, which has prompted questions about whether they are valid and how to implement them.
Have examples:
- [x] Joint hierarchy is intermixed with non-joint nodes. (https://github.com/donmccurdy/three-gltf-viewer/issues/101)
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=10)
- **NOTES:** Renders in 3/3 web players. Known use cases.
- **ACTION:** None.
- [x] Animation transforming parents of joints (works) or parents of skinned mesh (no effect). (#1195)
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=2)
- **NOTES:** Renders in 3/3 web players. Known use cases.
- **ACTIONS:**
- [ ] Perhaps warn in validator if mesh has ignored transform.
- [ ] Some or all joints are detached from the scene hierarchy (#1383)
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=3)
- **NOTES:** Fails in multiple engines. Plausible use cases are connected to advanced situations, which are likely to require extensions or future work to enable anyway.
- **ACTIONS:**
- [x] Update spec to disallow.
- [ ] Add to asset generator as negative case.
- [ ] Add check to validator.
- [x] Joint hierarchy has no common root. (#1270)
- As discussed, the `skeleton` property should probably be removed, and can already be ignored by implementations. In addition to that, we should have an example asset for which no common root is possible (e.g. bones form two subtrees starting from the scene root).
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=7)
- **ACTION:** If hierarchies without a common root can be implemented consistently, remove `skeleton` property. If not, consider adding restriction that joint hierarchy should have a common root, whether or not `skeleton` property is kept.
- **NOTES:** Renders in web players. Very likely to break on import to DCC tools. Use cases are not very clear... leaning to disallow this use. Decision on `skeleton` TBD.
- [x] Multiple meshes sharing a single skin. (#1285)
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=6)
- **ACTIONS:** None.
- **NOTES:** Works in current engines, but doesn't really unlock certain use cases for shared skins (like crowds). It's valid, but an extension or spec update might be needed to enable those advanced use cases later.
- [x] A subset of joints in one skin are reused in another skin. (https://github.com/KhronosGroup/glTF/issues/1454)
- [EXAMPLE](https://bghgary.github.io/glTF-Assets-Viewer/?manifest=https://raw.githubusercontent.com/KhronosGroup/glTF-Asset-Generator/v0.6.0/Output/Manifest.json&folder=2&model=8)
- **ACTIONS:** None.
TBD:
- [ ] Many (>4) joint vertex influences. (#1381)
- *TODO — example*
- **ACTIONS:** None, spec states >4 influences are allowed.
In each case, if we find that an example cannot be consistently implemented we may tighten the spec accordingly.
Contributor guide
Research direction
Start by reviewing the unchecked skinning cases and the linked issues, then inspect the relevant specification, asset generator, and validator work mentioned in the checklist. Done means the remaining examples or negative cases and validator checks are added, with the specification decisions for unsupported cases recorded.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100