Mesh Craft
A 3D scene editor for the MC3 format — primitives, CSG, extrusion, and keyframe animation exported to glTF/GLB.
MeshCraft is under active development. ~72 of 100 planned tasks are done. Working features include all primitive shapes (Box, Sphere, Cylinder, Cone, Plane, Torus, Capsule, Disk, Grid, Ico-sphere), extrusion (5 path types, 5 cross-section types), CSG booleans, PBR materials and textures, keyframe animation timeline (with material/deform channels), named layers, first-person walk mode, proportional editing, scatter along curve, procedural LOD, fog rendering, bloom post-process pipeline, and the MCB binary format. The project builds cleanly with all CTests passing.
What is Mesh Craft?
Mesh Craft is a C++23 desktop 3D scene editor for creating and editing models in the MC3 format — a custom XML-based scene description format used by the OpenEggbert project family.
Instead of working with raw triangle meshes, Mesh Craft lets you build scenes from
constructive objects: primitive shapes, extrusions, CSG booleans, reusable
definitions, hierarchical groups, lights, cameras, and keyframe animations. These are stored
in human-readable .mc3.xml files and can be exported to
glTF 2.0 / GLB for use in game engines and real-time applications.
The project is inspired by Ray Dream Studio and Google SketchUp.
Main Features
mc3togltf converter outputs glTF 2.0 JSON or self-contained GLB, including animation tracks and embedded textures..mcb) for fast scene loading. The mc3tomcb CLI converts .mc3.xml ↔ .mcb in both directions.MeshCraft.html with IDBFS persistent storage.Supported Platforms
| Platform | Backend | Status |
|---|---|---|
| Linux | EasyGL (OpenGL ES 3.2) | Working |
| macOS | EasyGL or SDL_RENDERER | Planned |
| Windows | EasyGL / BGFX / Vulkan | Planned |
| Android | SDL_RENDERER | Planned |
| Browser (WASM) | Emscripten + WebGL 2 | Working |
Key Dependencies
| Dependency | Role | Source |
|---|---|---|
| CNA | XNA-like C++ runtime: windowing, input, audio, graphics abstraction (SDL3 + OpenGL ES 3.2) | Sibling repo ../cna |
| sharp-runtime | C++ System layer (math: Matrix, Vector3, …) used by CNA | Sibling repo ../sharp-runtime |
| Dear ImGui v1.91.6 | Immediate-mode UI for all editor panels | FetchContent from GitHub |
| Manifold v3 | CSG boolean mesh evaluation | FetchContent from GitHub |
| tinyobjloader v2 | OBJ mesh loading for viewport preview | FetchContent from GitHub |
| tinyxml2 | XML parsing (bundled via sharp-runtime) | Bundled |
Repository Structure at a Glance
mesh-craft/
├── src/MeshCraft/ Main editor application (C++)
├── include/MeshCraft/ Public headers
├── mc3/ Pure-C++ MC3 format library (sublibrary)
├── mcb/ MCB binary format library (sublibrary)
├── mc3togltf/ CLI converter: MC3 → glTF/GLB
├── mc3tomcb/ CLI converter: MC3 ↔ MCB
├── Mc3Format/ Format specification markdown docs
├── test/ Test scenes (.mc3.xml) and smoke test
├── cmake/ Platform-specific CMake helpers
└── CMakeLists.txt Top-level build script
Quick Start
# Prerequisites: CMake 3.21+, GCC 13+ or Clang 16+, sibling repos cna / sharp-runtime
# Configure (first time)
cmake -S . -B cmake-build-debug
# Build everything (editor + mc3togltf + mc3tomcb)
ninja -C cmake-build-debug
# Run with a test scene
./cmake-build-debug/MeshCraft test/house.mc3.xml
For full setup instructions, see Getting Started and Build & Run.