packages feed

gltf-loader-0.2.0.0: README.md

# 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 retreiving indices are supported, but we hope to support the majority of GlTF
features:

 - [ ] Animitions
 - [ ] Asset
 - [ ] Cameras
 - [ ] Images
 - [ ] Materials
 - [x] Meshes
    - [x] Positions
    - [x] Indices
    - [ ] Normals
    - [ ] Texture Coordinates
 - [ ] Node
 - [ ] Samplers
 - [ ] Skins

## Authors

Sean Gillespie <sean@mistersg.net>

## 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)