polywog
a free, simple 3D modeling program


This was a pet project of mine many years ago, the first large application i ever wrote, began when i was 17 in college.  Much of the original coding was done during a few months in Berkeley in early summer 1990, while i was looking for my first programming job.  It lives here on my site, although it's certainly a rusty antique by modern software standards, because i have a soft spot in my heart for it.  It also does a few things with polyhedra (such as dualization) for which i don't of any other software in existence.

You can still download a version for Windows or the Amiga.


Features


Documentation

The main purpose of this program was to play with polyhedra and "geodesic" structures. However, it is fairly general-purpose so you could use it for any sort of polygonal 3D modelling.

BUTTONS

VERTEX ADD
Puts you in Add Vertex mode. Click to add vertices anywhere. They will their third coordinate as zero (no depth).

VERTEX DELETE
Puts you in Delete Vertex mode. Click to delete vertices. Polywog will prevent you from deleting verts which are being used by polygons or lines.

VERTEX SELECT
Puts you in Select Vertex mode. In this mode, clicking on a vertex will toggle its selection. Double-click will do a select-connected from the indicated vertex.

VERTEX MOVE0
Puts you in Move Single Vertex mode. Click and drag to move a vertex.

CREATE POLY / POLY3 / POLY4 / LINE
Puts you in Create mode. For a polygon, click on each of the vertices, ending with the first vertex. For "POLY3" and "POLY4", Polywog knows that you want a 3- or 4-sided polygon, so you don't have to end with the first vertex. For a line, just click on two vertices.

DESTROY POLY / POLY3 / POLY4 / LINE
Puts you in Destroy mode. For a polygon, click on each of the vertices, ending with the first vertex. For "POLY3" and "POLY4", Polywog knows that you want a 3- or 4-sided polygon, so you don't have to end with the first vertex. For a line, just click on two vertices.

SELECTION STRETCH
In Stretch mode, hold down the mouse and drag to stretch the selected geometry in the two dimensions that the mouse is moving in. Stretching is performed around the selection center.

SELECTION MOVE
In Move mode, hold down the mouse and drag to move the selected geometry in the two dimensions that the mouse is moving in. Holding down SHIFT will snap the starting and ending points to the nearest vertices. This can be extremely useful for lining up parts of an object.

SELECTION SCALE
Scaling is exactly like stretching except that the all three dimensions are stretched by the same factor.

SELECTION ROTATE
In Rotate mode, click to define the point to rotate around, hold down the mouse and drag to define the amount of rotation. Let go and the selection will rotate.

SELECTION SET COLOR
Hitting this button will set all selected polys to the current color.

AREA SELECT
In Area Select mode, drag to define a box. All visible vertices in the box will be selected. Unless you hold down SHIFT to extend the selection, all vertices outside the box will be deselected.

AREA DESELECT
In Area Deselect mode, drag to define a box. All visible vertices in the box will be deselected.

AREA ZOOM INTO
In Area Zoom mode, drag to define a box. You will zoom in to view only the geometry in the box.

VIEW FRONT / SIDE / TOP
Indicates which view.

VIEW FAKE 3D
Adds an orthographic slant to your view. This is useful for getting a sense of depth for telling apart the front and back of objects. You can still do ALL editing in this mode. Viewing your object from a true 3D perspective requires a separate program, either realtime or non-realtime, such as WorldToolKit or POV-Ray. Nonetheless, it is often useful to have a "fake" orthogonal slant, as a conceptual or selection aid.

ZOOM
Lets you change the degree of magnification. In Zoom mode, click the first button to zoom in towards a location, second button to zoom out away from a location.

GLUE
Glue will "merge" the the point closest to the pointer and the point closest to it. All degenerations are handled correctly.

REFERENCE LINE
The Reference Line tool is a "ruler" for measuring distance in 3D space. Both ends can be dragged around, or "attached" to points by double-clicking near the intended point. The distance (length of the reference line) appears in the upper right corner.

PICK COLOR
Not implemented yet. Will set the current color.

UNDO / REDO
You should be able to Undo and Redo ANY operation. If you find a bug in Undo/Redo, let me know. It's a fairly tricky feature. It's also fairly uncommon in 3d editors. Heck, 3D Studio for $3500 doesn't even have SINGLE-LEVEL UNDO.

GRID
Toggle the visible grid.

SNAP
Toggle snapping to the snap grid.

MENUS

PROJECT

Load and Save These are self-descriptive.

Clear Deletes all geometry from the current object.

Save Defaults Saves the settings of the "Options" menu to a file called wog.opt, which is automatically loaded the next time you start.

EDIT

Note: there is no "real" clipboard support yet. Cut, Copy and Paste work by using a temporary Polywog object called "Clipboard".

Duplicate Makes an exact in-place copy of all selected vertices, polygons, and lines. You should probably move the duplicated geometry right after, so that you don't forget where there is duplicate geometry.

Erase Kills the selected vertices, polygons, and lines.

Detach Selection Will "detach" the selected geometry from the unselected. Extras vertices are created as necessary, so that no vertices are shared between the selected and unselected geometry.

Select All Selects all vertices.

Select Connected Selects all verts which share polygons/lines with selected verts.

Deselect All Deselects all vertices.

Cut as a new object The selected vertices, polygons and lines will be removed from the current object and used to create a new object.

Copy as a new object Same as Cut as a new object, except that the geometry isn't deleted.

Affect Verts Only If set, Duplicate and Delete will only duplicate/delete vertices, not polys or lines.

Affect Polys Only If set, Duplicate and Delete will only duplicate/delete polys and lines.

Require All Verts If set, polygons and lines will be considered selected only if all their vertices are selected. Otherwise, they are considered selected if any of their vertices are selected.

VIEW

Zoom All Adjusts the Zoom factor so that all visible geometry fits in the view.

Zoom In / Zoom Out Zooms in/out by 20%. The shortcuts 'z' and 'Z' may be more useful because they zoom in/out around the point under the pointer.

Zoom to Selection Adjusts the Zoom factor so that all selected geometry fits in the view.

Zoom Reset Restores the Zoom to 1 unit = 1 pixel.

There is no standard on which way the X, Y, and Z axes point. Polywog lets you choose between several popular schemes:

Show Only Selection Hides any unselected geometry.

Hide Selection Hides any selected geometry.

Show Everything Un-hides all geometry.

Hide Backfaces doesn't currently work very well

Set View Colors... Lets you set which colors are used for polygons, vertices, lines, the window background, etc.

POLYHEDRA

OPERATIONS

Vertex at Center Creates a new vertex in the center of the object or selection. Very useful for finding midpoints of faces or solids, bisecting lines and angles, etc.

Stellate... This will take every face and make a pyramid out of it, giving a "3D star" based on whatever shape you are using. Combining this feature with "Find Dual" can be used to form truncated forms of polyhedra. Try it.

Extrude... Extrude the selected polygons in the indicated direction.

Frequency Tessellation... This is one of the two Really Neat features of Polywog. This will divide each triangular (or quadrilateral) face into a set of smaller triangles, where the number of resultant triangles is frequency squared. Try this on your favorite polyhedra, then Normalize to get pseudo-geodesic structures. The reason why I say psuedo is because if you use this method with any ODD frequency, the resulting location of vertices does not truly correlate to subdividing the geodesic arcs described by the polyhedron edges. It is, however, very close. You could theoretically raise a form to any large frequency, although you are, naturally, limited by your memory size.

Flip/Swap XYZ... Invert or exchange the X, Y, Z values of the selection (or object, if nothing is selected). Useful for creating the "mirror" of some geometry or converting from one axis convention to another.

Spin (Surface of Revolution)... The selected lines are spun around the vertical axis to create a polygonal surface.

Normalize This finds the center of all points and adjusts all points to lie the average distance from that center. Simply stated, it makes all points Spherical. One use is to project flat tessellated faces onto their geodesic arcs.

Object Center->Origin Moves all points so that their vector sum is centered on the origin.

Set Clockwisdom of Polys Most rendering systems determine the front and back faces of a polygon by considering whether the vertices are clockwise or counterclockwise. In case an object has inconsistent ordering, you can use this operation to set the clockwisdom of all polygons to be the same. Note that this assumes the object is convex and centered at the origin.

Subdivide Quads Splits all 4-sided polygons into triangles.

Subdivide Nonplanar Polys Splits all non-planar polygons into triangles.

Merge Redundant Vertices Finds all redundant vertices (two vertices at the exact same point in space) and joins them.

Remove Redundant Polys Finds all redundant polys (two polys connecting the exact same vertices) and removes the extra poly in each case.

Unfold & Generate Convex Hull These are future Really Neat Features.

Create Dual as new object
This is the second Really Neat feature. Every fully-connected polyhedron has a dual, which is formed by exchanging the configuration of faces with vertices. For example, the cube's dual is the octahedron, and the icosahedron's dual is the pentagonal dodecahedron. Complex geodesic structures also have their duals, which are typically complex "fly's eye" structures involving many hexagons. Naturally, a dual of a dual is the original shape.

OPTIONS

Display Coordinates Toggle display of the current X,Y,Z location.

Display Crosshair Gives you a "+" crosshair, useful for lining up parts of an object. You can set the color of the crosshair with "Set View Colors" under the VIEW menu.

Display Axes Toggle display of the X, Y, and Z axes.

Display Object List Toggle display of a list of all objects in a separate window.

Reference Line Toggle display of the reference line.

Undo Buffer Active Toggle whether Undo is turned on for the current object.

Grid On Toggle display of the visible grid.

Snap cursor to Grid Toggle snapping of the cursor to the snap grid (which can be different from the visible grid).

Poly Normals / Vertex Normals Toggle display of polygon and vertex normals, useful for making sure that your polygons are facing the right way.

Display options... Sets options having to do with the display: Visible grid size Snap grid size Display grid as dots or lines How to display geometry when you're dragging it

More options... Sets other options:


KEYBOARD SHORTCUTS

space bar - full refresh

3 - 3-sided poly:

  • a - Add
  • d - Delete

4 - 4-sided poly:

  • a - Add
  • d - Delete

a - Area:

  • s - Select
  • d - Deselect
  • z - Zoom into

c - Vertex at center

d - toggle Ref line

f - Front view

F - Fake 3D view

g - toggle Grid

G - toggle Grid-snap

i - Info

j - Zoom to selection

l - Line:

  • a - Add
  • d - Delete

m - Move mode

n - Next object

o - toggle Objectlist

p - Poly:

  • a - Add
  • d - Delete

q - Quit

r - Rotate

s - Side view

t - Top view

u - Undo

U - Redo

v - Vertex:

  • a - Add
  • d - Delete
  • s - Select
  • m - Move

x - toggle Crosshair

z - zoom in

Z - zoom out

~ - cycle palette

Esc - deselect/select All

backspace - kill selected

SHIFT can be used to extend selection in area-select mode.


Amiga version notes

Before running: make sure you have the reqtools.library in your LIBS: directory. It may be included in this archive case you don't have it already.

There are some command line options from a CLI:
 -c to run on a custom screen (default)
 -m to run on the default display (workbench screen)
 -sm to make the custom screen medium-res
 -sp to use the workbench palette

Sorry, Workbench fans, no ToolTypes stuff. Polywog also doesn't run under AmigaOS V1.3.


Legal Baloney

See the file woglicense for the legal status of Polywog and terms under which you can use it. To summarize here, you can copy and use it freely, but all liability is disclaimed blah blah blah.