Why Microsoft’s 3D Printing Rocks

Windows-3DP

Microsoft has just made its mark on 3D print­ing with its announce­ment of built-in support for 3D print­ing in Windows 8.1. Now I don’t usually do blog posts like this where I pretend to keep up with news, but I see noth­ing but hollow rehashes (actual head­line: “Microsoft Moves to Simplify 3-D Print­ing”) and vaguely 3D print­ing related filler (LOL GUNZ) on the tech pop media about this story.

NYT-screenshot

Heck, even Microsoft’s own blog post from a general manager is 100% devoid of infor­ma­tion on what they’ve intro­duced. That’s a real shame, because the new Windows compo­nents advance the 3D print­ing field by quite a bit while fixing many of the glar­ing tech­ni­cal issues.

Hotfix

Before I jump into what the Microsoft announce­ment is about and why I think it’s great, I want to address a couple of couple of knee-jerk opin­ions about the story I saw stated as fact.

  • Microsoft “simpli­fied” 3D print­ing… in the sense that it’ll be easier for Joe Sixpack to buy a retail boxed printer and hit “print” from Windows appli­ca­tions to print parts. However, what they’ve done is actu­ally added more steps in the 3D print­ing chain—but that’s a good thing. I’ll get to why in just a second. 

    Microsoft-pipeline

  • Windows 8.1’s 3D print­ing support tries to supplant preproces­sors and print­ing hosts by devel­op­ers. Nope. Instead it creates a frame­work around the exist­ing slicers and printer hosts (for exam­ple Slic3r and Repetier-Host, two soft­ware pack­ages we use in the Geor­gia Tech Inven­tion Studio for RepRap-based print­ers), which abstracts away their oper­a­tional details. This means that all print­ers will have a common Microsoft-designed soft­ware inter­face for getting printed to, and that’s great for devel­op­ers. However, it’s still up to manu­fac­tur­ers to actu­ally write drivers within this frame­work.
  • Microsoft is making a move into 3D print­ing. Tech­ni­cally they are, but they’re not build­ing 3D print­ers and they don’t appear to be affil­i­ated with any one manu­fac­turer. They also don’t appear to be aban­don­ing open source either; if anything, inclu­sion of the open source print­ers seems to be a prior­ity for even the first release, as they had a demo with a Type A printer at the San Fran­cisco event.

    As I mentioned, their new compo­nents don’t replace anything already on the market; they’re build­ing around, not in, the exist­ing struc­tures. I think their “move” here is a land grab as the first plat­form to have mean­ing­ful stan­dards and support for 3D print­ing. If played right, that will then make them the 3D print­ing plat­form (not that that’s a good thing).

I should also note that I am neither a Microsoft apol­o­gist (I prepare presen­ta­tions in Keynote for crying out loud) nor a 3D print­ing fanboy (I instinc­tively assault anyone who uses the term “desk­top manu­fac­tur­ing revo­lu­tion” uniron­i­cally). It’s just that people on the Inter­net were wrong and I had to correct them.

GTIS does lots of printing

Also, my expe­ri­ence with 3D print­ing comes from my time help­ing to run the Geor­gia Tech Inven­tion Studio. As students, we main­tain a fleet of 14 3D print­ers, includ­ing open-source print­ers like RepRap vari­ants, Maker­Bot junk, and Afinia/Up bots, as well as profes­sional print­ers from Objet and Strata­sys. These get (ab)used almost 24/7 in incred­i­ble volume by students and faculty (the hobby print­ers are free to use) and we’re even devel­op­ing custom hard­ware and soft­ware for them, so please remem­ber I’m talk­ing as little out of my ass as I can.

Now let’s get to some of the inno­va­tions that Microsoft intro­duced and the prob­lems they solved.

Deciphering the News

Keep in mind that most of my infor­ma­tion here is gleaned off of the 30 seconds of concrete infor­ma­tion in the 16:21 video and some C++ SDK samples.

SampleCode-screenshot

But here’s what I think are their biggest inno­va­tions in 3D print­ing:

  • A new soft­ware inter­face for print­ing 3D models from appli­ca­tions and a frame­work for 3D printer drivers. This means there’s now a stan­dard way for soft­ware to pass 3D models as jobs to 3D print­ers, as well as a stan­dard that 3D print­ing soft­ware chains will conform to. This solves the prob­lem of getting an appli­ca­tion to program­mat­i­cally start a print job. We’re pretty famil­iar with that prob­lem at the Inven­tion Studio; our printers—Lulzbot AO-101s, Maker­bot Repli­ca­tors 2, Afinia H-Series—each have differ­ent APIs for print­ing to them, and it makes soft­ware automa­tion a complete pain of a task to tackle.
  • Stan­dard 3D model inter­change format designed espe­cially for 3D print­ing. This is a big deal if only because the current stan­dard format, STL, sucks (and some­how it is stan­dard; even our Strata­sys and Objet profes­sional 3D print­ers use it). The new format that Microsoft is call­ing 3MF (“3D manu­fac­tur­ing format”) is quite neat: it’s still a mesh-based format (to be prac­ti­cal), but it supports spec­i­fy­ing differ­ent mate­ri­als for each volume, as well as support­ing color textures (for color­ing surfaces). STL, mean­while, can’t even spec­ify that two faces in a mesh are adja­cent to each other.
  • Print spooler for 3D printer jobs. The new print spooler is a part of Windows that sits between appli­ca­tions spit­ting out 3D print jobs and the printer-specific drivers. It serves as a purga­to­r­ial buffer for yet-unre­al­ized print jobs that haven’t been processed/sliced/sent off to a machine. You already have a 2D print spooler now that lets you print off 2D docu­ments for 2D print­ers, with­out even having any such said 2D printer connected.
  • Support for 3D print­ers using a USB printer inter­face. I’m not a big USB or drivers person, so I’m not able to expound on whether using the “class 7, type 3” inter­face1 was the right choice. However, I heartily support their view of serial over USB2 as a “legacy” inter­face. That truly is the legacy of 3D printer designs rely­ing too much on every part of the under­en­dowed Arduino for their brains. Arduino’s use of COM ports may be conve­nient for a quick and dirty proto­type, but I can’t believe folks are sell­ing prod­ucts that use it. I’m glad some­body at Microsoft agrees and is taking a step away from that awful­ness.

    Microsoft-hardware-support

Normally I’m not down for ending a post with Sili­con Valley-esque last-para­graph upturn in opti­mism (what is this, a Quora answer?), but I really do believe that this is a huge step forward in 3D print­ing, inject­ing a direly needed infu­sion of profes­sional engi­neer­ing into a commu­nity domi­nated by part-time hobby­ists strug­gling to develop complete prod­ucts. I really want reli­able, well-designed 3D print­ing soft­ware plat­forms to succeed so we can get on with devel­op­ing actual advances in print­ing tech­nol­ogy, and it’s great to see a big player like Microsoft making that move.

  1. 1284.4 compat­i­ble bi-direc­tional inter­face: http://www.usb.org/developers/devclass_docs/usbprint11.pdf []
  2. Commu­ni­ca­tion device class: http://www.usb.org/developers/devclass_docs/usbcdc11.pdf []