Patreon Blog Main Start

A journey from C++ to a pure WebGL implementation

An origin story

Many of our visitors wonder how 3Dprintable.xyz actually came to life. Let's take a quick look at its origin story.

Good ideas rarely appear as sudden moments, instead, they emerge from real-life experiences, often starting slow. They are born of problem-solving. The goal was always to automate repetitive 3D modeling tasks using a parametric approach. In the wide range of 3D modeling tasks, some were very common and proved to be quite interesting. There was an exploration of what was already available, waiting to be combined in new ways.

The decision to automate the 3D printing industry was well-justified. The choice to focus on jewelry making for signet rings was made for a variety of reasons.

The website and the tools hosted here weren't born on the first attempt. They have evolved over time, existing in various forms and under different names.

The core scripts were C++ automations using the OCCT (Open CASCADE modeling kernel). The idea to provide an online interface for users was a pivotal turning point.

Everything that happened next was like a snowball effect. Why not add visualization? Done. Why not add analysis functions? Done. A second model for comparison? Why not? Should that second model be a complex object or a primitive? Both.

Once the scene became rich with objects and they became interactive, implementing complex logic was the next logical step. That was the second pivotal turning point.

From there, the path ahead was like a serpentine mountain road. Different WebGL solutions like Three.js and Babylon.js were navigated, and various web UI frameworks like React and Angular were explored. The system shifted between being fully server-side and browser-based.

Currently, the core technologies used in this project are the Open CASCADE 3D modeling kernel (OCCT) compiled to WebAssembly via Emscripten, alongside vanilla JavaScript and the pure WebGL API. Third-party libraries were avoided to keep the implementation as authentic as possible. While low-level development is time and resource intensive, we invite you to join us and try this 3D tool.

The system's architecture is much clearer now, and development is ongoing.