Meshmixer is a 3D tool I developed from 2009 to 2016. In that time I took it from literally nothing, to a highly popular Autodesk product used by thousands of people every day and over 1 million downloads. You might know Meshmixer as a mesh repair tool, a 3D printing supports generator, an easy-to-use STL editor, or just “a free tool for making crazy-ass 3D stuff without too much hassle". It is all of those things, and more. This is my version of Meshmixer's weird history.

meshmixer01

Meshmixer began its life as DragDropDemo, a research tech demo I developed in the DGP Lab at the University of Toronto, as part of my PhD. I had just published my work on Surface Trees, which are a sort of layered-mesh-edits shape representation (see video to right). In this project we had some very basic mesh drag-and-drop functionality, and the idea was to make that more sophisticated. I developed a deformation algorithm called COILS, which had much nicer behavior for drag-and-drop than the state-of-the-art variational/Laplacian methods. We submitted a paper to SIGGRAPH, and it was resoundingly rejected. 

As the year progressed, I improved the demo, and in the fall we decided that including some "real user" results might sway the reviewers. After a few hours of brainstorming I discovered meshmixer.com was unregistered, so I grabbed it and we had a name. On November 29, 2009, I posted meshmixer 01, made a demo video, and let a few people know via email. Here is a WayBackMachine snapshot of that ancient website. Within a few days, this thread appeared on the CGTalk news forum. Four pages of positive comments! I was incredibly excited, and certain that we had a lock on our SIGGRAPH resubmit.

Naturally, it was rejected again! At this point we settled for a Talk submission, with the intention to resubmit again. That never happened, and the paper ended up as a Tech Report.

meshmixer02 

Siggraph wasn't until August, so I had some time, and the positive feedback from the first version motivated me to make improvements. The UI was still tech-demo-level, but the tool was more reliable and more usable. I released meshmixer02 on April 21, 2010, in a CGTalk forum thread. We were still thinking of this as a research project, and so at the same time I began developing a "clone-brush" type interface. Both of these ended up in our 2010 SIGGRAPH Talk, and the tech report. However, they were separate applications, and the clone brush code was never merged into the meshmixer app. 

However, something that is not widely known is that both the CloneTool and DragDropTool codes are fully open-source with commercial-friendly licenses. You could make your own meshmixer-style drag-and-drop app! If you would like to try out this early version of the interface, here is a Windows EXE.

meshmixer04: sculpting!

As I was developing meshmixer, another coder named Tomas Pettersson (DrPetter) was developing a tool called Sculptris which, unlike ZBrush or Mudbox at the time, allowed you to sculpt unstructured triangle meshes with local dynamic Loop subdivision. The potential for combining meshmixer and Sculptris was obvious to everyone. However at the same time, Pixologic was talking to each of us independently about joining their team. I had other plans, but Tomas joined Pixologic and Sculptris became their free entry-level product.

I was already working on some basic mesh sculpting. Meshmixer03 (March 7, 2011) had a basic smoothing brush, but Meshmixer04 was the real breakthrough. Released on April 7, 2011, Meshmixer04 had the first implementation of my VolumeBrush with dynamic local remeshing. Unlike Sculptris' local Loop subdivision, I was using individual edge flip/split/collapse operators, which were much more flexible, particularly when "reducing" resolution. I was also refining the UI, replacing GLUI with Qt and implementing an undo system.

In fact, undo for the mesh sculpting was probably one of the hardest things I have ever had to implement. It is too expensive to store snapshots of the entire mesh. Instead, during each stroke I had to track the changes made to the mesh topology, and generate mesh deltas on mouse-up. Doing this efficiently, and handling all the weird topological cases that can occur, is not easy. I spent days just scribbling on the mesh to find weird unhandled boundary cases. 

Actually, I shipped it with some of those cases unhandled. On the morning of April 7, my wife called to say that she thought she was going into labour with our second son. So, I decided that it was time to ship! I posted a build in the afternoon, and he was born that evening.

 

joining autodesk

Meshmixer05 (May 16, 2011) added a bunch of new sculpting tools, the Smooth Boundary and Extrusion tools, and I had Meshmixer06 just about ready to go, I was even posting betas on the forum. And then I went silent. On the forums, my amazing users wondered if I had abandoned the app. And I couldn't tell them! It was a busy few months. But eventually things were sorted out, and with the release of Meshmixer07, the news became public: Autodesk had acquired Meshmixer

Obviously this was very exciting for me, personally. Although Meshmixer went on to be widely known as part of the 123D line, I did not join a product team. I joined Autodesk Research, where I had previously been an intern, to lead the Design & Fabrication Research Group (a group of 1, then). My job was not to develop and maintain Meshmixer. At the scale of Autodesk, my few hundred users were inconsequential. However, because I was in Research, I had the freedom to continue development of Meshmixer as a research project, and since it was already public, I was allowed to keep releasing updates. 

As a small aside, I will note that this situation is incredibly unusual at a corporation of Autodesk's size. I had quite a few meetings with internal teams who simply could not wrap their heads around the idea that Meshmixer was being released publicly by a single person, without the involvement of Brand, PR, Marketing, and so on. Not everyone was happy about it. But, because Autodesk Research was isolated from the product orgs, only a handful of people had the authority to tell me to stop, and they were prescient enough to not make that mistake. 

During the following year we only had one additional major release - meshmixer08 - but I was doing incremental updates every few months. I developed many of the core Meshmixer features you know and love during this time, as can be seen in the changelog on the wayback machine. Surface brushes, Remesh and Reduce, Join, Plane Cut, Mirror, Align, Stamp, my Mesh Booleans, and the Face Group system were all done during meshmixer07 and 08. Basically, with the remeshing system I had built, and the adaptive dynamic octree I implemented for spatial query acceleration, I had a whole suite of tools that were just waiting to be coded up. It was an extremely productive time.

During this time, the main uses of Meshmixer were for scan mesh repair and 3D sculpting. Autodesk Labs was developing their Photofly photogrammetry tool (which evolved into 123D Catch, Recap, and Memento), and Meshmixer was tasked with filling the holes and repairing the scans. In fact, there was briefly a web version of Meshmixer as part of this project. I stripped off the UI and the guts of meshmixer were wrapped in a browser plugin. The result was not very usable, but this decoupling of UI and mesh processing engine had big implications later. 

Meshmixer's sculpting was also proving quite popular, and users of 123D Sculpt and Mudbox were both asking for Meshmixer-like capabilities. I spent a lot of time thinking about how to combine multiresolution SubD quad meshes and dynamic triangle meshes. A big limitation was that the Meshmixer sculpting engine would get blogged down once the mesh had a few hundred thousand triangles. Not enough to hit Mudbox-like detail levels. However in December 2011 I released an update that was vastly faster, to the point where millions of triangles could be sculpted at a reasonable framerate. 

The big optimization: using display lists instead of drawing triangle-by-triangle each frame. (Modern OpenGL coders are screaming right now - display lists! in 2011!). But, a mesh with edge topology that is changing every frame has very different constraints than even an animated static mesh. Since you can't tumble during a sculpt stroke, I also clipped the repaint region to the square around the brush. These two optimizations allowed users like MagWeb to create the sculpt above. I was stunned. This was something I could not have imagined being possible in Meshmixer. But time and time again, Magweb has blown me away. His forum thread is basically a timeline of Meshmixer's increasing capabilities.

At this time, Meshmixer was mainly a mesh editor. But in early 2012 the consumer 3D printer revolution was starting to pick up steam, and I started to hear from people using Meshmixer to fix broken STLs. I made somewhat of a pivot and started focusing on these problems. I added Units, the Stability, Overhang, and Measuring tools, and Snapping capabilities that made it easier to set up prints. 

meshmixer 2.0

During this time Meshmixer was growing in popularity, but it was still a relatively tiny userbase, and frankly quite a difficult tool to learn. In the videos above you can see that it had an unusual adaptive-menu system, where only options relevant to the current context (selection, etc) would be shown. This was super-efficient but also made it impossible for newcomers to figure out what Meshmixer actually did. And, naturally, there was no documentation besides a few youtube videos. 

During the summer of 2012 I also taught the first 3D printing workshop in Toronto, organized by Ladies Learning Code, and based on Meshmixer. It was highly successful and lead to many other 3D printing events based on Meshmixer. Everyone could see the potential. But I was also kind of stuck - since Meshmixer was not my "real job" (that was being head of a Research Group), I had less and less time to devote to it. It needed major work, and the future was very cloudy.

Luckily, at an internal Autodesk technical summit I gave a talk about Meshmixer that attracted the attention of Autodesk's then-CEO, Carl Bass. Not long after, Carl visited the Toronto office, where he learned that Meshmixer was still a one-man operation. So, he enlisted some help from the newly-formed Consumer Division. I can say, conclusively, that Meshmixer would not be anywhere near what it is today without Carl stepping in at this critical time. 

Sara Zokaei and Dan Pressman designed a far more functional UI, and Sara worked with a team of developers in Pune, India, to get it built. It was immediately obvious to everyone that this was going to be a massive improvement for meshmixer users.

At the same time, I had been developing my branching support structures system. This was initiated by a conversation with the same Dan Pressman, who had manually made some support posts in Maya for a print that kept failing with the standard Makerbot supports. I wrote a basic generator for support posts, then clustered them, and then re-wrote the entire thing several times, until I had something that was reasonably reliable. I wrote more about this on the Support Structures page.

The improvements were big enough that we decided it should be called Meshmixer 2.0 (plus I had hit meshmixer09 and so we had to do something). It was released on September 20, 2013, with a fancy launch video that had a bit too much glossy-shading in my opinion (a battle I fought and lost). This video also shows how I created mymoderately-famous Bunny Peel model, which was widely used as a support-structure test. 

Although it looked fantastic, Meshmixer was still a weird Research Group non-product, and the help I got with the 2.0 release was intended to be a one-time thing. The situation of the "help this guy because the CEO said so" variety. But then...

Meshmixer Explosion

Autodesk's PR & Marketing people had no idea that we were about to release Meshmixer 2.0. Because it was a weird Research Group project, Meshmixer wasn't part of the Autodesk machine, or even the 123D brand. The Consumer people I was working with had no expectations. However, since the early days of meshmixer I had developed my own approach to guerrilla PR - ie, the "submit news" forms on 3D industry news sites, blogs, and forums. I had been getting reasonable press coverage every time I put out a major update. So I knew that Meshmixer 2.0 would not go unnoticed. 

And it didn't. Meshmixer 2.0 was covered on nearly every 3D software news site, and because of the Support Structures, it was widely covered on 3D printing sites as well. This was a huge surprise to the Consumer people, and quickly lead to discussions about Meshmixer 2.1. In particular, the Consumer group needed to decide what to do with 123D Print Utility, which was a small 3D printing tool that had some nice features but needed to be combined with the more powerful tools we had developed in Meshmixer. It was decided that putting 123D Print Utility into Meshmixer was less work than the other way around. And so, on February 18, 2014, Meshmixer 2.1 was released with the integrated Print View.

I also added the Offset and Make Solid tools, which were particularly useful for 3D printing. Make Solid quickly became the default answer to "how do I make this model printable". Christian Pramuk had taken over as PM, and he made a great release video, as well as the Meshmixer 101 Youtube Playlist, which was the first real attempt at making Meshmixer easier to learn for newcomers (and experienced users, who were routinely emailing in to request features that we already had!).

The net effect of all this new stuff was that Meshmixer usage absolutely exploded. 

 

 

Today

(They don't get data from Greenland)

(They don't get data from Greenland)

 

 

 

 

 

 

 

 

 

 

 

 

 

This story of Meshmixer has yet to be written. In the meantime, here is a picture of Hillary Clinton looking at a thing designed in Meshmixer! (It's a vascular phantom used for neurosurgery simulation & training, created by Dr. Ciprian Ionita and his students at the Toshiba Stroke and Vascular Research Center in Buffalo, NY)

Clinton1.jpg