#solid #geometry #3d #constructive #csg

bin+lib crater-rs

A library of solid modeling primitives and operations

3 releases

0.1.4 Oct 3, 2024
0.1.3 Oct 2, 2024
0.1.2 Oct 2, 2024
0.1.1 Oct 2, 2024
0.1.0 Oct 2, 2024

#140 in Graphics APIs

MIT and AGPL-3.0-only

1.5MB
1.5K SLoC

logo

This is Crater, the official mascot of crater.rs!

Quick Start

Use crater.rs as command-line tool

Install

> cargo install crater-rs

Verify installation

> crater --version
... whatever the current version is ...

Run

For a few example input files, see crater_examples.

> crater marching-cubes -i ./crater_examples/blended.yml -o blended.stl

Citations

  1. A. Ricci. "A constructive geometry for computer graphics" (1973)
  2. Vadim Shapiro. "Theory of R-Functions: A Primer" (1988)
  3. P.A. Fayolle and A. Pasko "An Evolutionary Approach to the Extraction of Object Construction Trees from 3D Point Clouds"
  4. A. Pasko, et. al. "Function Representation in Geometric Modeling: Concepts, Implementation and Applications"

Appendix: Maintainer Release Guide

crater.rs uses the wonderful cargo-release for automatic release. There is a release CI/CD job which accomplishes the following:

  1. Configures git to allow for direct push-from-ci (via oath)
  2. Invokes cargo-release. This does the following automatically:
    1. Run ./scripts/pre-release.sh which:
      1. runs some end-to-end tests and generates artifacts in ./artifacts
      2. runs git-cliff (config: cliff.toml) to generate a new changelog
    2. Updates version numbers in all known locations
    3. Publish to crates.io
    4. Commit the new content as a "chore" (and skip ci), and add git tag
    5. Push to the current branch (i.e., main)

As a Maintainer of this repo, when an MR lands, the release job should become available for manual action. Start this job with BUMP_LEVEL=(patch|minor|major) to officially release.

Dependencies

~12MB
~218K SLoC