Introduction: Polyhedron Modeling With JavaGami

About: CU Boulder Craft Technology Lab, Institute of Cognitive Science, University of Colorado, Boulder.

JavaGami is a software environment for designing paper polyhedral models. Users select from sets of starting polyhedra on-screen and then apply functions to customize (stretch, cap, truncate, slice) the polyhedra. The software generates two-dimensional folding patterns that may be printed by a color printer and cut, glued, and assembled into a real paper model.

The polyhedra may also be saved as .obj files for output to a 3D printer.

JavaGami is available free of charge through the Craft Technology Lab at the University of Colorado. It is available here for both Mac and Windows.

Step 1: Starting the Software

Double-click on the .jar file.

Step 2: Software Overview

JavaGami consists of five windows.

1. The Shapes window contains different palettes of starting shapes (use the menu bar at the top of the window to navigate to different palettes). There are five sets of built-in shapes -- Basic Shapes (the Platonic Solids); the 13 Archimedean Solids; Prisms and Antiprisms; the duals of the 13 Archimedean Solids; and 20 of the 92 Johnson Solids.

2. Clicking on a shape loads the shape into the 3D object window, the Wire Frame window (where you can drag the mouse over a wireframe rendering of the polyhedron), and the folding net (two-dimensional folding pattern of the shape) appears in the Net Draw Area. The Net Decoration Tools window contains simple colors and fills for decorating the folding net.

Step 3: Loading and Painting a Shape

To load a shape, click once on a polyhedron in the Shapes window.

In the Net Decoration Tools window, select "fill" or "draw" and then select a solid color. Click on the folding net in the Net Draw Area window to either fill a polygon with a solid color to do draw free-hand designs on the folding net.

To fill the folding net with a texture:
Select either the Textures or Textures2 tab in the Net Decoration Tools window. Select the texture, and then click on the folding net in the Net Draw Area window.

Step 4: Saving and Printing

Once the net is decorated, save the file as a .png. You can open this file with Preview on a Mac or your favorite image-viewing software on a PC to print. (JavaGami currently does not support direct output to a printer).

Step 5: Stretching and Shrinking Shapes

JavaGami allows the user to apply linear maps along the x, y, or z-axes of a polyhedron. In this example, we will take a cube and stretch it by a factor of 2 along the z-axis. First load a cube by clicking on the cube in the Shapes palette. Then, in the 3D object window, select the "Stretch" option, then enter the number 2 in the text box, click on the "z" direction, and click unfold. The new shape will appear and the system will generate the corresponding folding net.

Step 6: Adding Caps (pyramids) to Faces

JavaGami also allows the user to add pyramids to faces of a shape. In this example, we will take our stretched cube and add a pyramid to the square face. After selecting the "Cap" option in the menu of the 3D object window, we enter a cap height of 1.0, and click the unfold button. The software displays the new capped shape as well as the corresponding folding net for the shape.

Note: JavaGami always attempts to calculate a single folding net for a given polyhedron, so it is not always possible to add caps to shapes. If you have an error message that unfolding has failed for a given shape, JavaGami could not calculate the folding net for your new shape. If possible, enter a smaller cap height, or cap a different face of the shape.

Step 7: Slicing a Shape

JavaGami has a slicing function to divide a shape into two parts.

  • select 3 vertices on the shape, which will determine the slicing plane. The vertex you've selected should appear in red.
  • click the unfold button
  • click on the slice 1 button to see the first slice (and the folding net for that slice will appear in the net window)
  • click on the slice 2 button to see the other slice

Step 8: Truncate a Shape

Truncation in JavaGami: Imagine a scissors snipping a polyhedron at a vertex.

  • load a shape (or start from the current one in your object window)
  • find the truncation panel in the 3D object window
  • enter a value for truncation distance (we currently do not have a good way to explain the number you should use - the example above uses 0.5 on a standard cube).
  • click on the vertex to truncate - you should see a red dot appear
  • click the unfold button
  • click on slice 1 to see one part
  • click on slice 2 to see the other
  • (think of one slice as the thing you've "snipped" off, think of the other slice as the truncated shape).

Step 9: A Note About Unfolding "failures"

JavaGami attempts to unfold the custom polyhedra that you generate into a single folding net. This is almost always possible (in our software) for completely convex shapes, but it is not uncommon for the software to fail to find a folding net for shapes which are non-convex. Note that the actual solid generated by the software is a valid shape, even if the net unfolding fails. This is useful for generating .obj files of non-convex shapes.

For example, the 3D object above fails to unfold as a single net in the Net Draw Area, but it is possible to save the solid object as a valid .obj file.

Step 10: Saving Solid Objects

JavaGami allows you to save solid objects for output to graphics programs or 3D printed.