# Haskell GlTF Loader [![pipeline status](https://gitlab.com/sgillespie/haskell-gltf-loader/badges/main/pipeline.svg)](https://gitlab.com/sgillespie/haskell-gltf-loader/-/commits/main) > A high level GlTF loader ## Prerequisites In order to build or install you will need * [GHC](https://www.haskell.org/downloads/) (Tested on 9.0.2) * [Stack](https://docs.haskellstack.org/en/stable/install_and_upgrade/) (Tested on 2.7.5) ## Building Build the project stack setup stack build Run the tests (if desired) ``` stack test ``` ## API Documentation To build the documentation, run stack haddock ## API Examples Use `fromFile` or `fromBytestring` to load a GlTF scene import Text.GLTF.Loader (fromFile) -- ... -- Load a GLTF scene from a file loadGltfFile :: IO (Either Errors Gltf) loadGltfFile = fromFile "./cube.gltf" Then you can, for example, get all the vertices: getVertices :: Gltf -> [V3 Float] getVertices gltf = concatMap getVertices' (gltf ^. _meshes) where getVertices' mesh = concatMap (^. _meshPrimitivePositions) (mesh ^. _meshPrimitives) ## CLI This includes a CLI utility to inspect GlTF files gltf-loader --help ## Roadmap Currently, only geometries and PBR materials are supported, but we hope to support the majority of GlTF features: - [ ] Animations - [x] Asset - [ ] Cameras - [x] Images - [x] Materials - [x] PBR Metallic Roughness - [x] Textures - [x] Meshes - [x] Positions - [x] Indices - [x] Normals - [x] Texture Coordinates - [x] Nodes - [x] Samplers - [ ] Skins ## Authors Sean Gillespie ## Acknowledgements This project is largely based on [https://hackage.haskell.org/package/gltf-codec](gltf-codec) by Alexander Bondarenko ## License This project is licensed under the MIT License. See [LICENSE](LICENSE)