I got myself 3D scanned in the Microsoft tent at the Maker Faire today, and was given a flash drive with the scan on it to take with me. I got back to my computer this evening and discovered that the scan was saved as a .3mf file, Microsoft’s new format for their 3D printer functionality (which is included by default in all Windows 10 installs). Microsoft’s tools for viewing and printing (and otherwise working with) this filetype are not compatible with anything before Windows 8.1. (I guess they’re trying to convince those of us still running Win7 - or Linux or OSX - to upgrade.) That’s OK, I wasn’t planning to use their tools anyways; I was planning to import the model into Blender. I looked through all the import-export plugins, and .3mf was not there, which bothered me but did not really surprise me due to the youth of the format. I started searching the internet for a way to convert this file to another format and found nothing. I did not find a single tool for converting .3mf into any other format, let alone one that Blender could import.

This dearth was something that I could not abide. I decided that it was my duty to create a tool to convert .3mf files to something, anything, usable. I settled on .ply because it is a very simple format that supports vertex colors, which was what I needed. It is essentially the exact same thing as Microsoft’s .3mf, except with different syntax (.ply simply uses spaces and line breaks to separate data, whereas .3mf is, for some unknown reason, complete and proper XML). It took me about three and a half hours to get it working (my Python skills are not exactly stellar), which makes me wonder why nobody else seems to have done it.

Without further ado, here you go! As the file header comments say, you should be running a 64-bit release of Python 3 for best results. Extract the .3mf file with 7-zip (or something similar), place the .model file in the same directory as the script file, and watch it go. If there is significant interest, I may update the script so that it simply asks the user to point it to the .3mf file and then goes from there. Heck, I might even turn it into a proper Blender addon, although that’s far less likely. (If anybody else wants to do either of those things then by all means go for it; the X11 license lets you do that - and a whole lot more - with my code.)

Enjoy!