It seems like everyone is talking about 3D printing these days. Every day there are amazing new stories of people using this technology to create cool new “things”, to solve difficult manufacturing issues, and even to advance scientific causes.
3D printers are rapidly becoming more affordable and more capable. Because of this, 3D printers are showing up on more desktops, workbenches, craft benches, and dining room tables than ever before. If you are looking for a challenge or to save money you can even build your own 3D printer! Don’t have software design tools? No problem! You can find thousands of free objects from online sources (thingiverse.com for example). You can download these 3D models in seconds and then print them at home on your 3D printer. Amazing!
I recently had the opportunity to try out 3D printing end-to-end using SolidWorks 2013 and multiple 3D printers for a few projects. One of these projects was an SD card organizer for a mobile camera setup that I recently put together. What I discovered during this design and manufacturing exercise is that 3D printers aren’t just for fun and games (don’t get me wrong, they are tons of fun) they are also very practical.
Here are some of the things I learned about 3D printers during this process:
- Design for 3D printing requires knowledge of the specific manufacturing process being used. Example considerations for the fused filament fabrication process I used include supports and overhang, tolerances, and surface patterns/texture.
- 3D printed objects can be *very* strong and light because of how the interior of the printed object is formed (infill).
- It is easy to practice iterative design with a 3D printer. I had to alter my SD card holder several times to get the right “friction” when inserting and removing SD cards.
- 3D printed objects can be quite cost effective because of the optimized strength/density ratio.
- Once you start designing and printing objects, you’ll discover many things you can do with this capability.
While these new capabilities are exciting, the consumer 3D printing ecosystem is still very young. Consumer 3D printers tend to require specific setup and operation tweaks in order to achieve reliable and consistent results. The software workflow for taking 3D models to the printer can be time consuming and involved. In this article I’ll give an overview of new manufacturing specifications and features developed for Windows 8.1, and how these new features are going to create new opportunities for consumers, professionals, hardware manufacturers, and software developers. Windows 8.1 is the first OS in the world to offer comprehensive built-in support for 3D printing. It’s a very exciting time in the manufacturing world!
3D Design and Printing Workflow Today
In order to understand the work that is being done to support 3D printing in Windows 8.1, it’s important to first look at the pre-Windows-8.1 3D printing ecosystem and typical workflow. In order to best illustrate these workflows, I’ll walk through an example scenario spanning initial design work in 3D modeling software (Computer Aided Design, CAD) all the way to the 3D printing process.
Example 3D printing end-to-end workflow:
- CAD Design: The design process starts with CAD software (SolidWorks for example) to create a parametric solid model of the part or object that we are designing. Since these models are parameter based (dimensions and other parameters) they can be changed and scaled easily, and don’t have any notion of “resolution”. When the initial design is complete, the model is exported in a format that can be optimized for manufacturing. The result is typically a triangle-based model.
- Mesh Review: After a model has been exported from the CAD program, the mesh model is reviewed and checked for issues and errors.
- Mesh Fixing: After the mesh is reviewed, it may need to be optimized for manufacturing in a custom software program (netfabb for example) so that it can be printed correctly. After this phase, the model will be “water tight” and optimized for 3D printing.
- Printing Prep and Printing: Before the 3D model can be printed, there are many considerations that are evaluated related to output control of the object(s) to be printed. These output considerations include rafts (printed material platform under model used to enhance model adhesion and minimize warping) and supports for areas of the model that overhang while being built up by the printer. These programs may also support options like model density (infill ratio) and print quality (model output resolution). These printing apps slice the model into printable layers, and typically communicate directly with the printer while the 3D model is being printed.
The following diagram shows what this model-to-printer 3D workflow can look like:
Depending on which printer you are printing to, you may need to use specific software in the last phase (printing prep and printing) for the specific printer.
This process for design and printing presents some problems:
- Detail and metadata can be “lost in translation” as the model is exported one or more times in this workflow.
- Intermediate file formats that are required for review and model optimization. These intermediate file formats may not support all of the capabilities of the printer that you intend to use (surface color data for example).
- Since there is no standardized framework for 3D printing, apps don’t easily talk with printers and vice versa. This impedes the growth of the hardware and software ecosystem for 3D printing.
- Using several different apps in the workflow adds significant time overhead and reduces efficiency.
- Workflows involving manipulation of 3D models and 3D printing are best suited for advanced users and are time consuming.
One of the goals for Windows 8.1 is to address these pain-points so that 3D printing can become more seamless and ubiquitous. What exactly does that mean? Read on.
Engineering 3D Printing Support into Windows 8.1
For Windows 8.1, there were very specific goals related to 3D printing support:
- Provide a high quality print experience for Windows Store apps and Desktop apps.
- Make it easy for developers to add 3D printing support to apps.
- Provide uniform compatibility for 3D printers that exist today and in the future.
- Define a feature set for 3D printing that represents the capabilities of 3D printers that are on the market today or in development.
- Support for other manufacturing devices like water jet cutters and CNC milling machines.
The best way that I know to summarize these goals is to make 3D printing on Windows more like 2D printing on Windows. Achieving this goal would require the definition of a common 3D printing data format for Windows, integration with the Windows print pipeline, and close collaboration with the 3D printing hardware and software ecosystem.
A Common Language for 3D Objects
One of the most important aspects of implementing 3D printing support in Windows was deciding how apps should pass model data to 3D printers. There are many different existing data formats related to 3D graphics and 3D models in existence today, but none meet the goals for 3D printing support in Windows. One problem was that STL (the current most common 3D printing file format today) is missing important features like color and material support. Our hardware and software partners noted that STL was important to support as an input format, but is not rich enough for the primary data format for passing data from apps to their devices. Additionally, many of the existing 3D formats are unsuitable for streaming processing by the Windows spooler and print pipeline. After evaluating the alternatives, the decision was made to develop a new 3D manufacturing based on partner feedback and requests: the 3D Manufacturing Format (3MF).
3MF is an XML-based data format which includes definitions for data related to 3D manufacturing including 3rd party extensibility for custom data. The 3MF format provides a solid foundation for 3D printing support in Windows 8.1, it’s a bit like the DNA for 3D manufacturing in Windows. Apps pass 3MF data to Windows, and Windows spools that data out to the 3D printer device drivers. With this data format defined, it became possible to integrate 3D printing support into the OS, using familiar Windows technology.
Extending the Print Pipeline for 3D
While 3D printing is different than 2D printing, many of the same print concepts translate well from the 2D printing space to the 3D printing space. Some of these common concepts include print options, spooling, print queue management, plug and play, and device communication. It was therefore decided that 3D printing in Windows 8.1 would be an extension of the Windows 2D printing model and would share the same underlying driver model, app interface, and pipeline.
For background, let’s take a high-level look at how 2D printing works in Windows. When you print a 2D document from a Windows app to an XPS-based driver, the following happens:
- The list of available 2D printers is enumerated
- The user selects the 2D printer to use
- Print options are selected
- The document data is converted to XPS format (OpenXPS or legacy Microsoft XPS)
- The print driver converts the XPS data to a format understood by the printer. This happens inside the print filter pipeline.
- The data is sent to the 2D printer and printed
The following diagram illustrates the 2D printing data flow using Microsoft Word as an example:
The 3D printing sequence in Windows 8.1 looks very similar:
- The list of available 3D printers is enumerated
- The user selects the 3D printer to use
- Print options are selected
- In the app, the 3D model is converted to 3MF format. The 3MF data is encapsulated in an OpenXPS document package
- In the 3D print pipeline, 3D printer driver extracts the 3MF package and converts it to a format understood by the printer
- The data is sent to the 3D printer and printed
And here’s the resultant data flow for the 3D print pipeline:
The fact that 3D printing in Windows is built on the well tested Windows 2D print infrastructure translates to a consistent printing experience, great reliability, and a consistent developer experience for apps and devices. In Desktop apps, users are presented with a “File > Print” dialog that looks a lot like a traditional 2D printing dialog. Printing from Windows Store Apps is achieved via the Devices Charm on the Charms Bar. By selecting “Devices” on the charms bar and then “Print” from the flyout, users can then select the 3D printer to use:
And then specify 3D printing preferences:
If default settings are used, this process is as simple as selecting the printer and then clicking/tapping the print button.
Optimized Workflows for 3D Printing
The Windows 8.1 3D printing workflow is greatly improved compared with alternative solutions. Because applications are decoupled from devices, interoperability between 3D printers and apps is greatly expanded. When targeting Windows 8.1, app developers can remain focused on 3D modeling technology while 3D printer manufacturers can focus on the 3D printing side of the equation. Furthermore, it is now possible for any app in the 3D print tool chain to support 3D printing easily.
The following diagram shows how multipurpose apps and specialty apps can take advantage of 3D printing in Windows 8.1:
Windows 8.1 apps can easily support multiple 3D design, review, and printing paradigms including:
- Comprehensive design, review, prepping, and printing
- Special-purpose functionality with printing
- Review and print only
In addition to building 3D printing support into the operating system, Microsoft has also developed an SDK for developers that includes documentation and sample code for 3D printing drivers and apps. If you want to know more about the Windows 3D Printing SDK, you can contact the 3D printing team at Microsoft.
3D Printing Demo
While it’s interesting to talk about 3D printing, you can’t really appreciate this new technology without seeing it in action. I have put together a quick video that demonstrates printing a 3D model from a Windows Store App to a 3D Systems Cube 2 printer on Windows 8.1 Preview:
3D Printing is an exciting technology that is rapidly evolving and becoming more accessible to consumers and professionals. At Microsoft, we’re excited to be a part of advancing this cool new technology, and look forward to sharing it with the world when Windows 8.1 ships. If you want to know more about 3D printing in Windows 8.1, please check out the resources below!
- //build 2013 3D Printing Recorded Session
- Windows 8.1 3D printing SDK via email@example.com
- Microsoft 3D Printing Homepage
- Questions: firstname.lastname@example.org
Find me on twitter here: @GavinGear