MyNixOS website logo
Description

Parsers and utilities for the OBJ WaveFront 3D model format.

3DWaves

This is a personal project, still in its infancy, and I don't expect anybody else to use it. Should somehow happen upon this site, I would however welcome their support and feedback.

Contents

Wavefront OBJ parsers and related amenities. Includes purely functional parsers and IO utilities for loading models from files.

Supports the basic MTL and OBJ attributes. My ambition is to add full support for the entire specification.

Please note that this package is completely unaware of rendering and graphics. The data structures generated by the parsers are oblivious to technologies such as Direct3D and OpenGL; creating eg. GPU buffers is up to the client.

I may at some point implement the FFI and add direct OpenGL support, in separate modules.

Examples

Maintainers

Jonatan H Sundqvist

TODO

See source files (.hs) for additional items.

  • [ ] Performance (currently, it's atrocious) (...) - Parallelism (...)
  • [ ] Add sample models and demos (...)
  • [ ] Add profiling and checks (cf. QuickCheck) - Travis-CI integration
  • [x] GHCi support (added .ghci file, works quite well)
  • [x] Proper ticket system (here)
  • [ ] Polymorphism (...)
  • [ ] Querying - Asking questions about a particular model (bounds, storage, number of faces, material types, etc.) - Asking questions about the OBJ and MTL formats (eg. 'what does the various illum values mean') - Screenshots (maybe in the wavefront-render package)
  • [ ] Serialising (eg. writing to OBJ and MTL)
  • [ ] Rendering - Create a separate package (wavefront-render) with an OpenGL backend
  • [ ] Executables - OBJ viewer (...) - Command line tool (?)
  • [ ] Foreign function interface.
Metadata

Version

0.5.0.0

License

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows