Hi everyone,
I’ve been working on a project called ThreeDimensions, a hybrid C++20/Python 3D modeling library designed to provide programmable mesh modeling tools similar to traditional 3D software workflows, but exposed entirely as a Python SDK.
The core geometry engine is written in C++20 for performance, and it is wrapped with a Python API for scripting and tool development.
GitHub: https://github.com/LegendsDaD/ThreeDimensions
PyPI: https://pypi.org/project/threedimensions/
What My Project Does
ThreeDimensions provides:
• A mesh kernel supporting N-gons and large meshes
• Primitive generation (cube, sphere, cylinder, cone, torus, plane)
• Edit operations (extrude, bevel, inset, vertex/edge/face editing)
• Boolean operations
• Subdivision surface modifier
• Decimate and remesh tools
• Non-destructive modifier stack (mirror, array, subdivision, boolean)
• Hierarchical scene graph system
• Object instancing and collections
• OBJ and STL export
If a C++ compiler is not available during installation, it falls back to a pure Python implementation automatically.
Minimal example:
import threedimensions as td
bat = td.Mesh.create_cylinder(radius=0.15, height=1.0)
bat.save("bat.obj")
Target Audience
This project is primarily intended for:
Developers building procedural modeling tools
Engineers needing programmatic mesh generation
Educational use (learning mesh topology and geometry systems)
Developers who want Blender-style modeling logic in code
It is currently more suitable for experimentation and development rather than full production pipelines.
Comparison
Unlike full 3D applications such as Blender, ThreeDimensions is not a GUI-based modeling tool. It is a programmable SDK.
Compared to lightweight mesh libraries in Python, this project focuses more on:
Non-destructive workflows via a modifier stack
Scene graph structure
Hybrid C++ core for performance
A modeling-tool-oriented API rather than just mesh data structures
I would appreciate feedback on:
API design clarity
Modifier system architecture
Mesh kernel design decisions
Performance considerations
Missing core modeling tools
Thanks for taking the time to read.
Top comments (0)