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. All core features (primitives, extrusion, CSG, materials, textures, lights, cameras, definitions, keyframe animation) are implemented and working. The project builds cleanly and passes its automated test suite.
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.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 |
| Nova3D | 3D engine on top of CNA; used for viewport rendering | Sibling repo ../nova-3d |
| 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)
├── mc3togltf/ Standalone CLI converter: MC3 → glTF/GLB
├── 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 / nova-3d
# Configure (first time)
cmake -S . -B cmake-build-debug \
-DCMAKE_BUILD_TYPE=Debug \
-DMESH_CRAFT_GRAPHICS_BACKEND=EASYGL
# Build
cmake --build cmake-build-debug --target MeshCraft -- -j$(nproc)
# Run with a test scene
./cmake-build-debug/MeshCraft test/house.mc3.xml
For full setup instructions, see Getting Started and Build & Run.