Curv is an open source (Apache v2.0) 2D and 3D F-Rep implicit geometric modelling language that defines shapes and colours using Signed Distance Fields (SDFs). Curv supports full colour, animation and 3D printing, and is ideal for artistic and research applications, but can also be used for functional models, such as advanced heat exchangers, heat sinks, and lightweight lattice designs.
Examples
Orbit - an animated blend of a sphere and (mitred) cube.
Shreks Donut - a radial gyroid shell lattice blended with a torus, which somewhat resembles the ears of the eponymous character.
Gyroid heat exchanger, based on a design from Metal AM.
Features
- Curv is a simple, powerful, dynamically typed, pure functional programming language.
- Curv is easy to use for beginners. It has a standard library of predefined geometric shapes, plus operators for transforming and combining shapes. These can be plugged together like Lego to make 2D and 3D models.
- Coloured shapes are represented using Function Representation (F-Rep). They can be infinitely detailed, infinitely large, and any shape or colour pattern that can be described using mathematics can be represented exactly. Infinite lattices in particular can be very efficiently represented this way.
- Curv exposes the full power of F-Rep programming to experts. The standard geometry library is written entirely in Curv. Many of the demos seen on shadertoy can be reproduced in Curv, using shorter, simpler programs. Experts can package techniques used on shadertoy as high level operations for use by beginners.
- Rendering is GPU accelerated. Curv programs are compiled into fragment shaders which are executed on the GPU.
- Curv can export meshes to STL, OBJ and X3D files for 3D printing. The X3D format supports full colour 3D printing. These meshes are defect free: watertight, manifold, with no self intersections, degenerate triangles, or flipped triangles.
Getting Started
- See the Getting Started section on Codeberg for instructions on installing or compiling Curv for Windows, Mac & Linux.
- If you are new to F-Rep and SDFs, Theory is a good place to start. F-Rep modelling can be quite different than traditional B-Rep CAD modelling and may require different approaches.