libfive
is a software library and set of tools for solid modeling,
especially suited for parametric and procedural design.
It is infrastructure for generative design,
mass customization,
and domain-specific CAD tools.
The geometry kernel is based on functional representations, which have several benefits over traditional triangle meshes:
- Constructive solid geometry is trivial, and scales well to large models
- Resolution can be arbitrarily high (down to floating-point accuracy)
- Many unusual operations (e.g. blends and warps) are robust and easy to express
The libfive
stack includes a low-level geometry kernel,
bindings in higher-level languages, a standard library of
shapes and transforms, and a desktop application
for script-based design.
Studio is a great place to start, but it's only one example of an application that can be built on this framework. The layers are loosely coupled, so you can build useful tools at various levels of abstraction.
Building your own CAD software? Use the libfive
kernel for solid modeling,
then add domain-specific details with your own GUI and frontend.
Need bindings in a high-level language? Use the C bindings and your language's FFI to build tools that integrate with the rest of your system.
How about a design customizer? Write a headless CAD application with the Scheme bindings and standard library, then run it as a service to generate user-customized models.
libfive
is an open-source project licensed under the MPL
(for kernel and core libraries) and GPL (for the Studio GUI).
This means that it's a commercially friendly kernel; indeed, it's already used in at least one commercial CAD package.