First, get some data. PDS is the home of the Planetary Data System. LOLA is the home of the Lunar Orbiter Laser Altimeter. Click on the GDR link and you get a list of files. Starting on the second page is a list of LDEM files. They are available in .img and .jp2. I haven’t found any program to open .img on a microcomputer, so use jp2. Click on a listing and an information window appears at the right. Right-click on the filename and select save, or click the “Add to Cart” link. You can put several files into your cart and have them delivered ftp. Alternately, you can right-click on a file and download it straightaway.
Once you have a file, you need to read it. There are free photoshop plug-ins to read JPEG2000 files. You need to have the plug-in installed and working. The plug-in expands the file and reads it in to photoshop. These files can be big. The polar files are stereographic projection, and the full-moon files are cylindrical. They are 16-bit grayscale. If you are familar with the moon you will immediately recognize areas in the grayscale image. Select an area with the clipping tool to begin your work.
To use them with another program, you need to reduce the data density to reduce the amount of work the other program will do to produce 3D. Image Size does this nicely. At the resulting scales I haven’t seen any difference between Nearest Neighbor and Bicubic for the method. I have a 2Gb mac laptop that can work with 800 x 800 image for 3D stereo lithography, or 1200 x 1200 for point clouds. (Update: I have an 8Gb machine with an SSD, and have produced 2k x 2k surfaces with it. That took eight hours. Saving the surface as six tiles took three hours.)
Save the file as a 16-bit grayscale TIFF. Mathematica can import tiff files. A little bit of coding and the imported file can be plotted with ListPlot3D. The two facts: the actual heights in meters above the reference radius of the moon is doubled and stored as a 16 bit number in a pixel. Mathematica reads in grayscale files as a number between 0 and 1. So multiply the values by 2^15 to get the actual heights. After you plot in ListPlot3D, Export as an stl for stereo lithography and imaging in meshlab, or obj to save as a point cloud. My two gigabyte laptop tops out at about 600 x 600 before it runs out of memory. For larger sizes I use a high performance computer with up to 128 Gb; a 650 meg 2500 x 2500 stl used about 37 Gb to process.
STL files can go directly to a prototyper for 3D printing.
I use Blender now for snapshots and for movies. The lighting controls are much better than meshlab.
For movies I use Blender 2.5, a free, open-source 3D animation program (the latest version is 2.60 available at http://www.blender.org). Import the stl file, scale it down to roughly 100 x 100 and move it down in Z until you can see it. Then you can light it with a Sun lamp and take a snapshot, or skin it with a 2D texture image taken from http://target.lroc.asu.edu/da/qmap.html, which has all the WAC and NAC camera data from LROC. If you skin the stl, light it with a hemi and animate the camera to make a movie. Skinning is fussy, fussy, fussy. The stl has to be properly oriented before the import, and the texture map the right size. It has been entirely cut and try, but very satisfying when the crater falls into the cup. I haven’t gotten UV mapping working in this process because of the large file sizes: it has slowed the computer too much to be responsive.
Blender can work with larger files than meshlab, but you will need 16Gb for files over 500 meg, and be prepared to wait. There is a few second lag between mouse movements and screen response. I’ve had success by taking a snapshot of a high-resolution stl at a low sun angle, and using the picture as a 2D texture for a low-resolution stl of the same area. In this case the orientations and image sizes all line up. For the South Pole, the results matched the Kaguya-Selene HD video of the same region.
You can reduce the file size in Meshlab before importing your stl file by Removing Duplicated Vertices under Cleaning and Repairing. Export the mesh as .ply file. There is a bug in Meshlab that prevents exporting as stl after removing duplicated vertices. The mesh will export but the duplicated vertices remain. A 39 meg mesh can be reduced to 14.8 meg. There are still the same vertex and face counts in the file. Blender will import .ply files. These days I export from Mathematica as .ply. You still have to remove duplicated vertices in Meshlab.