manifold-3d
    Preparing search index...

    manifold-3d

    About Manifold

    codecov npm version twitter

    TS Documentation | C++ Documentation | Algorithm Documentation | Blog Posts

    A manifold mesh is a mesh that represents a solid object, and so is very important in manufacturing, CAD, structural analysis, etc. 'Manifold' implies that there are no gaps or tears, and that all faces are oriented outwards.

    [ Using Manifold | Examples | API Reference ]

    Manifold is a geometry library dedicated to creating and operating on manifold triangle meshes. It is available as a WASM module that runs in any modern browser.

    Our primary goal is reliability: guaranteed manifold output without caveats or edge cases. Our secondary goal is performance: efficient algorithms that make extensive use of parallelization, or pipelining when only a single thread is available.

    A metallic Menger sponge

    [ ManifoldCAD | ManifoldCAD CLI | API Reference ]

    If you like OpenSCAD / JSCAD, you might also like ManifoldCAD - our own solid modelling web app where you script in JS/TS and save a GLB or 3MF file. It contains several examples showing how to use our API to make interesting shapes. You may notice that some of these examples bare a certain resemblance to my OpenSCAD designs on Thingiverse, which is no accident. Much as I love OpenSCAD, this library is dramatically faster and the code is more flexible.

    manifoldCAD = manifold + TypeScript + glTF

    The ManifoldCAD runtime extends manifold, adding:

    • glTF import and export, via glTF Transform.
    • Support for glTF materials and animations.
    • Utilities for instantiating the WASM object, and garbage collection for objects created in WASM.
    • Bundling and sandboxing user scripts, including npm packages.

    These modules are written in typescript and can be used outside of ManifoldCAD.

    [ EXT_mesh_manifold ]

    Please avoid saving to STL files! They are lossy and inefficient - when saving a manifold mesh to STL there is no guarantee that the re-imported mesh will still be manifold, as the topology is lost. Please consider using 3MF instead, as this format was designed from the beginning for manifold meshes representing solid objects.

    If you use vertex properties for things like interpolated normals or texture UV coordinates, glTF is recommended, specifically using the EXT_mesh_manifold extension. This allows for the lossless and efficient transmission of manifoldness even with property boundaries. Try our make-manifold page to add this extension to your existing glTF/GLB models.

    This library was started by Emmett Lalish, currently a senior rendering engineer at Wētā FX. This was my 20% project when I was a Google employee, though my day job was maintaining <model-viewer>. I was the first employee at a 3D video startup, Omnivor, and before that I worked on 3D printing at Microsoft, including 3D Builder. Originally an aerospace engineer, I started at a small DARPA contractor doing seedling projects, one of which became Sea Hunter. I earned my doctorate from the University of Washington in control theory and published some papers.