Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Game Engine Development
  3. three-bvh-csg

three-bvh-csg

MITJavaScriptv0.0.18

A fast, memory-efficient Constructive Solid Geometry library for three.js using a Bounding Volume Hierarchy approach.

GitHubGitHub
902 stars78 forks0 contributors

What is three-bvh-csg?

three-bvh-csg is a Constructive Solid Geometry library for three.js that performs boolean operations on 3D meshes. It solves the performance limitations of traditional CSG implementations by using a Bounding Volume Hierarchy approach, making complex mesh operations feasible in real-time applications.

Target Audience

Three.js developers building interactive 3D applications that require dynamic mesh editing, CAD-like functionality, or procedural geometry generation in the browser.

Value Proposition

Developers choose three-bvh-csg for its exceptional performance gains over alternative libraries, its memory-efficient design, and its flexible API supporting both simple operations and complex hierarchical evaluations.

Overview

A flexible, memory compact, fast and dynamic CSG implementation on top of three-mesh-bvh

Use Cases

Best For

  • Interactive 3D modeling applications in the browser
  • Procedural geometry generation for games or simulations
  • CAD-like functionality in web-based 3D tools
  • Educational demonstrations of CSG algorithms
  • Prototyping mesh boolean operations before backend processing
  • Visual debugging of mesh intersections and topology

Not Ideal For

  • Production CAD software requiring guaranteed watertight results and numerical robustness
  • Projects with non-manifold, imperfect, or poorly formed input meshes
  • Applications where server-side mesh processing is preferred for stability and reliability
  • Teams needing stable, well-documented libraries with long-term support and minimal breaking changes

Pros & Cons

Pros

Blazing Fast Performance

Claims over 100x speed improvement over BSP-based alternatives for complex cases, enabling real-time CSG operations that were previously impractical, as highlighted in the README.

Memory Efficient Design

Built to be memory compact while handling dynamic operations, reducing overhead compared to traditional CSG implementations, per the project philosophy.

Flexible Operation Support

Supports all standard CSG operations (union, subtraction, etc.) plus experimental hollow operations, allowing for both solid and non-solid boolean effects with hierarchical chaining.

Comprehensive Debug Tools

Includes helper classes like EdgesHelper and TriangleSetHelper for visualizing mesh intersections and topology during development, aiding in troubleshooting complex operations.

Cons

Experimental and Unstable

Marked as 'experimental, in progress' with known issues like triangle splitting bugs and numerical precision warnings that can lead to non-manifold results, making it unreliable for production.

Stringent Geometry Requirements

Requires all input meshes to be perfectly two-manifold and watertight, which is often unrealistic for real-world 3D models and adds pre-processing overhead.

Limited Documentation and Support

The project has a roadmap with help-wanted issues and incomplete features, indicating gaps in documentation and community support for advanced use cases.

Export Limitations

CSG results use geometry draw ranges that can break standard three.js exporters, requiring manual conversion steps before exporting, as noted in the Gotchas section.

Frequently Asked Questions

Quick Stats

Stars902
Forks78
Contributors0
Open Issues43
Last commit2 months ago
CreatedSince 2022

Tags

#bvh#geometry-processing#graphics#boolean-operations#geometry#threejs#three#game-development#3d-modeling#mesh-operations#3d-printing#webgl#computer-graphics#constructive-solid-geometry

Built With

t
three.js

Included in

Game Engine Development1.3k
Auto-fetched 12 hours ago

Related Projects

csg.jscsg.js

Constructive solid geometry on meshes using BSP trees in JavaScript

Stars1,862
Forks266
Last commit6 years ago
three-csgmeshthree-csgmesh

Conversion of a CSG library for use with modern THREE.js

Stars493
Forks58
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub