A 3D printed dress made using Blender and Python

By on December 20, 2016
Pin It

The opening ceremony at the 2016 Paralympic Games in Rio featured snowboarder Amy Purdy wearing a 3D printed dress, wearing prosthetics printed from the same material as the dress, and dancing with a Kuka robotic arm.

The dance was a statement about the merging of the human spirit and technology. “The backstory, which mainstream media passed over, was the critical role open source software played in the making of the dress: it was created using Blender and Python.

This post on Opensource.com shows the learning process of a user starting from Blender to end up with printing dresses!

Kittens and architecture

I started with small freelance projects and eventually had a respectable portfolio. I put together a pitch for the game Kung Fu Kittens with a lot of renders of kittens in various martial arts poses. The game never made it past some prototypes in Unity, but with the kitten renders in my portfolio I landed my first full-time job doing visualizations at an architectural company in Boise, Idaho. For some reason the kitten renders impressed the department head, and I’ve been making a living exclusively using Blender and Python for about seven years now.

Paralympics dress

What does all this have to do with the Paralympics? I suppose it starts with Danit Peleg. I was going about my business creating UI elements for some texture tool or something when everyone started talking about a rising star in the apparel industry who created a line of 3D printed garments in her home. Someone sent me the link to a video and a Ted Talk, then explained Danit was coming to Connecticut to meet with some people at Gerber. Danit had used Blender to create all the models for her projects, and I was the “Blender expert” at Gerber, so someone invited me to the meeting.

After the meeting she asked when I could get started helping her put together a prototype of a dress to send to the Paralympics committee. An awkward silence followed as I stared at my boss… after some discussion, management cleared me to stop everything I was working on and start modeling a dress.

In many respects, we were in a perfect position to set up the 3D models for a printable dress. I was already proficient in Blender and had been creating tools for garment design for a couple of years. Then, we were sent Amy Purdy’s measurements. Because we were using Blender as the engine in Gerber’s AccuMark 3D software, we just plugged in the measurements and started modeling around our virtual Amy proxy. Through collaboration with Danit, we developed a workflow to support patternmaking for 3D garment design. Danit was able to work on a virtual fiure that had the same body measurements as Amy Purdy and we were off and running.

I wasn’t very far into the process before I realized I needed some tools I didn’t have. Fortunately, the Python API in Blender allowed for creating some pretty sophisticated tools with minimal effort, as far as software development goes. I’m not talking about macros here. The first tool I made used Einstein summations on N-dimensional matrices to measure along contoured sections of the body and the garment to test virtual fit and distortion between the flattened and deformed versions of the geometry.

All this might sound a bit overcomplicated for making a dress. Part of this is because I’m an engineer now and I’m expected to make things sound more complicated than they actually are. Another reason for the complexity was the pressure we were getting from the Paralympics committee to make sure the dress fit correctly and didn’t have any glitches or create any problems. We kept hearing vague things about the robot’s control system—that its movements were partially dynamic, reacting to the dancer’s movements. If the dress flexes too much, it could confuse the robot’s sensors, or if some part of the dress catches on the robot, the dancer could be trapped (and this robot is strong enough to lift a car so the dancer could be injured or killed). We also had a strict deadline and limited time, so the fit had to be right the first time. “Hey we need you to model a dress and if you get it wrong a paralympian could be killed. Good luck, and no pressure.” The danger might have been a bit exaggerated at the time, but I wasn’t taking any chances.

Several useful tools and workflows came into existence through the process of working with Danit and leveraging Gerber’s AccuMark 2D and 3D applications that will be useful for creating 3D printed garments. I was able to hack into Blender’s UV unwrapping tools, make a few modifications, and extract flat patterns from clothing modeled around the avatar. Numpy let us build a convex hull generator that could step over the avatar to create a basic garment as a starting point. With some rotation matrices around a color wheel we could see where we needed to make darts and seams to allow the flattened geometry to better conform to the shape of the body. Numpy came to the rescue again with a barycentric system for making any shaped mesh follow the distortions of a simple surface. This let us create complex structures on the flat patterns and use the flat pattern to wrap these structures around the avatar in 3D. I realize that was a lot of jargon, but makes a lot more sense when you see what’s happening in the 3D program. To better understand, you can watch my presentation.

About Luca Ruggeri

Leave a Reply

Your email address will not be published. Required fields are marked *