Orchestra3D

In addition to providing the base code for Orchestra Data Science above, Orchestra3D is a solid project in its own right, bringing not only visual flow programming to the web browser, but a custom compiled native JavaScript CAD kernel as well. Orchestra3D integrates these parts into a fully functional stand alone web application, allowing users experiment with parametric design directly in the browser.

SISL is a Fortran / C / C++ CAD kernel developed by the department of applied mathematics at SINTEF in Norway. I selected it (vs others such as OpenSCAD, Salome, Open CASCADE, etc) because of its specific strengths for NURBS geometry and absence of cruft. Once cross compiled to JavaScript via LLVM byte code in Emscripten, I’m able to get fast, robust geometry functions in just a couple of MBs.

Finally, Orchestra3D employs an especially rigorous approach to the hardest problem in flow-based programming: management of lists of data. Orchestra takes its cues from Grasshopper, a tool used for flow based programming in CAD (Rhinoceros 3D, specifically) where list management is fully and thoughtfully resolved. Orchestra3D mimics grasshopper behavior carefully. I built close to 100 unit tests based on expectations manually lifted from grasshopper, then worked to ensure they all passed in Orchestra.

Orchestra3D is my “forever project”, one which started years ago with my work on the design and fabrication of the “Soft Rocker” exhibit for MIT’s 150th birthday. From there was born the desire to take an extremely expensive and complicated 5-axis milling process based on professional CAD, and make it possible to execute on an inexpensive 3 axis machine, with no CAD expertise. I’m surprisingly close. Ask me about it!

The server side of this application does comparatively little, serving mostly as a CRUD API for project data and providing basic authentication and notification services required of most web apps.

Dates: 2012 – 2016. Forked and continued as Orchestra Data Science.

Explorations: Compile C to JavaScript using Emscripten and run it in the browser; Reverse engineering using methodical unit tests.

Technologies: JavaScript (Backbone, ThreeJS, RequireJS, Jasmine), Emscripten (involves some C programming), Parse Server Backend, MongoDB, SendGrid/Mailgun Integration

Github: Repo includes the entire application, including cross-compiled SISL, Orchestra itself, and the Web App in which in lives. (TODO: Separate the parts)

Live Demo: Some examples are available for playing around without logging in. A video of Orchestra3D in use is on the homepage. Because this project remains unfinished, I’m not currently allowing new account creation at this time. Create new components by typing in the “new component” field,
and seeing what comes up. Absent tutorials, Orchestra3D is hard to use. Try Orchestra Data Science if you really want to learn it!