MCglTF is a 3D model loader library which load glTF format file and prepare the required techniques to render the model for Minecraft Modding enviroment.
Various features from glTF spec are available, but still remain a good compatibility and performance.
What is glTF?
The following image gives an overview of glTF:
More detail github.com/KhronosGroup/glTF/
The example codes for rendering Block, Item, and Entity
- ✅ GLTF format (Embedded resources or via ResourceLocation)
- ✅ GLB format
- ✅ UVs
- ✅ Normals
- ✅ Tangents
- ✅ Vertex colors
- ✅ Materials (Require OptiFine or Iris Shaders and supported ShaderPack for PBR and Normal map)
- ✅ Textures
- ❎ Mutiple texture coordinates (For compatibility reason with Vanilla)
- ✅ Rig
- ✅ Animations (multiple)
- ✅ Morph targets
- ✅ Zero-scale node culling (https://github.com/KhronosGroup/glTF/pull/2059)
Frequently Asked Question
Q. Why my texture for my model does not show up?
A. You need to defined material inside "extras" of "materials" to link your texture. For more details please visit wiki page.
Q. Why two animations cannot control translation/rotation/scale/weight in same node at the same time and cause one of the animation not playing?
A. There is no animation blending technique defined in glTF specification, so the animations created by GltfAnimationCreator does not support animation blending too. You need to create your own animation processor based on your scenario.
Q. How to apply my custom processing to the model like custom material(e.g. apply player skin) or create special OpenGL commands for specified node?
A. For more advanced way to generate OpenGL commands for glTF model, you can override and return false to isReceiveSharedModel(GltfModel, GltfRenderDatas) in your IGltfModelReceiver. This allow you to create your custom RenderedGltfModel based on supplied GltfModel. (Beware to add your OpenGL objects like VBO, VAO, Texture, etc to GltfRenderDatas for deletion during refresh resource.)