My first introduction to 3D modelling, way back in 1999, was ray-tracing with the classic freeware Persistence of Vision (POV-Ray) package. The whole point of POV-Ray was (and is) to program a virtual 3D scene that can be rendered into still images very slowly, but in amazing detail, using ray-tracing algorithms. It was never about producing models for 3D printing or other computer-assisted manufacture techniques. But what was cool about POV-Ray was that, at least in its native implementation, there was no GUI or WYSIWYG interface. To make POV-Ray models, you used a text editor to program objects using so-called “constructive solid geometry” (CSG) techniques, in which complex forms were built up as unions, differences, and/or intersections of “primitive” shapes like cubes, circles, and prisms. It was all done in a special programming language native to the POV-Ray environment. To see what you’d made, you had to render the file.

Almost a decade later, when I started messing around with modern 3D modelling software for the purpose of rapid prototyping, I was disappointed to discover that my POV-Ray CSG skills did not port. Everything was resource-hungry interactive WYSIWYG interfacing, which definitely has its advantages, but also typically has a pretty steep learning curve as you learn just to move around the virtual 3D space of the modelling environment. It can be difficult to select exactly the point you want, to snap exactly to the distance you intend, and so forth. For a couple of personal projects, I manage to kludge together some tools that would let me design objects in POV-Ray and then convert them to STL files, but it was always an unreliable and wonky process.

So I was really stoked this morning to read this post over on the Thingiverse Blog about the advent of OpenSCAD, which does for 3D CAD what POV-Ray did for raytracing. At long last, you can program your 3D CAD models instead of sculpting them. And it’s free! I can hardly wait to try it out.