The XR_MSFT_controller_model OpenXR extension provides a glTF
controller model that can be displayed to users during a VR session. If
we can support this, it would be a big advantage for VR immersion.
Since Blender does not currently have any glTF utilities in C/C++ (only
Python), a simple and sufficient solution for loading this glTF
controller model, which will be performed at the GHOST abstraction
layer (see D10948: XR Controller Support Step 4: Controller Drawing), is needed.
The following two libraries, TinyGLTF and fx-gltf are the primary candidates:
TinyGLTF
TinyGLTF (https://github.com/syoyo/tinygltf) is a lightweight glTF
2.0 loader written in C++. It is licensed under the MIT License and
its two bundled dependencies, json (https://github.com/nlohmann/json,
MIT License) and stb (https://github.com/nothings/stb,
MIT/public domain) are similarly compliant with Blender's licensing
requirements.
fx-gltf
fx-gltf (https://github.com/jessey-git/fx-gltf) is another lightweight
glTF 2.0 loader written in C++. However, compared to TinyGLTF, it has
fewer dependencies (only json) and notable performance gains over
TinyGLTF. It is also licensed under the MIT License.