Moon Shot

by WilliamAAdams, published

Moon Shot by WilliamAAdams Nov 27, 2011

Featured Thing!

11 Share
Download This Thing! Customize Order This Printed Tools & Utilities

Thing Info

19593Views 4819Downloads
Report Thing


Inspired by Bre's Moon crater, I thought, why not the whole moon?

This thing is a bump mapped sphere that uses the planetary map data/images from here:

Specifically, I used this one:

I essentially used the same bump mapping technique I used on this bowl: http://www.thingiverse.com/thing:13991

That is, use the picture as a height map. Use that height map to displace the vertices around the sphere. At the same time, use the image to colorize the thing as well, if you want extra reality.

Now came the special part. Since I had the moon in my hands, I wanted to split it open and see what it was made of, answering that age old question once and for all.

So, I cracked it open, and found that it was in fact hollow! No green men, no Amazonian women, no cheese, nothing, just a void. Unlike answering the Easter Bunny question, this was quite a let down.

And lastly, since I was exploring the surface using MeshLab, I finally found the man in the moon. You can see him highlighted in red smiling back at us.

This has got to be great for science exploration!

A bit about the .stl files. I used Banate CAD to generate the models directly. The full moon has roughly 500,000 vertices, and double that in terms of faces. The partial moon has double the number of vertices because it has to generate the 'inside' as well as the outside. Each one took about 40-50 seconds to generate on my standard issue 3 year old Phenom II based machine. The generation time has more to do with the number of vertices than any other complexities. The routines create the normals for each face, whether they're needed or not, so this time could probably be cut in half in cases where you don't really need the normals, but it would not look nice when you render.

To generate any spherical thing, you would just change one line of code in the .fab file:

local heightsampler = ImageSampler.new({
    Size = size,
    Resolution = res,

Change "Filename = '...'",
to be whatever file you so happen to want to bump map.

This is the quick and dirty form of Bump/Height mapping. There are two things that should be done to improve the quality of such things. First, I'm doing a straight translation from the height map to a height value. What I should really be doing is taking an average, so you don't see such artifacting. The other thing is, for a sphere, there are better ways to apply a texture than to simply wrap the rectangle. By wrapping the rectangular image to the sphere, you lose something at the poles. I need better images which account for the spherical nature.

But hay, for changing just a single line of code, this is not a bad technique.


1) Download huge model
2) Print
3) Rejoice!

Thing Info

19593Views 4819Downloads
Report Thing

Liked By

View All


Public Domain
Moon Shot by WilliamAAdams is licensed under the Public Domain license.

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag. Print Thing Tag

All Apps

This App connects Thingiverse with Makeprintable, a cloud-based mesh repair service that analyzes, validates and repairs most common mesh errors that can occur when preparing a 3D design file for p...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

could you provide a version with exaggerated height map? (To print a small pendant)
On my slow netbook it takes for ever to process :-(

Hello, I am having problems printing this - any further instructions?

There are multiple camera shots of Mars, as well as a number of asteroids and comets that could be used to make mock-ups.

Is banate cad not working with the current Lua or something? I had it working a while back and I just tried to use it on a new pc and get parsing errors trying to compile and render. Just curious if you are still tinkering with this.

I've done a couple of revision on BanateCAD, and am currently working on a newly named one called TINNCAD. This newer one is self contained, meaning doesn't rely on installed lua, so it won't care how lua evolves. Will be released in a couple of weeks.

I'm wondering if anyone has tried printing this in PLA with Rep 2?

I tried printing the full sphere on Rep2 using Makerware in white PLA. After about 1" of vertical height, I noticed that as the nozzle was going around the circumference it was making the model wobble. By 1.5 vertical inches, the wobbling caused the model to unstick from the build plate despite good initial adhesion.

I'm wondering whether to try this again with a raft this time...

The poles have peaks of eternal light*, so they are of great interest for scientific missions.

  • With the exception of eclipses.

This would make a great base for a moon-phase clock. Thanks for posting!

First of all this model is awesome and looks beautiful. I can't wait to print it and know of many kids who want one.

However, I've tried OpenScad, I've tried NetFabb, a friend tried Solidworks and none of us can cut this thing in half in order to print it. Can someone either post two halves or tell us the secret to making our own?

I didn't want to make this request before giving it a reasonable effort, but now
I'm reaching my wits end and need help from other makers out there.


Printed first half, second half printing now. Shown here with a LED inside.


How did you split this object for printing? Like billybob...all known methods to my clan (solid works, openscad) have failed.

I used Netfabb to split it. You could also try meshlab.

Wait, you just forgot to set your infill settings to "cheese".