libfive libfive logo

A Rust wrapper for libfive.

Example

Generated CSG shape

```rust use libfive::*;

let csgshape = Tree::sphere(1.0.into(), TreeVec3::default()) .differencemulti(vec![ Tree::sphere(0.6.into(), TreeVec3::default()), Tree::cylinderz( 0.6.into(), 2.0.into(), TreeVec3::new(0.0, 0.0, -1.0), ), Tree::cylinderz( 0.6.into(), 2.0.into(), TreeVec3::new(0.0, 0.0, -1.0), ) .reflectxz(), Tree::cylinderz( 0.6.into(), 2.0.into(), TreeVec3::new(0.0, 0.0, -1.0), ) .reflect_yz(), ]);

csgshape.tostl( "csg_shape.stl", &Region3::new(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0), &BRepSettings::default(), )?; ```

Documentation

Because of numerous external dependencies that need to be included, this is currently not hosted on crates.io.

Build docs locally: cargo doc -p libfive --no-deps --all-features --open

Features

Dependencies

macOS

With homebrew installed, run:

brew install cmake pkg-config eigen libpng boost

Ubuntu/Debian

libfive should build out of the box on the latest Ubuntu LTS (currently 20.04). If you find that's not the case, please open an issue in the upstream repository!

Install the following dependencies with apt:

sudo apt-get install cmake pkg-config libeigen3-dev libpng-dev libboost-all-dev

Windows (VS2019)

Install Git, choosing settings so that it can be invoked from a Windows Command Prompt (the defaults should be fine).

Install VS2019 (Community Edition), configured for Desktop development with C++.

You only need MSVC, Windows 10 SDK, and C++ CMake tools for Windows. Feel free to uncheck other optional packages in the right sidebar. Then run the installation!

Next, install dependencies using vcpkg.

:warning: This step touches many files, so you may want to disable the Antimalware Service Executable, which will otherwise scan every single file and slow things down dramatically: in Windows SecurityVirus & threat protection settings, uncheck Real-time protection.

In a Windows Command Prompt: git clone https://github.com/Microsoft/vcpkg.git .\vcpkg\bootstrap-vcpkg.bat .\vcpkg\vcpkg.exe install --triplet x64-windows eigen3 boost-container boost-bimap boost-interval boost-lockfree boost-functional boost-algorithm boost-math libpng Go get some coffee or something – this will take a while.

Building

Just the usual.

cargo build