There isn’t much that is “open” in the proprietary world of medical device design and development. Designs are guarded, competition is spirited, employees and vendors are bound by strict non-disclosure agreements. Yet for all the varied and confidential pursuits that we undertake in this industry, we all have at least one interest in common: human anatomy. Everything we design travels through, or is placed within, some part of the human machine. A machine so ubiquitous that while I am using one at this very moment, most of you are as well at this same moment. And yet despite eons of medical study and inquiry, collaboration, and publication, it holds its secrets in plain view. The blueprints for this most essential of machine are strangely out of reach.
Sources of 3D Models
We can freely download 70,000 technical drawings and 3D CAD models for nuts, bolts, and mechanical components from McMaster Carr [mcmaster.com], but they don’t sell body parts, so no luck there. There are great sources for viewing 3D anatomy, like ZygoteBody.com. But if you want to download native 3D files, you’re going to have to pay. 3DScience.com sells medically accurate models for animators, illustrators, and engineers. They cost hundreds or thousands of dollars, and they’re probably worth it. The good folks at Pacific Research Laboratories [sawbones.com] can sell you dimensionally accurate polymer based models for product testing or demonstrations, as well as 3D CAD files representing them. These things are great, but they are neither open nor free.
Modern medical imaging, including CT and MRI scanners, provides a wealth of 3D data, but it isn’t easily translated into a form that is useful for engineering. Commercial software like Mimics [materialise.com] does a nice job of this, again for a price. OsiriX is an awesome open-source program for viewing medical datasets, and with considerable effort, it is possible to extract 3D structures in a format that can be used for engineering (example described in an older post, but I really should write a new post some day with details on how to create such models). OsiriX hosts a number of example DICOM data sets [osirix-viewer.com], which are treasure troves of freely accessible digital human anatomy, for anyone ambitious enough to try to extract it.
Visible Human and BodyParts3D
I recently discovered the NIH/NLM Visible Human Project®, which is a public effort to develop “complete, anatomically detailed, three-dimensional representations of the normal male and female human bodies”. (The ® seems suspicious for an NIH project, doesn’t it?) The project and related initiatives, underway since 1989, have produced many gigabytes of data, and I’m sure have entertained countless scores of grad students and post-grads. But unless I’m missing something, I can’t find any publicly available 3D solid or surface files derived from these impressive data sets. (update: the University of Iowa hosts male and female Visible Human data sets [uiowa.edu]) Refusing to be deterred though, I Googled obsessively until I hit paydirt, in an unexpected place: The Journal of Nucleic Acids Research.
In the 2008 paper BodyParts3D: 3D structure database for anatomical concepts, (abstract on PubMed, open access PDF from oxfordjournals.org) some ambitious researchers in Japan set out to create:
BodyParts3D, a dictionary-type database for anatomy in which anatomical concepts are represented by 3D structure data that specify corresponding segments of a 3D whole-body model for an adult human male
The project was funded by The Integrated Database Project, Ministry of Education, Culture, Sports, Science and Technology of Japan. (Arigatō!) The website alone is quite impressive, and is even translated into English (see http://lifesciencedb.jp/bp3d/?lng=en). But this project goes beyond just displaying pretty pictures… The native 3D models for thousands of carefully rendered body parts are made freely available under a Creative Commons Share-Alike license! And they can be downloaded from an FTP site, in high resolution!
Finally, a complete source of 3D digital human anatomy that is freely available, accessible, and suitable for use in with solid and surface CAD software. From Japan! The files are available in Wavefront OBJ format [wikipedia.org], which can be imported as a 3D surface into CAD software like SolidWorks, finite element analysis (FEA) software like Abaqus or Ansys. These files can also be manipulated in open-source programs like Blender [blender.org] or Meshlab [meshlab.org]. Either of these can also easily convert the .OBJ files into .STL files that can be printed on a 3D printer! Like a kid in a candy shop, I’ve created a few of these already, and hope that others will create more. Here’s the basic procedure that I used.
Creating STL models from BodyParts3D
- Download and unzip the OBJ files. The originals are at ftp://ftp.biosciencedbc.jp/archive/bodyparts3d/, but I’ve made a copy (as permitted by the CC-SA license) in case the originals disappear, and to avoid taxing their FTP server in case this gets popular (which I hope it does!). You can grab my copy of the 547MB zip file here: BodyParts3D_3.0_obj_95.zip [docs.google.com].
- Find the FMA number of the body part of interest. You can do this using the web interface at http://lifesciencedb.jp/bp3d/?lng=en or by searching the English version of the the parts list (parts_list_e.txt inside the zip file). It helps to know something about anatomy, of course. It also helps to know that many of the FMA numbers on the list refer to groups, rather than individual parts. For example, FMA9664 “foot” contains FMA70664 “set of toes”, which contains FMA25047 “big toe”, but you will find none of them in the list of .OBJ files. Instead, you need to find FMA230986 “middle phalanx of right little toe” and 27 other bones if you’re trying to build a complete skeletal model of the right foot.
- Create a new empty project in Meshlab, and import one or more .OBJ file of interest. Each .OBJ will be on a separate layer in the project, and Meshlab doesn’t make it easy to figure out how to work with layers. Hint: Filters > Layer and Attribute Management.
- Save the Meshlab project at this time if you think you might want to do some more work later.
- Merge all visible layers into one. Filters > Layer and Attribute Management > Flatten Visible Layers.
- Save the mesh as an STL file. File > Export Mesh > select .STL as type.
- Close the project without saving to preserve the layer organization for each component.
Slicing STL files
- Create a new empty project in Netfabb
- Import the .STL file from above. Part > Add
- Rotate the part into a desirable orientation, so “up” is in the direction of the +Z axis. Part > Rotate
- Move the Z cutting plane to the desired location using the “Cuts” slider at the right. Click “Execute Cut”, then “Cut”
- In the parts window at the upper right, delete the part of the cut to throw away.
- Right click on the cut part to keep, and choose Export part > To .STL
- If offered the opportunity to repair the geometry, do so!
- Prepare for printing using your tool of choice. I’m partial to Cura [github.com], which I use for everything.
- Print, and/or…
- Upload to Thingiverse, and tag with “bodyparts3d”
Challenge
This data set is not perfect. It is derived from a single donor, and with 2mm resolution, much of the detail was subject to artistic interpretation. These models were never intended to be anatomically perfect, but they are an excellent free and accessible resource for artists, engineers, makers, and bio-hackers. I have converted several into models suitable for printing, and you can do the same! Here are the first ones that I put up on Thingiverse:
- BodyParts3D Ears: http://www.thingiverse.com/thing:31843
- BodyParts3D Foot: http://www.thingiverse.com/thing:31865
- BodyParts3D Lumbar Vertebrae: http://www.thingiverse.com/thing:31845
- Everything tagged with BodyParts3D: http://www.thingiverse.com/tag:bodyparts3d
The conclusion of this effort is inevitable… So who will be the first to reconstruct a complete 3D printed assembly of our immortal Japanese donor? The challenge is now declared! Leave a comment here when its done…