Skip to content

mrehayden1/haskell-gltf-loader

 
 

Repository files navigation

Haskell GlTF Loader

pipeline status

A high level GlTF loader

Prerequisites

In order to build or install you will need

  • GHC (Tested on 9.4.8), or
  • Nix

Building

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

API Documentation

To build the documentation, run

cabal 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 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

Authors

Sean Gillespie [email protected]

Acknowledgements

This project is largely based on https://hackage.haskell.org/package/gltf-codec by Alexander Bondarenko

License

This project is licensed under the MIT License. See LICENSE

About

High level GlTF Haskell loader

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 98.5%
  • Nix 1.5%