A high level GlTF loader
In order to build or install you will need
If using Nix, start up a development shell (otherwise omit this step)
nix develop .
Build the project
cabal build
Run the tests (if desired)
cabal test
To build the documentation, run
cabal haddock
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)
This includes a CLI utility to inspect GlTF files
gltf-loader --help
Currently, only geometries and PBR materials are supported, but I hope to support the majority of GlTF features:
- Animations
- Asset
- Cameras
- Images
- Materials
- PBR Metallic Roughness
- Textures
- Meshes
- Positions
- Indices
- Normals
- Texture Coordinates
- Nodes
- Samplers
- Skins
Sean Gillespie [email protected]
This project is largely based on https://hackage.haskell.org/package/gltf-codec by Alexander Bondarenko
This project is licensed under the MIT License. See LICENSE