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.

Sean Michael Ragan

Sean Michael Ragan

I am descended from 5,000 generations of tool-using primates. Also, I went to college and stuff. I am a long-time contributor to MAKE magazine and makezine.com. My work has also appeared in ReadyMade, c’t – Magazin für Computertechnik, and The Wall Street Journal.

  • Jeff

    BRL-CAD also uses CSG as its base interface (it originally ran on the PDP-11, so, not enough system resources to make a WYSIWYG…).

  • DU

    …but there’s almost nothing there yet. It’s a page with some source and small wikibook. There’s no forum or mailing list to see how/if people are using it. There aren’t even any instructions on how to build it from the source and no configure or makefile or anything.

  • Anonymous

    Of all the important lessons and skills you have taught me, the one lesson I cherish most of all is… how you’ve taught me to draft by hand.

    Oh snap! That’s right, I said it! Anonymously, but still…

  • Chris

    Back around ’98 I worked for a company called iCad/Concentra that was all about automating design by capturing the design/decision rules. So of course the (proprietary, in-house) software was all CSG. For the last 10 years though I’ve been designing stuff in WYSIWYG CAD and been pretty happy about it.

    I guess if you’re a professional SW engineer CSG seems like the easiest approach. I suspect most people would prefer to use SketchUp

  • failrate

    I’ve been using openSCAD a bit recently. It’s pretty good. Almost immediately after the Thingiverse article on it appeared, the creator moved the sparse documentation to a wikibook format (and I immediately added a section on modules). So, he seems pretty responsive.

    The takeaway from this is that anyone could take the time to write a good interface to OpenCSG and CGAL in their preferred language. This is a great project as a proof of concept. So, even if you think the implementation has flaws, it should show you that it’s reasonable for a single person or small team to come up with software that rivals the functionality of expensive commercial packages.

  • ronww

    The Virtual Reality Modeling Language has been around for a long time. It can be hand edited or generated programmatically.

    • wizard23

      VRML is just for rendering. it does not help you if you want to have a trinagle mesh STL file for 3D printing with a RepRap for example.

      OpenSCAD does both. It gives you a rendering of the object and it can generate a STL file.