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 sup­port for 3D print­ing in Win­dows 8.1. Now I don’t usu­al­ly do blog posts like this where I pre­tend to keep up with news, but I see noth­ing but hol­low rehash­es (actu­al head­line: “Microsoft Moves to Sim­pli­fy 3-D Print­ing”) and vague­ly 3D print­ing relat­ed filler (LOL GUNZ) on the tech pop media about this sto­ry.

NYT-screenshot

Heck, even Microsoft’s own blog post from a gen­er­al man­ager is 100% devoid of infor­ma­tion on what they’ve intro­duced. That’s a real shame, because the new Win­dows com­po­nents advance the 3D print­ing field by quite a bit while fix­ing 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 cou­ple of cou­ple of knee-jerk opin­ions about the sto­ry I saw stat­ed as fact.

  • Microsoft “sim­pli­fied” 3D print­ing… in the sense that it’ll be eas­ier for Joe Six­pack to buy a retail boxed print­er and hit “print” from Win­dows appli­ca­tions to print parts. How­ev­er, what they’ve done is actu­al­ly added more steps in the 3D print­ing chain—but that’s a good thing. I’ll get to why in just a sec­ond.

    Microsoft-pipeline

  • Win­dows 8.1’s 3D print­ing sup­port tries to sup­plant pre­proces­sors and print­ing hosts by devel­op­ers. Nope. Instead it cre­ates a frame­work around the exist­ing slicers and print­er hosts (for exam­ple Slic3r and Repetier-Host, two soft­ware pack­ages we use in the Geor­gia Tech Inven­tion Stu­dio for RepRap-based print­ers), which abstracts away their oper­a­tional details. This means that all print­ers will have a com­mon Microsoft-designed soft­ware inter­face for get­ting print­ed to, and that’s great for devel­op­ers. How­ev­er, it’s still up to man­u­fac­tur­ers to actu­al­ly write dri­vers with­in this frame­work.
  • Microsoft is mak­ing a move into 3D print­ing. Tech­ni­cal­ly they are, but they’re not build­ing 3D print­ers and they don’t appear to be affil­i­at­ed with any one man­u­fac­tur­er. They also don’t appear to be aban­don­ing open source either; if any­thing, inclu­sion of the open source print­ers seems to be a pri­or­i­ty for even the first release, as they had a demo with a Type A print­er at the San Fran­cis­co event.

    As I men­tioned, their new com­po­nents don’t replace any­thing already on the mar­ket; 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 sup­port 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 nei­ther a Microsoft apol­o­gist (I pre­pare pre­sen­ta­tions in Keynote for cry­ing out loud) nor a 3D print­ing fan­boy (I instinc­tive­ly assault any­one who uses the term “desk­top man­u­fac­tur­ing rev­o­lu­tion” uniron­i­cal­ly). It’s just that peo­ple on the Inter­net were wrong and I had to cor­rect 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 Stu­dio. As stu­dents, 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 pro­fes­sion­al print­ers from Objet and Strata­sys. The­se get (ab)used almost 24/7 in incred­i­ble vol­ume by stu­dents and fac­ul­ty (the hob­by print­ers are free to use) and we’re even devel­op­ing cus­tom hard­ware and soft­ware for them, so please remem­ber I’m talk­ing as lit­tle 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 sec­onds of con­crete infor­ma­tion in the 16:21 video and some C++ SDK sam­ples.

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 mod­els from appli­ca­tions and a frame­work for 3D print­er dri­vers. This means there’s now a stan­dard way for soft­ware to pass 3D mod­els as jobs to 3D print­ers, as well as a stan­dard that 3D print­ing soft­ware chains will con­form to. This solves the prob­lem of get­ting an appli­ca­tion to pro­gram­mat­i­cal­ly start a print job. We’re pret­ty famil­iar with that prob­lem at the Inven­tion Stu­dio; our printers—Lulzbot AO-101s, Maker­bot Repli­ca­tors 2, Afinia H-Series—each have dif­fer­ent APIs for print­ing to them, and it makes soft­ware automa­tion a com­plete pain of a task to tack­le.
  • Stan­dard 3D mod­el inter­change for­mat designed espe­cial­ly for 3D print­ing. This is a big deal if only because the cur­rent stan­dard for­mat, STL, sucks (and some­how it is stan­dard; even our Strata­sys and Objet pro­fes­sion­al 3D print­ers use it). The new for­mat that Microsoft is call­ing 3MF (“3D man­u­fac­tur­ing for­mat”) is quite neat: it’s still a mesh-based for­mat (to be prac­ti­cal), but it sup­ports spec­i­fy­ing dif­fer­ent mate­ri­als for each vol­ume, as well as sup­port­ing col­or tex­tures (for col­or­ing sur­faces). STL, mean­while, can’t even spec­i­fy that two faces in a mesh are adja­cent to each oth­er.
  • Print spool­er for 3D print­er jobs. The new print spool­er is a part of Win­dows that sits between appli­ca­tions spit­ting out 3D print jobs and the print­er-speci­fic dri­vers. It serves as a pur­ga­to­ri­al 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 spool­er now that lets you print off 2D doc­u­ments for 2D print­ers, with­out even hav­ing any such said 2D print­er con­nect­ed.
  • Sup­port for 3D print­ers using a USB print­er inter­face. I’m not a big USB or dri­vers per­son, so I’m not able to expound on whether using the “class 7, type 3” inter­face1 was the right choice. How­ev­er, I hearti­ly sup­port their view of seri­al over USB2 as a “lega­cy” inter­face. That tru­ly is the lega­cy of 3D print­er 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 con­ve­nient for a quick and dirty pro­to­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 tak­ing a step away from that awful­ness.

    Microsoft-hardware-support

Nor­mal­ly I’m not down for end­ing a post with Sil­i­con Val­ley-esque last-para­graph upturn in opti­mism (what is this, a Quo­ra answer?), but I real­ly do believe that this is a huge step for­ward in 3D print­ing, inject­ing a dire­ly need­ed infu­sion of pro­fes­sion­al engi­neer­ing into a com­mu­ni­ty dom­i­nat­ed by part-time hob­by­ists strug­gling to devel­op com­plete prod­ucts. I real­ly want reli­able, well-designed 3D print­ing soft­ware plat­forms to suc­ceed so we can get on with devel­op­ing actu­al advances in print­ing tech­nol­o­gy, and it’s great to see a big play­er like Microsoft mak­ing that move.

  1. 1284.4 com­pat­i­ble bi-direc­tion­al inter­face: http://www.usb.org/developers/devclass_docs/usbprint11.pdf []
  2. Com­mu­ni­ca­tion device class: http://www.usb.org/developers/devclass_docs/usbcdc11.pdf []