Navigation in the object window is done using the mouse and keyboard similar to the Maya user interface.
|Alt + Left Mouse Btn||Rotate view|
|Alt + Middle Mouse Btn||Pan view|
|Alt + Left + Middle Mouse Btns||Dolly/Zoom view|
The mouse cursor will change to give an idea of what operation you are doing.
You can read/write files in OBJ format or the DLFL format (specific to TopMod). The file extension is used to determine the format. During reading, if the file does not conform to the expected format, reading stops and the object is not loaded.
There is limited support for texture map using OpenGL's texture functions. PNG and JPEG file formats are accepted. The file size should be a power of 2 (OpenGL requirement). Loading a texture has no effect unless one of the Textured Renderers are chosen. Texture coordinates can be assigned randomly (works well only for quads which are mapped from 0 to 1). If the OBJ file includes texture coordinates they will be read and used.
Summary information (number of vertices, faces, edges, etc.) can be output to the console window by chosing the corresponding Print options in the File menu.
By default a wire-frame overlay is displayed on the object. This can
be toggled on or off in the Display menu. Display of Vertices,
Silhouette, coordinate axes and a grid can also be toggled on/off
through this menu.
(There is a bug in the Vertex display mode, which has been fixed in the latest version. The version available in this directory is a slightly older version)
Different renderers are available for displaying the object. The
default is the Shaded renderer. The Normal is similar to this but
uses normal information differently. The Lighted renderer uses
lighting information, which has to be pre-computed for the object. The
two Textured renderers use the texture map which has been loaded. If
no texture map has been loaded, the Textured renderers will not
Shaded and Lighted are typically the most useful renderers.
Several operations can be performed on the entire object through the "Object menu. The names are self-explanatory. The lighting and normal information can be computed through this menu for use in the Lighted renderer. The Planarize, Make Object Spherical and Make Object Smooth are experimental features and might not work well for all objects. "Random" texture coordinates can also be assigned to each face - a unit texture quad will be mapped to each polygon. This works best if the mesh is a quadrilateral mesh.
Choosing an option from the Selection menu enters selection mode where the corresponding entity can be selected and information about the selected entity will be displayed in the console window. Vertex, Face and Edge are self-evident. A Corner is a (vertex,face) pair. So to select a corner, you will have to select a face and then a particular vertex in that face. This will be used in several of the operations described later.
Undo and redo options are available. Please note that all selections will be invalidated by both these operations. The undo buffer is limited to a pre-defined number of operations. Color information will be lost after an undo or redo.
|Ctrl + Z||Undo|
|Ctrl + X||Redo|
The available operations have been grouped into several categories. A group can be selected through the Mode pull-down menu. Selecting a particular group brings up another pull-down menu with operations in that group. The available groups are Basic, Extrude, Handles, Crust and Subdivision.
The following table gives a description of the various operations that are available, grouped as per the above mentioned groups.
|Basics||Insert Edge||2 Corners||Inserts an edge between the 2 corners. Corners can belong to different faces.|
|Delete Edge (with cleanup)||1 Edge||Deletes the edge. Cleans up any point-spheres that may remain after edge deletion.|
|Delete Edge (without cleanup)||1 Edge||Deletes the edge. Does not cleanup point-spheres that may remain in the mesh.|
|Sub-divide Edge||1 Edge||Subdivides the edge into the specified number of equal-length subdivisions.|
|Connect Edges||2 (Edge,Face) pairs||Inserts 2 edges between the end corners of the 2 (Edge,Face) pairs.|
|Sub-divide Face||1 Face||Subdivides the face into quads or triangles. In both cases a new vertex is created at the midpoint of the face. For quads, the edges are also subdivided into 2.|
|Tile Texturing||None||Assigns texture coordinates to all corners based on a tiling algorithm.|
|Extrude||Extrude Face||1 Face||Extrudes the face using the specified parameters.|
|Extrude Face (Doo Sabin)||1 Face||Extrudes the face using the specified parameters. The end face coordinates are computed using a version of the Doo-Sabin subdivision scheme.|
|Extrude Dual Face||1 Face||Extrudes the dual of the selected face using the specified parameters. Original edges of the face may be deleted depending on flag.|
|Stellate||1 Face||Stellate the face using the specified parameters.|
|Handles||Add Hole/Handle||2 Corners||Inserts a handle (or hole, depending on relative positions of the faces) between two faces using specified parameters. The corners determine the twist in the handle or hole. Corners should be in different, non-adjacent, non-co-planar faces for meaningful results.|
|Add Hole/Handle (closest vertex)||2 Faces||Same as the previous operation, except that the corners are automatically chosen based on distance between the vertices of the 2 faces.|
|Add Handle (shape interpolation)||2 Corners||Inserts a multi-segment, curved handle between the two faces. The shape of the handle is controlled by the weights for the normals. Twist can be achieved by a suitable choice of corners. Extra twists can also be added. Holes cannot be produced using this method.|
|Create Multi-face Handle (experimental)||3 of more faces||Attempts to connect all the selected faces by creating new geometry to which all the faces can be connected using straight handles/holes. Two different algorithms are available. For a good demonstration of what this can do, select the middle faces on all sides of a 3x3x3 cube and use the ConvexHull algorithm with the Use Max. Offsets option checked.|
|Rind Modeling||Rind Modeling (Scaling)||None initially. Faces, after crust has been created.||
Creates a crust by using a scale factor for the inner (outer if scale factor is
> 1) shell. After the crust has been created, holes can be punched in the crust
by selecting faces where holes are needed. Undo will take you back to the state
prior to crust modeling (i.e. hole punching cannot be undone on an individual
Any operation other than hole punching, including undo and redo, will take you out of the crust modeling mode and further holes cannot be punched for the same crust.
|Rind Modeling (Thickness)||None initially. Faces, after crust has been created.||Same as above, except that the crust will be created using the specified thickness. A negative thickness means that the second shell will be moved outward, along the normal to the face, producing a shell that is larger than the original mesh.|
|Wireframe Modeling||None.||Creates a wireframe-type model from the given mesh using the specified thickness. Every edge of the original mesh will become a thick wire.|
|Subdivision||Catmull Clark||None.||Performs Catmull-Clark subdivision on the mesh.|
|Doo Sabin||None.||Performs Doo-Sabin subdivision on the mesh.|
|Honeycomb||None.||Performs Honeycomb subdivision on the mesh.|
|Corner-cutting||None.||Performs Corner-Cutting subdivision (similar to Doo-Sabin) on the mesh.|
|Root-4||None.||Performs Root-4 subdivision on the given mesh.|
|Vertex Insertion||None.||This does not do anything currently. This operation is being developed.|
|Simplest||None.||Performs Simplest subdivision on the given mesh.|
|Vertex-Cutting (Truncate)||None.||Performs Vertex-Cutting subdivision on the given mesh.|
|Pentagonal||None.||Performs Pentagonal subdivision on the given mesh.|
|Dual||None.||Computes the Dual of the given mesh.|
For published papers which give details about some of the above operations, including the basics, please visit my Publications page.
For questions or comments please write to: firstname.lastname@example.org.