Vertex 1.28b (C) Copyright 1991 Alexander D. Deburie All Rights Reserved Release: 1/7/92 Please make sure you have read the file 'Must.Read' before proceeding. This unregistered version of Vertex may be freely distributed. ************************************************************** Welcome to Vertex. This software is shareware. I have spent several months on this project, and I plan to spend many more adding new features and updating it. If you find this product useful, I urge you to contribute, as I am always willing to add features which registered users ask me to impliment. There are two types of registration: 1. Registered Users A contribution of $30 will give you a full working version, a manual file, documentation for the Arexx port, and a request form to submit for ideas/features you would like to see added. New versions will cost $10 for registered users. 2. Preferred Users A contribution of $50 will give you a full working version, a manual file, documentation for the Arexx port, a request form to submit for ideas/features, and FREE updates. I have worked VERY hard to make this package as commercial quality as possible. Please support my efforts, and creative software for the Amiga, by contributing. This evaluation version of Vertex may be freely distributed. The registered version may NOT be freely distributed. **************************************************************** ==================================================================== Contents Vertex 1.28b Page 1 CONTENTS: (While in development, this index may not be acuurate until I get my index program working correclty.) Introduction............................................2 Intro...............................................2 The User Interface..................................4 Function Descriptions...................................6 The Add Menu........................................7 Add Basic Shapes...............................12 Selection/Deselection Menus........................15 The Modify Menu....................................24 The Transform Menu.................................36 Align Sub Menu.................................39 The Delete Menu....................................43 The View Options Menu..............................46 The Globals Menu...................................51 Save Menu..............................................57 Compressed Files...................................59 Sculpt 3D/4D Files.................................59 Trubo Silver/Imagine Files.........................60 Lightwave Files....................................61 GEO Format.........................................64 3D Professional....................................64 Wavefront..........................................65 The Keyboard...........................................66 The Future.............................................67 ==================================================================== Introduction Vertex Page 2 INTRODUCTION: Vertex is a 3d object editor. It differs from other 3d editors in many ways. First and foremost, the editor does not limit you to 3 views. You can choose any view, including perspective, to select points and examine objects. Additionally, the view can be rotated, positioned and scaled at will by either typed in values or using the mouse. This makes the editor fast and responsive - no more will you have to move confusing "selector" boxes around to select vertices. Now you can simply rotate the view until you can plainly see any vertex you wish to select. You can choose either a "fast-draw" mode while changing the view, or a slower, but more detailed, full mode. Also, the view can be rendered at any time, using the current rotation, position and scale, at the press of a key. Selection of Vertices: Selection of vertices in Vertex is a primary concern. Personnaly, my efforts in 3d object design were seriously hampered by the frustration involved in selecting the right vertices. So, an interesting array of selection facilities have been added to Vertex. Included are: Select/Deselect By Vertex Select/Deselect Drag Boxes Select/Deselect Swap Select/Deselect By Name (From a Menu of Names) Select/Deselect Patterns Select/Deselect All Except Select/Deselect All Select Connected Select Exterior Even the compressed file format saves the selection status of each vertex. Additionally, you can now change the view while selecting vertices. While the "pick" pointer is active, you can press any of the 4 View buttons to change the view. ==================================================================== Introduction Vertex Page 3 Curved Surfaces: Curved surfaces represent the vast majority of "real" objects. Vertex has included two unique functions to make curved objects: Apply Curve and Multiply. Apply Curve is a bezier curve interface. You can define a bezier curve with four control points, and then "apply" that curve to all selected vertices. The application method can be either Conform, to force vertices to take the shape of the curve, Average, which averages the curve with the position of the vertices, and Additive, which adds the curve to the position of the vertices. Multiply is a feature totally unique to Vertex. It enables you to plot any mathematical formula to your 3d objects. Multiply includes full support for trig functions, a random number generator, scaling by axis, and much more. This gives Vertex an open end approach to curved surface generation. These curved surfaces are only a portion of the modification tools available in Vertex. You can also fuse vertices together, rondomize on any or all axes, or subdivide faces. File Formats: After you have modified your objects you can save them in many different formats. Included are: Sculpt 3D/4D Turbo Silver Imagine Lightwave Compressed GEO Wavefront (3D Professional is available for loading only) Compressed is a private file format used by vertex to store the same object in less space, and preserve the selection status of each vertex. This is not all there is to Vertex, however. There is a full array of normal functions to: Create Lathes/Polygons/Grids Extrude Duplicate Move, Rotate, Scale and Size (by mouse or typed in values) Arexx compatability Deletion Undo Option ==================================================================== The User Interface Vertex Page 4 THE USER INTERFACE: Vertex uses a unique set of Pop-Up menus. Clicking the right mouse button will cause a menu to appear directly below the mouse pointer. There is no need to hold the button down - moving off the menu will make it go away. This menu is a list of options, as are regular menus, but many options will cause another Pop-Up menu to appear with further options. In this way, the Pop-Up menu system is like a tree. Each menu is a limb on the tree, and choosing an option from a menu will take you to a smaller branch on the tree. All branches start with the trunk, or Main Menu. The main menu will appear any time you press the right mouse button, or the space bar (provided you are not currently executing a function). Listed on the main menu are choices to add objects, select/deselect vertices, modify objects, transform objects, delete objects, load and save objects, change the view, and adjust certain options. The menu options will be fully explained later in this document. Getting used to this new kind of menu system might take a little time. Remember to click the right mouse button to make the menu appear, then move the pointer over the option you want, and then press the left button. (Click means to press and then release the button - do not hold the button down for any length of time) Each menu entry is preceeded by a 1 letter code. These one letter codes are "accelerator keys". With these accelorator keys, you can quickly start functions, without having to mess with menus. These keys are designed for speed - take note that most of the keys are located on the left half of the keyboard. This enables you to keep one hand on the mouse and the other hovering over the left side of the keyboard. For example, if you wanted to select all vertices at once, and you are not currently executing a function, you can do so by pressing 'S', (this will cause the Selection Pop-Up menu to appear) then, after letting go of the S key, press the 'A' key. In this manual, the accelorator keys will be shown in the form MenuKey - OptionKey For example. The Select All function above would be shown as: S-A. Likewise, to Deselect All vertices the key command would be D-A. You should not press the "-" between the letter. After a time you will no doubt find this feature useful. The accelerator keys are probably the best way to communicate with Vertex. You should at least try to get a few of them down quickly. I'd suggest trying S-A for Select-All and D-A for Deselect-All. There is more to Vertex than the Pop-up menus, however. The left side of the main screen contains several buttons for altering the view, and a status list of current information. ==================================================================== The User Interface Vertex Page 5 The first 4 buttons, labelled VIEW, allow you to change the view mode. Options include Perspective, Front, Side and Top. Many functions will allow you to alter the view while they are active. For example, while you are moving objects with the mouse, (with the Transform-Move Free option), you may change the view by pressing one of these buttons. Also, many functions within vertex work from the front, or X-Y, view. These include grids, polygons and the bevel routine. Below these buttons are the view tools. There is always a view tool on. You can rotate the view, position the view, or scale the view. When the default cross-hair pointer is shown, (while you are not executing a function), pressing the left mouse button in the main view window will alter the view based on whatever tool you have selected. If Rotate is selected, and you press the left mouse button, the view will be rotated while you hold the button down and move the mouse. Once you let go of the button, the view will be re-drawn with the new rotation values. I've now added buttons on the main screen to select and deselect vertices. Clicking on PICK will give you the pick pointer. In this mode you can either click on a single vertex to select it, or draw out a rectangle to select vertices. Below the Adjust View gadgets is a list of system information: VERTS: The current number of vertices EDGES: The current number of edges FACES: The current number of faces SLCT: The number of currently selected vertices EULR: The Euler number for all objects. This is the total number of vertices plus the total number of faces, minus the total number of edges. This is a handy formula, as certain kinds of objects have unique Euler numbers. PAN: The current pan rotation (or X axis rotation) TILT: The current tilt rotation (Or global Y axis rotation) POSX: View X position POSY: View Y position POSZ: View Z position ZOOM: Current Zoom Level (.01x to 16x) VMAX:, EMAX:, FMAX: have been moved to the About alert, under the miscellaneous (or Globals) menu. Finally, during the course of using Vertex, you will no doubt run into some requestors. All requestors in Vertex are fast requestors. Pressing the return key has the ability to respond to a requestor or alert. A Vertex Alert has a message and 2 buttons. The return key will activate the button which is outlined. This is usually the CANCEL button. Requestors are asking for information from you. If you press return on the last line of the requestor, this acts the same as pressing the OKAY gadget. If you wish to cancel a requestor, you must physically press the CANCEL button. ==================================================================== Function Descriptions Vertex Page 6 FUNCTION DESCRIPTIONS: The following section contains the complete descriptions for all of the functions and commands available from within Vertex. The Arexx interface is explained in another document - Arexx.doc. Each menu entry is explained fully, including hints on useage and the fast key combinations to quickly start a function. It is highly suggested you read this reference section, as it can save you a lot of time in learing to use Vertex. Most functions operate only on selected vertices (excluding the loading and saving routines which use all vertices, edges and faces). More specifically, you must have vertices selected to perform any transformations or modifications. If you do not, Vertex will tell you you have nothing selected and abort the function. ==================================================================== The Add Menu Vertex Page 7 THE ADD MENU: Add Polygon A-P Add Lathe A-L Add Grid A-G Add Duplicate A-D Add Basic Shapes A-B Add Vertex Precise A-V Add Vertex A-A Add Edge A-E Add Face A-F To add anything to Vertex, you must either read an object from disk, or create a new object within the program. Object reading is covered in its own section, later in this manual. The Add menu is where you can create new objects. Available are functins to create lathes, polygons, grids, simple shapes such as rings and spheres, and indicidual vertices. Also included, are functions to add specific edges and faces to previously created objects. (Face creation is needed since Polygons are not created with faces - you must put the faces within the polygons) ==================================================================== Add Menu: Polygon Vertex Page 8 Function: Add Polygon FastKey: A-P Description: Adding polygons is a simple manner. Choose this menu option, and the shape editor will appear. The main window now acts as a flat polygon designer. Clicking with the mouse will cause points to appear, connected to the previous point by an edge. You simply click the points to create any shape you wish. Clicking the right mouse button will cause a new menu to appear. Polygon Menu: The polygon menu has many features to help you with polygon creation. Here are the options: Undo Last Vertex Just as it says, will undo the last point created. You can undo all the way back to the first vertex created. Create Open Polygon This will create an open polygon out of the shape you have defined. You will be prompted for an object name. You can continue creating polygons after this point. Create Closed Poly This will create a closed polygon - the first and last points will be connected - and you will be prompted for an object name. You can continue creating polygons after this point. Grid On/Off This will turn a "snap-to" grid on, so your points will be forced to align with the grid. Adjust Grid This will let you adjust the grid resolution. Overlay On/Off Normally, you create objects 1 by 1. Overlay lets you see the objects already created behind your new object. This is handly for lining up new shapes to pre-existing shapes. The images are drawn on the X,Y axis. Exit Polygon This will leave the polygon creation tool, aborting any shape currently being created. All these menu options have associated fast-key commands, and can be invoked with a single key press. There is no need to press the 'A-P', since you are already in polygon mode. Function: Key: ===================== ===== Undo Last Vertex U Create Open Polygon O Create Closed Polygon C Grid On/Off G Adjust Grid A Overlay On/Off V Exit Polygon X Please keep in mind that polygons do not have faces. They are nothing more than edges defining a shape. You must either use the planar fill function under the modify menu, or create the faces yourself. ==================================================================== Add Menu: Lathe Vertex Page 9 Function: Add Lathe FastKey: A-L Description: Choose this menu option, and the shape editor will appear. The main window now acts as a flat edge designer. Clicking with the mouse will cause points to appear, connected to the previous point by an edge. You simply click the points to create any shape you wish. Pressing the right mouse button will cause a new menu to appear. Lathe Menu: The lathe menu has many features to help you with lathe creation. Here are the options: Undo Last Vertex Just as it says, will undo the last point created. You can undo all the way back to the first vertex. Create Open Lathe This will create an open lathe out of the shape you have defined. You will be prompted for an object name, the angle which this shape will be rotated by, and the number of divisions to use. Create Closed Lathe This will create a closed lathe - the first and last points will be connected - and you will be prompted for an object name, the angle which this shape will be rotated by, and the number of divisions to use. This object will be built like a doughnut. Grid On/Off This will turn a "snap-to" grid on, so your points will be forced to align with the grid. Adjust Grid This will let you adjust the grid resolution. * Rewind Lathe This function will allow you to "rewind" to the previously created lathe. This is handy for trying different resolutions and/or angles with the same shape. Overlay On/Off Normally, you create objects 1 by 1. Overlay lets you see the objects already created behind your new object. This is handly for lining up new shapes to pre-existing shapes. The images are drawn on the X,Y axis. Exit Lathe This will leave the lathe creation tool, aborting any shape currently being created. All these menu options have associated fast-key commands, and can be invoked with a single key press. There is no need to press the 'A-L', since you are already in lathe mode. Function: Key: ===================== ===== Undo Last Vertex U Create Open Lathe O Create Closed Lathe C Grid On/Off G Adjust Grid A Rewind Lathe R Overlay V Exit Lathe X ==================================================================== Add Menu: Grid Vertex Page 10 Function: Add Grid Fast Key: A-G Description: Grids are similar to graph paper. You can define the width and height of the grid, and the resolution. When this function is chosen a requestor appears, asking for the following information: GRIDX: This is the size, in units, of the grid width. GRIDY: This is the size, in units, of the grid height. RESX: This is the number of divisions to use for the width. RESY: This is the number of divisions to use for the height. NAME: The name of the new object. Grids are nice for applying curves to and using the multiply function with. Be careful, however, as grids can take up large amounts of storage space quickly. * Add grid now places the grid on the X,Y axis. Previous versions placed the grid on the X,Z axis. ==================================================================== Add Menu: Duplicate Vertex Page 11 Function: Add Duplicate FastKey: A-D Description: You can duplicate any object or set of selected vertices. You are presented with a requestor asking for: DISTX: This is the amount to move the new object on the X axis DISTY: This is the amount to move the new object on the Y axis DISTZ: This is the amount to move the new object on the Z axis NAME: This is the name of the new object. It defaults to the name of the first selected vertex plus a "-1" at the end. If the object is already named with a "-1", then it will be named "-2", etc... All selected vertices, and any associated edges and faces will be duplicated. The original vertices which were selected will now be deselected, and the newly created vertices will be selected. This is helpful when you wish to make multiple copies of the same object. ==================================================================== Add Menu: Basic Shapes Vertex Page 12 Function: Add Basic Shapes FastKey: A-B Cube A-B-C Pointed Star A-B-P Ring A-B-R Sphere A-B-S Cube When this function is selected a requestor appears asking for the length, with an height of the cube to be created, and its name. Pointed Star You are prompted with a reqiestor asking for the number of Points, the total diameter, and the name of the object. Ring This function brings up a requestor asking for a number of values: Radius1 The actual diameter of ring sections Radius2 The total diameter of the finished ring Points The number of points to create ring sections with Res The total number of divisions to make in the entire ring Name The name of the object. Sphere The add basic sphere function askes for the diameter, points and res of the sphere. Radius The total width of the finished sphere Points How many points to make the side of the sphere Res The total divisions to create the sphere * Problems with sphere in past versions have been corrected. You may now produce accurate spheres, without experiencing "open endedness". ==================================================================== Add Menu: Vertex Precise Vertex Page 13 Function: Add Vertex Precise FastKey: A-V Description: You can add vertices at precise positions with this function. You are presented with a requestor asking for: POSX: The X coordinate of the vertex POSY: The Y coordinate of the vertex POSZ: The Z coordinate of the vertex The name of this vertex will be the name of the last vertex. If you wish to enter large numbers of vertices in this manner, you may want to use Arexx instead. ==================================================================== Function: Add Vertex Fast Key: A-A Description: This function lets you add vertices to the 3d environment. The vertices will allways be on the X,Y plane. Simple click the pointer anywhere in the 3d window to add points. Pressing the right mouse button will abort this operation. ==================================================================== Add Menu: Edge Vertex Page 14 Function: Add Edge FastKey: A-E Description: This function lets you add edges by clicking on 2 vertices. You can continue adding edges until you press the right mouse button. If you create an edge over an existing edge, it will be deleted by Vertex. ==================================================================== Function: Add Face FastKey: A-F Description: This function lets you add faces by consecutively selecting 3 vertices. You can continue adding faces until you press the right mouse button. If you create an edge over an existing edge, it will be deleted by Vertex. Add face attempts a "Flush Duplicate Edges" after completing. Since it is possible that two edges are created with the same endpoints, the duplicates are deleted. A side effect of this is a slow down after exiting the Add Face function. Try to add faces early on in object development and/or enter many faces at once. This function is the only good way to fill concave polygons. If you create a polygon with, you may try filling it with Planar-Fill under modify. If this does not yield correct results, you may either add the faces by hand, or use another software which has the ability to fill concave polygons. ==================================================================== Select and Deselect Menus Vertex Page 15 SELECTION MENU: DESELECTION MENU: Select All S-A Deselect All D-A Select Swap S-S DeSelect Swap D-S Select Named S-N DeSelect Named D-N Select Vertex S-V Deselect Vertex D-V Select Area S-R Deselect Area D-R Select Pattern S-P Deselect Pattern D-P Select Except S-X Deselect Except D-X Select Connected S-C Select Exterior S-E Since selection are so closely related, and use many of the same functions, they are presented together. The major difference is that the selection menu offers the select connected, while deselection does not offer a deselect connected. ==================================================================== Select and Deselect: All Vertex Page 16 Function: Select All FastKey: S-A Description: This will select every vertex currently in memory. You may notice that the information strip has the line SLCT:. This is the total number of selected vertices. After this function returns, this number should match the VERTS: line at the top of the information strip. ==================================================================== Function: Deselect All FastKey: D-A Description: This will deselect every vertex currently in memory. ==================================================================== Select and Deselect: Swap Vertex Page 17 Function: Select Swap FastKey: S-S Description: This will swap the selection of every vertex currently in memory. If the vertex was selected, it will be deselected, and vice-versa. ==================================================================== Function: Deelect Swap FastKey: D-S Description: This will swap the selection of every vertex currently in memory. If the vertex was selected, it will be deselected, and vice-versa. ==================================================================== Select and Deselect: Named Vertex Page 18 Function: Select Named FastKey: S-N Description: This function will bring up a menu of all names currently in memoory. You can choose any object name you wish by clicking on it. ==================================================================== Function: Deselect Named FastKey: D-N Description: This function will bring up a menu of all names currently in memory. You can choose any object name you wish by clicking on it. Please note that objects are actually assigned a number. Therefore, if you have an 2 objects, both named "LightBulb", these are actually 2 seperate objects - the name LightBulb will show up twice in the object name list. To ensure they are all the same object with the same name, then select both, and use the Name Selected option under the Modify Menu. ==================================================================== Select and Deselect: Vertices Vertex Page 19 Function: Select Vertex FastKey: S-V Description: This function will give you the pick pointer so you can select individual vertices from the main view window. Exit the function by pressing the right mouse button. You may wish to rotate the view before choosing this function. Select Vertex and Select Area now work the same - you can either click on a vertex OR draw out a box while using either function. ==================================================================== Function: Deselect Vertex FastKey: D-V Description: This function will give you the pick pointer so you can deselect individual vertices from the main view window. Exit the function by pressing the right mouse button. Also, you may alter the view, while in either of these functions by pressing the associated button to the left. You may not, however, rotate, position or scale the view while in using these functions. ==================================================================== Select and Deselect: Area Vertex Page 20 Function: Select By Area FastKey: S-R Description: This function will give you the pick pointer so you can select vertices by dragging out a rectangle. Press and hold the left mouse button to size the rectangle. Exit the function by pressing the right mouse button. You may wish to rotate the view before choosing this function. ==================================================================== Function: Deselect By Area FastKey: D-R Description: This function will give you the pick pointer so you can deselect vertices by dragging out a rectangle. Exit the function by pressing the right mouse button. Also, you may alter the view, while in this function, by pressing the associated button to the left. You may not, however, rotate, position or scale the view while in this function. ==================================================================== Select and Deselect: Pattern Vertex Page 31 Function: Deselect Pattern / Select Pattern FastKey: D-P S-P Description: Selecting vertices by pattern requires entering a selection pattern. The pattern corresponds to how the vertices are layed out in memory. Here is an example: 10 Vertices before selection: (1 means selected, 0 means deselected) 1 1 1 1 1 1 1 1 1 1 After applying the selection pattern '1100' the 10 vertices are selected as such: 1 1 0 0 1 1 0 0 1 1 The selection pattern is repeated until the last vertex is reached. Pattern selection is a tricky function. It is not straight forward - it depends on the order of vertices in memory. Normally, when a lathe or grid is created, the vertices are added 1 at a time in order of creation. Some functions in Vertex will change the order of the vertices in memory. If you plan on using pattern deselection, do not use it after these functions: fuse Subdivide Edges Subdivide Faces Delete Selected Vertices These functions will mess-up the order of vertices in memory. You can use pattern deselection after using these functions, but it will not work very well. ==================================================================== Select and Deselect: Except Vertex Page 22 Function: Select Except FastKey: S-X Description: This function will select every object except the one you choose. This is a handy function that saves a lot of work when you need it. ==================================================================== Function: Deselect Except FastKey: D-X Description: This function will deselect every object except the one you choose. This is a handy function that saves a lot of work when you need it. Suppose you have 10 objects in memory, and you have half of the vertices of one object selected. Now, if you want to swap-select the other vertices in that same object, you could choose Select-Swap. But doing so will cause ALL vertices to be swapped. Now you must go through by hand and deselect the unwanted vertices. This function eliminates the need for this kind of work. Together with Select All Except, you can have finer control over what gets selected and what doesn't. ==================================================================== Select: Connected Vertex Page 23 Function: Select Connected FastKey: S-C Description: This function will select every vertex which is connected by edges to a selected vertex. This is useful when objects overlap, and you can't select the object you want. ==================================================================== Select: Exterior Edges Function: Select Exterior Edges FastKey: S-E Description: You'll probably want to do a Deselect-All before using this function. It will select every vertex which is part of an exterior edge. An exterior edge is one which is part of only 1 face. Please note, this function is not very fast. Small objects will get selected fairly fast, but as more edges are added, the time this function requires will grow exponentially! Don't be surprised at a 5 minute wait for objects with 3000+ edges. ==================================================================== Modify Menu: Vertex Page 24 MODIFY MENU: Multiply M-M Apply Curve M-Q Randomize M-R Gravity M-G Extrude M-X Bevel Edges M-B Subd. Faces M-F Subd. Edges M-E Fuse Vertices M-W Overlay Fuse M-O Planar Fill M-P Name Selected M-N Distance M-D ==================================================================== Modify Menu: Multiply Vertex Page 25 Function: Multiply FastKey: M-M Description: Choosing this function will bring up a requestor asking for a mathematical formula. This formula must begin with either X=, Y=, or Z=. On the right side of the equals sign, you can supply any math formula, utilizing the functions listed below. In addition to using math functions, certian variables are defined for multiply. The variables X,Y, and Z are the respective X,Y and Z coordinates of the current vertex being multiplied. Additional variables include: XMAX: The maximum X coordinate YMAX: The maximum Y coordinate ZMAX: The maximum Z coordinate XMIN: The minimum X coordinate YMIN: The minimum Y coordinate ZMIN: The minimum Z coordinate XCEN: The average center X YCEN: The average center Y ZCEN: The average center Z You may use any constant numbers wherever you wish. The functions supported by Vertex include: SIN COS TAN ASIN ACOS ATAN LN LOG10 LOG EXP SQRT RAND ABS The trigonometric functions take their input in degrees. ==================================================================== Modify Menu: Multiply Vertex Page 26 Here are some example (allowable) functions: Z=cos(x^1.2)*30*sin(z^1.2) This function will create an interesting "bumpy" pattern to a grid. Y=0 This function will flatten all vertices onto the Y axis. Y=COS(SQR(X*X+Z*Z))*20 This will create a nice water drop effect when applied to an object on the X,Z axis. X=SQR(y*cos(z^2))/x*x+23/rand(y*1.2) I have no idea what this function will produce! If you have ideas for further functions which might be useful, then let me know, I will put them in. Please note that, in order to speed up this feature, I have not included syntax checking. You must insure that the formula has properly matched parentheses. However, some wierd formulas ARE defined in vertex: Square roots of negative numbers are defined as Sqr(n) = -Sqr(-n) Division by zero is defined as zero "Domain" functions which require input from -1 to 1 will be set to zero if need be. I have personally noticed some wierd errors with this command. After making some internal changes to the program, I have not been able to make these error happen again. My advice is to save your objects before using this command, that way if it does freak out, you won't be set back. * Former versions of Vertex would not accept a unary minus as the first part of an equation: Y=-x*2. This problem has been fixed. ==================================================================== Modify Menu: Curve Vertex Page 27 Function: Apply Curve FastKey: M-Q Description: This is the bezier curve interface. Upon choosing this function, you are presented with a grid with a bezier curve on it, 4 control points to alter the curve, and a number of buttons, which appear to the left. The buttons are outlined below: ------------------------------------------ Affect | | X Y Z | | Base | | X Y Z | Curve Drawing Area | | | Conform | | Average | | Additive | | Current View | | ------------------------------------------ The X,Y,Z gadgets in the upper left are called the 'Affect Axis'. This choice decides which axis will be changed by the curve. The lower X,Y,Z gadgets determine which axis will be the 'Base Axis' for the curve. As the coordinates of vertices change along this axis, the corresponding change will take place on the Affect axis. If this is confusing, don't worry. Try the function out with a simple grid, and you will get a feel for it. Finally, the way the curve will change the vertices on the 'Affect Axis' can be chosen from the gadgets in the lower left. The choices include: Conform: This will force the object to take the exact curve you have defined Average: This will average each vertices' orginal position with the new position determined by the curve. Additive: This will add the new coordinates to the original coordinates. Upon pressing the right mouse button, a pop-up menu will appear with following options: Apply Curve: This will apply the curve to all selected vertices Flip Curve: This will quickly flip the curve vertically Flatten Curve: This will flatten the curve in the center. Abort: This will terminate the function, without affecting any vertices. ==================================================================== Modify Menu: Randomize Vertex Page 28 Function: Randomize FastKey: M-R Description: This will let you randomize vertex positions on the X,Y and/or Z axis. A requestor appears asking for the ranges to randomize each axis. A value of 0 will cause no change to take place on an axis. ==================================================================== Modify Menu: Gravity Function: Gravity FastKey: M-G Description: This function will bring up a small, moveable, control panel: ____ ____ | << | | >> | Strength: 10 | DONE | With the buttons, you can apply a certain ammount of gravity to the selected vertices. Type in the strength of the gravity in the string gadget. This functions relys on the Hot Spot, or the centroid of the selected vertices. If the Hot Spot is activated, it will automatically use it. If not, it will use the centroid as the center of gravity. The left pointing arrows will cause the gravity to be applied away from the hot-spot, while the right pointing arrows will cause it to be applied towards the hot-spot. ==================================================================== Modify Menu: Extrude Vertex Page 29 Function: Extrude FastKey: M-X Description: This is a basic extrude function. You can enter distances to extrude on any or all three axes. A value of zero will result in no movement on that axis. * Extrude is now a smarter routine. When a flat, face filled, object is extruded, only the exterior edges will be extruded. This will get rid of the extra faces which were created with the older extrude. ==================================================================== Modify Menu: Subdivide Faces Vertex Page 30 Function: Subdivide Faces FastKey: M-F Description: This function will take a selected face and create 3 faces from it. Heres how it works: A / \ / \ / \ / \ / \ B-----------C If the above face were subdivided, with the Subdivide Face command, it would end up like this: A /|\ / | \ / /D\ \ /_/ \_\ // \\ B-----------C You will end up with 3 faces: A-B-D, A-D-C and B-D-C. ==================================================================== Modify Menu: Subdivide Edges Vertex Page 31 Function: Subdivide Edges FastKey: M-E Description: This function will add an extra vertex on the edge of each select edge. The Bast way to describe this is with an example: * * / \ / \ / \ / \ / \ *-----* / \ /\ /\ / \ / \ / \ / \ / \ / \ *-------------* *------*------* Before Subdividing: After Subdividing: 3 Vertices 6 Vertices 1 Face 4 Faces You can use this function to add detail to sections of your objects. Be careful, as you can quickly fill up memory by continuously subdiving in this manner. ==================================================================== Modify Menu: Fuse Vertices Vertex Page 32 Function: Fuse Vertices FastKey: M-W Description: This function will take all selected vertices and fuse them into 1. The new vertex will be located at the centroid of the selected vertices. All edges and faces will be repositioned, and some may be deleted, to create a proper 3d object. This process may cause a small delay. Using this function with 1000 vertices and 2000 edges will probably take 2 or 3 minutes to execute. There is now a test within the fuse function to ensure that all selected vertices have the same name. If they do not, you will be asked if you wich to continue. The reason for this is that future versions of Vertex will rely more heavily on object names. (to make way for face attributes, etc..) ==================================================================== Modify Menu: Planar Fill Vertex Page 33 Function: Planar Fill FastKey: M-P Description: This function will fill a shape with faces. The way it does this is similar to the way the Lightwave loader does - that is, it adds a vertex to the center of the selected vertices, and connects that vertex to all the selected vertices with new faces. Be warned, however, that this method only works for convex polygons: _______ ________ / \ / \ / \ / \ \_________/ \___ \ \ | Convex ___/ / \_________/ Concave A convex polygon is one which how no indentations in its profile. The concave polygon in the example above, has an indentation in its side which will not fill correctly. ==================================================================== Modify Menu: Name Selected Vertex Page 34 Function: Name Selected FastKey: M-N Description: This function will let you modify the name of all selected vertices. After this function executes, all unused names will be flushed from memory. There is a limit of 40 names for objects. Until I get a wider menu finished, this limit will remain. ==================================================================== Modify Menu: Bevel Vertex Page 35 Function: Bevel Edges FastKey: M-B Description: The bevel edges function will take a flat object on the X,Y axis, extrude it and create a beveled edge on the sides of the object. It is similar to routing the edges of the shape. This is a very useful function to add that "chiseled" look to fonts, or any other shape. There are, however, some restrictions: The object must have faces in it, say like a solid font. Objects must lie on the X,Y plane. Any other kind of object will result in improper results. When you choose this function, a selector appears asking for the amount to bevel. Please remember that this amount is both the amount of extrusion, and the inset for the beveling. ==================================================================== Modify Menu: Overlay Fuse Function: Overlay Fuse FastKey: M-O Description: This function will attempt to connect two objects. The vertices which will be connected must lie directly over one another, (have the same X,Y,Z coordinates), and they must be selected. This is a wild function. I think it calls a 3 or 4 other functions. It will delete selected faces, delete duplicate edges, and delete unneeded edges. The end result is that your object should be physically connected, with no unneccessary faces or edges between them. Check out the object "cuboid.comp" to see an example of this in action. If your points will not connect, then perhaps they are not close enough. (Currently, the vertices must be within 1 unit from one another to be candidates for fusing.) Try zooming in on them and positioning them closer to get a good result. ==================================================================== Transform Menu Vertex Page 36 TRANSFORM MENU: Initialize T-I Move T-M Rotate T-R Scale T-S Size T-Z Align T-A Lowest X/Y/Z 1,2,3 Center X/Y/Z 4,5,6 Highest X/Y/Z 7,8,9 Move Free Scale Free Size Free Edit T-E Toggle Hot Spot T-T Set Hot Spot T-H The transform functions let you move, scale and rotate vertices and objects. These functions require you to first select the vertices you wish to move, then choose the function you want. The newly added hot spot will now be the center of rotations or scales if it is active. To set the hot spot, you may press on the circle in the main window, then click anywhere to set it. (If the perspective view mode is active, you must place the hot spot on a selected vertex, or it will not be moved) Alternatively, you can type in coordinates for it by using the Set Hot Spot command under transform here. ==================================================================== Transform: Initialize Vertex Page 37 Function: Initialize FastKey: T-I Description: This will center all selected vertices on the origin (0,0,0), or on the hot spot, if it is active. ==================================================================== Transform: Move Function: Move FastKey: T-M Description: Move precise enables you to move selected vertices any number of units on any or all axes. A requestor will appear asking for the amount to move on each axis. The values are stored from the last time the function was called. ==================================================================== Transform: Rotate Function: Rotate FastKey: T-R Description: This function lets you rotate all selected vertices about any axis. Just enter the rotations in the requestor. Normally, the rotation is performed about the center, or average, of the selected vertices. However, you may now use the hot-spot as the rotation center, if it is active. ==================================================================== Transform: Scale Vertex Page 38 Function: Scale FastKey: T-S Description: Here you can stretch and squeeze objects on any or all axes. The values entered in the requestor are relative to 1. So, a scale factor of 1 will cause no scaling to occur. Values smaller than 1 will shrink the object, values larger than 1 will expand the object. To mirror an object across an axis, use the value -1 for that axis. ==================================================================== Transform: Size Function: Size FastKey: T-Z Description: With this function you can quickly size objects on all three axes at a time. Values smaller than 1 reduce the object, and larger than 1 expand the object. ==================================================================== Transform: Align Vertex Page 39 Function: Align FastKey: T-A Description: This is a new sub menu added to aid aligning objects. You are presented with 9 choices for aligning objects. All these alignments are relative to the first object selected. In order to keep from flattening entire objects, this command operates based on the name of each object. Heres an example: Original --------- ---------------------- | | | | ---------- | | ---------------------- | | | | Obj 3 | | --------- ---------- Obj 2 Obj 1 After Aligning on the lowest Y: --------- ---------- | | | | | | ---------------------- | | | | | | ---------- --------- ---------------------- Obj 1 Obj 2 Obj 3 This is a handy function to align 3D text. ==================================================================== Transform: Move Free Vertex Page 40 Function: Move Free FastKey: none Description: Lets you Move objects freely about the screen. Since the screen is only 2 dimensional, the current view will determine which axis the object will be moved on. The view gadgets themseleves tell you which 2 axis they pertain to. PERSP: Up and Down moves the object on the Y Axis Left and right moves the object on the X Axis FRONT: Up and Down moves the object on the Y Axis Left and right moves the object on the X Axis SIDE: Up and Down moves the object on the Y Axis Left and right moves the object on the Z Axis TOP: Up and Down moves the object on the Z Axis Left and right moves the object on the X Axis Bear in mind when using this function that no account is taken of the current view rotations. It is always best to select one of the view gadgets before entering this function. That way, you will know which direction to move the mouse. While in this function you can change the View gadget. Press the right mouse button to exit the function. ==================================================================== Transform: Scale Free Vertex Page 41 Function: Scale Free FastKey: none Description: This function lets you scale objects with the mouse. See Move Free for a definition of which mouse movements will affect which axis. Press the right mouse button to exit the function. ==================================================================== Transform: Size Free Function: Size Free FastKey: none Description: This function will allow you to globally size all selected vertices with the mouse. After pressing the left mouse button, move the mouse left and right to change the scale. Abort this function by pressing the right mouse button. ==================================================================== Transform: Edit Vertex Page 42 Function: Edit FastKey: T-E Description: Edit allows you to select a set of points from your 3D object and move those points by simply clicking and moving the mouse. The function requires you to have one of the non-perspective views active, Front, Side or Top. Once you select the vertices you wish to edit, then choose the view you wish to change them in, select this function. The screen will be re-drawn with only the selected vertices, and the edges which these vertices are connected to. Now, by simply clicking and holding on the vertex you wish to move, you may move the mouse, and reshape the object. With Edit you can pick a group of vertices to move, then move each one individually. This function was added to lessen the steps needed to move individual points. Normally, you'd have to select the point you want to move, then enter Transform Move Free, move the point, exit the function, deselect everything, then select the next point to be moved. With Move Point, you may select a number of vertices at a time, and move each one independent of the others. ==================================================================== Transform: Hot Spot On/Off Function: Hot Spot On/Off FastKey: T-T Description: This will turn on or off the Hot Spot (The little black circle with an X thorugh it.) This hot spot acts as the pivot point for Rotate, the scaling center, and the sizing center. Also, it is the magnet position, and can be used as the center for Transform-Initialize. If the hot spot is set to off, then the centroid of all selected vertices will be used as the basis for the above mentioned functions. This is the way Vertex used to handle rotations/scaling/sizing. I added the Hot Spot specifically for the Gravity function, and it just so happened that these functions were automagically based on the Hot-Spot. ==================================================================== Transform: Set Hot Spot Function: Set Hot Spot FastKey: T-H Description: This will let you position the hot spot, if it is active. The values in the requestor represent the hot spots current position. Enter new values as needed. ==================================================================== Delete Menu Vertex Page 43 DELETE MENU: All X-A Vertices X-V Edges X-E Faces X-F Dup Faces X-D Dup Edges X-X Useless Edges X-U Nearly all the delete functions will act upon selected objects. A selected vertex appears white, a deselected vertex is black. A selected edge is an edge with the vertices at either end being selected. A selected face has all three corner vertices selected. ==================================================================== Delete: Delete All Vertex Page 44 Function: Delete All FastKey: X-A Description: Delete all will delete everything currently in memory. You will first be presented with a requestor asking if you are sure about deleting everything. ==================================================================== Delete: Delete Selected Function: Delete Selected Vertices Fast Key: X-V Description: This enables you to delete only the vertices you have selected. no requester appears asking if it is okay to do so, but you may Undo this if you have set undo to be on. ==================================================================== Delete: Delete Edges Function: Delete Selected Edges FastKey: X-E Description: Only edges with both vertices selected will be deleted. If any face is associated with any selected edge, it will also be deleted. ==================================================================== Delete: Delete Faces Function: Delete Selected Faces FastKey: X-F Description: Only faces with all three vertices selected will be deleted. Any edges are also selected wil be left intact. ==================================================================== Delete: Delete Duplicate Faces Vertex Page 45 Function: Delete Duplicate Faces FastKey: X-D Description: Since many file formats save each face twice, you may wish to delete the duplicate ones while editing your objects. Be warned, this routine is not converted to assembly language yet, so it may take a little time to execute. It may take up to 20 minutes to execute when you have 1500 faces in memory. ==================================================================== Delete: Delete Duplicate Edges Function: Delete Duplicate Edges FastKey: X-X Description: Similar to deleting duplicate faces, this routine will free up memory and go a long way towards "cleaning up" an object. This routine is written in assembly, ans should operate much faster than the face deleting function. Normal operation should not require this function. However, reading some file types may require this function. Check out the EULR: number in the information display. This number represents the total number of vertices plus the total number of faces, minus the total number of edges in an object. If this number is extremely high, or low (say -145), then you may try this function, and delete duplicate faces, to clean up the object. ==================================================================== Delete: Delete Useless Edges Function: Delete Useless Edges FastKey: X-U Description: When I did the Overlap-Fuse routine, I decided to delete the unneeded faces between the fused objects. A side effect of this was a routine called "Delete Useless Edges". A useless edge is one which is not part of any face. This routine does not require the edges to be selected, so be careful. You may want to use this function after doing an extrude, as currently there are "useless" edges in the center of certain extruded objects. ==================================================================== View Options Vertex Page 46 VIEW OPTIONS MENU: Initialize View V-V Indicator Size V-I View Rotations V-R View Positions V-P View Scale (Zoom) V-Z Hide Selected V-S Hide Vertices V-H Unhide Vertices V-U Fast Draw Toggle V-F Trans Fast Draw Toggle V-T Solid V-1 (or just 1) Wire Frame V-2 (or just 2) Anim Wire V-3 (or just 3) Solid Model V-4 (or just 4) ==================================================================== View: Initialize Vertex Page 47 Function: Initialize View FastKey: V-V Description: Upon selecting this menu option, the view rotations, positions and zoom factor will be returned to their normal values. ==================================================================== View: Indicator Size Function: Indicator Size FastKey: V-I Description: This lets you change the size of the vertex indicators. Allowable values range from 1 to 10. You may now enter a value of 0 to force the program NOT to draw selectors. This should speed up displays a little. Please note, you will not be able to select anything in this mode. ==================================================================== View: Rotations Vertex Page 48 Function: View Rotations FastKey: V-R Description: This lets you enter by hand the view rotations pan and tilt. ==================================================================== View: Positions Function: View Positions FastKey: V-P Description: You can change the view positions with typed in values. ==================================================================== View: Scale (ZOOM) Function: View Scale (Zoom) FastKey: V-Z Description: This function lets you enter the zoom factor. I must note here that my zoom routine is not perfect. Zooming large objects to 16x magnification might (probably will) result in odd edges appearing. I am working on a solution to this problem, but speed is a major concern in the drawing routines, and all my solutions to this point have slowed edge drawing considerably. If this results in horrible drawings, try turning off the Persp mode. ==================================================================== View: Hide Selected Function: Hide Selected FastKey: V-S Description: Vertex now offers the ability to hide vertices. This will hide all vertices which are currently selected. (It will also deselect them - hidden vertices may not be modified!) ==================================================================== View: Hide Vertices Function: Hide Vertices FastKey: V-H Description: This will give you the pick pointer so you may choose which vertices to hide. Remember, hidden vertices cannot be selected or modified. ==================================================================== View: Unhide Vertices Function: Unhide Vertices FastKey: V-U Description: This will un-hide all hidden vertices. ==================================================================== View: Fast Draw Vertex Page 49 Function: Fast Draw Toggle FastKey: V-F Description: When altering the view parameters with the mouse, you may want either speed or detail. When this flag is on, changing the view with the mouse will cause a box, the size of all objects, to replace the normal drawing of the objects. When the flag is off, changing the view will require waiting for the entire image to re-draw. On slower systems this delay may take quite a while, and cause a jerky feel to movements. ==================================================================== View: Trans Fast Draw Function: Trans Fast Draw FastKey: V-T Description: This toggle works the same as Fast Draw above, but applies to the Transform menu options of Move Free, Scale Free and Size Free. ==================================================================== View: Render Solid Vertex Page 50 Function: Render as Solid FastKey: V-2 (or just 2) Description: This feature will close the main window and open a 16 color hi-res screen where the current view will be rendered. You can abort the render at any time by pressing either mouse button. Please note that this is in no way intended to be a rendering system. This quick solid model is provided to aid in object development, and that is all. There are no facilites to save these images, or transfer them to video, at this time. I would really like to develop a good scan-line rendering system at some time in the future, but currently, it is nothing more than a basic shading routine. ==================================================================== View: Render Wire Function: Render as Wire Frame FastKey: V-2 (or just 2) Description: This feature will close the main window and open a 2 color hi-res screen where the current view will be rendered. You can abort the render at any time by pressing either mouse button. ==================================================================== View: Anim Function: Animate as Wire Frame FastKey: V-3 (or just 3) Description: A requestor will appear asking for a step value. This is the number of degrees to rotate by for each frame of the animation. You can abort this function by pressing and HOLDing the left mouse button. ==================================================================== View: Solid Function: Solid model FastKey: V-4 (or just 4) Description: The beginnings of my solid model routine. Not done yet, but it gives you another way of seeing the objects (without lines) ==================================================================== Global Menu Vertex Page 51 GLOBALS MENU: Sleep SPACE-SPACE-S (Or the HELP key) Save Defaults SPACE-SPACE-Z Undo On/Off SPACE-SPACE-U Overwrite SPACE-SPACE-O About SPACE-SPACE-A ==================================================================== Globals: Sleep Vertex Page 52 Function: Sleep FastKey: SPACE-G-S Description: Vertex is written in GFA and assembly language. GFA is a great programming language, it has built in bezier curves, a built in file requestor, extremely fast floating point operations and built in sorting routines, but it lacks one thing which is extremely important to Amiga users - full multitasking support. It will multitask, but other tasks will slow to a crawl. This option, also attainable by pressing the 'HELP' key, will close the editor and enable full multitasking. To get back from sleeping, simply press the close gadget of the sleep window on the Workbench Screen. This sleep window has a further benifit, as it frees up about 65k of precious chip memory. Hopefully, a future version of GFA will better support multi-tasking. ==================================================================== Misc: Save Defaults Vertex Page 53 Function: Save Defaults FastKey: SPACE-G-Z Description: This will save the file 'Vertex.Defaults' to the S: directory. After saving this file, everytime you start Vertex, it will read this file and configure the system to your choices. Saved are: Undo On/Off Indicator Size Overwrite On/Off Fast Draw On/Off Trans Fast Draw On/Off ==================================================================== Misc: Undo Vertex Page 54 Function: Undo Toggle FastKey: SPACE-G-U Description: This will turn Undo on or off. When Undo is on, your allowable number of vertices, edges and faces will be cut in half, making room for an undo buffer. You can turn undo on and off at any time. Turning undo on will only work if you currently have less than 1/2 of the maximum number of vertices, edges or faces. If you have more than half the total allowable vertices, edges or faces, then Undo will not come on. You can determine the status of Undo by examining the "Undo" gadet on the left side of the screen. If the word UNDO is written in the middle of the gadget, then UNDO is on. If the gadget is blank, then UNDO is off. ==================================================================== Misc: Overwrite Vertex Page 55 Function: Overwrite Toggle FastKey: SPACE-G-O Description: When you go to save a file, the system first checks to see if the file already exists. If this toggle is on, and a file already exists, you will be asked if you want to over write the file. If this toggle is off, Vertex will automatically overwrite the file. ==================================================================== Globals: About Vertex Page 56 Function: About FastKey: SPACE-G-A Description: This will bring up a requestor telling you the version number of Vertex, a serial number (for registered users) and the amout of free chip and fast memory available in the system. Also, you will see the maximum number of vertices, edges and faces which Vertex can handle on your machine (memory dependant) ==================================================================== Save Menu Vertex Page 57 Save Menu: Sculpt 3D/4D Turbo Silver/Imagine Lightwave (See Note) GEO (VideoScape 3D) Wavefront 3D Professional ==================================================================== Save Menu Vertex Page 58 This section describes the major file formats understood by Vertex. Included are notes on usage, cautions to watch out for, and some additional notes on using each file format. At this point, only the 3D object is transferred by Vertex. Face attributes, ie. color, reflection, transparency, etc., are not transferred at this time. I am working on a solution to this problem at this time. Be warned again that I am not responsible for any mishaps reguarding files, disks or loss of anticipated profits from use of this program. It is provided as-is (Please read the file Must.Read). If a problem does occur, I will be more than happy to find a solution, if such a solution is possible. ==================================================================== Save: Compressed Vertex Page 59 The compressed file format, which is the only saveable format available in the demonstration version, is a special format used internally within Vertex. The format will save more information in less space, and at the same time, retain the selection status of the vertices saved. Version 1.24 and above will discontinue Save-Compressed from the Demo Version. it has come to my attention that some people are trying to hack my compressed file format, so I am left with little choice but to remove it. Full registered versions will support it - it is still a good method to archive objects in less space. ==================================================================== Save: Sculpt Sculpt 3d/4d Files Only Sculpt objects are used by Vertex. Whole scenes, including light locations, observers, render modes, etc., are not saved with Vertex files. The files end in .scene only for Sculpt compatability. Most all Sculpt 3D/4D files should work in Vertex. However, since sculpt 4D has added new object types to their software, including b-splines, etc., I can make no guarantee as to object conversion. If you do have a problem with a file, simply send me the file and I will attempt to read it in correctly. If you are a preferred user, I will send you the update as soon as I can. Minor changes such as this will cost a little. I will pro-rate small changes such as this to some value relative to time involved, real usefulness, etc. (This value should not go beyond the $10.00 update price), for basic registered users. Sculpt's file format, SC3D, most closely resembles the way Vertex stores it's information. As a result, these files should load and save the quickest of all. ==================================================================== Save: Turbo/Imagine Vertex Page 60 Turbo Silver/Imagine Files Turbo Silver and Imagine both utilize the same file format. Again, "primitive" objects, such as sphere's, may not be transferred correctly. Only individual objects saved and loaded are compatible with Vertex. These objects can be saved and loaded in the Object Editor of either package. Again, entire 'CELL' files are not handled by Vertex, only the individual objects of the cells. Load time may take a bit. Since the Turbo Silver/Imagine file format stores faces in a different manner than most other software, conversion must be performed at load time. The load and save routines are optimized in assembly, so they should operate fairly fast. Do not be alarmed at a 2-3 minute delay on standard (68000) systems for larger objects. This latest version, 1.24, will correctly handle named objects. However, a word of warning is in order. Since Turbo Silver and Imagine require objects to be single entities, you must be careful that the objects you save are not connected to other objects with different names. For example, if you have 2 simple cubes with different names, and then connect the cubes by placing a face between them (with the Add-Face command), they will not save correctly. This is because the new face will contain 2 vertices with one name, the the third vertex will have another name. Currently the Fuse function will first check to see if all the vertices to be fused together have the same name. Other functions, however, such as Fuse-Connected, Add Edge and Add Face do NOT check to make sure all vertices have the same name. It is up to you, the user, to ensure objects are correct. If you have a problem saving objects in Silver/Imagine, then I suggest you make use of the select connected function. ie. Select 1 object from the Named menu, do a select connected, then re-name the object. Do this for every object in memory, and you should be fine. If anyone has a real problem with this, then I'll make this a macro done before Imagine/Turbo saving. This routine now checks the edge list to see if any edge has endpoints with different names. If an edge is found with 2 differently named vertices, the function will abort. Currently, I am having problems with impulse objects with odd an odd number of faces. Vertex will load them back in, as will Interchange, but Turbo Silver will not. Not a big deal to fix, so it will be done in the next release. -- This bug has been fixed, so you should not have a problem with it. I have tested it on many combinations of objects with odd and even numbers of faces. If anyone has a problem with this, please let me know. ==================================================================== Save: Lightwave Vertex Page 61 Lightwave Files Lightwave objects are supported within Vertex, but some restrictions do apply. Lightwave has the ability to handle polygons which contain more than 3 vertices. This is a common occurance in many 3D programs, but Lightwave further complicates the matter. It is possible for these objects to contain concave components to a face. Let me explain. Take, for example, a 6 pointed star, with vertices numbered like so: 1 / \ / \ B---C 2---3 \ / \ / A 4 / \ / \ 9---8 6---5 \ / \ / 7 Filling this polygon would not be a simple task. If, for example, we tried to make a face out of the vertices 1-2-3, this face would be incorrect. The face 1-2-3 is not truly a part of the object. We could add an extra vertex to the middle of the face, as shown below, and create faces from this: 1 /|\ / | \ B---C | 2---3 \ \ | / / \ \|/ / A---D---4 / /|\ \ / / | \ \ 9---8 | 6---5 \ | / \|/ 7 This goes a long way to simplifying the face filling operation. However, adding vertices like this may over complicate a simple object. ==================================================================== Save: Lightwave Vertex Page 62 For example: 1-----2 1-----2 1-----2 | | |\ /| |\ | | | | \ / | could | \ | | | >>> | 5 | be | \ | | | | / \ | | \ | | | |/ \| | \| 3-----4 3-----4 3-----4 4 Faces 2 Faces Now we have 4 faces when we could get away with 2. When additional polygons can add so much time to rendering 3D objects, I felt this was a real issue which had to be handled in some way. As Vertex currently stands you are asked for a choice when loading Lightwave objects. The choices are circular and radial. Radial will add a vertex to the center of all faces and connect that new vertex to each corner of the polygon. Circular will use 1 corner of the polygon as a base, and connect it to all other corners of the polygon, in a round the clock manner. Radial 1-------2 / \ / \ / \ / \ / \ / \ 6-------7-------3 \ / \ / \ / \ / \ / \ / 5-------4 Circular 1==-----2 /|\ \__ \ / | \ \__ \ / | \ \_\ 6 | \ 3 \ | \ / \ | \ / \| \ / 5-------4 If you know you have complicated faces in an object, such as the star mentioned above, then choose the Radial (Extra Vertex) mode. If you have faces with only 4 vertices or so, then choose the Circular method. ==================================================================== Save: Lightwave Vertex Page 63 It should also be mentioned that not all Lightwave objects will load correctly. Similar to the star example above, examine this object: 1------2 | | | | | | * | | | 3----------------------4 | | | | 5-----------------------------6 Now we have a situation. Neither method will work correctly on an object of this type. If we add a new vertex in the center of the object (*), it would end up above the #3 vertex, and outside of the polygon. Likewise, if we applied the circular method to the above shape, we would end up with an edge going from vertex #1 to vertex #4, which would put the edge outside of the shape again. What does this mean? Well, Vertex currently cannot handle shapes of this nature. Whichever method you choose for the entire file will be applied to the polygon. Note, however, that the radial method does offer a solution for this particular example. If you were to manually move the newly created vertex to a position inside of the original polygon, your shape would be correct. Example: 1------2 After loading the new vertex | | \ would be where #7 is. | | \ (Only the misplaced faces are | | /7-----_____ shown in the diagram) | | / ------__ | 3----------------------4 | | | | 5-----------------------------6 1------2 After repositioning the | | added vertex into the center | | of the polygon, we end up with | | a good shape which matches the | | original design. | 3----------------------4 | 7 | | | 5-----------------------------6 None of these solutions are perfect, but they do offer the opportunity to load the objects, even if it means a little extra work on the users part. I do have plans to make this routine "smarter". ==================================================================== Save: GEO Vertex Page 64 GEO File Format: The GEO file format has just been added. This is the file format used by Video-Scape 3D. Loading should be the simplest operation of all. Saving in Geo brings up the "Dual Face" nature of each face in an object. Geo defines each face as having a direction, aside from the actual definition of the object itself. As a result, Vertex saves each face in a bi-directional manner, meaning each face appears twice in the file. Since GEO files are in ASCII, you may edit them with any text editor or word processor which can save in ASCII format (no control codes/font changes/bold/underline etc.) ==================================================================== Save: 3D Professional 3D Professional: This file format is only available for loading. Since 3D Pro has the ability to load other file formats, it is not necessary to duplicate that feature here. ==================================================================== Save: Wavefront Vertex Page 65 Wavefront Format: For those with access to a wavefront machine, this is the file format to use. Similar to GEO, the faces must be duplicated when saved. Wavefront is a powerful system; it has many feautures which may make their way into a wavefront file. These will be weeded out at load time, and they will not appear in the saved object. Again, the only thing transferred at this point is the object itself. Vertex now looks at wavefront files different than other files. Vertex usually reads the first part of a file and determines the files format. Wavefront does not have a specific identifier in the file. However, Vertex will look at the extension of the file name, which should be .obj, which is the normal extension for Wavefront files. This is a last resort feature. Vertex will first read the file to determine the file type. If it cannot figure out the file type, then it will read the file extension. In this way, you may have the extension .obj on other files (Which I assume many people use for object files.) ==================================================================== The Keyboard Vertex Page 66 THE KEYBOARD: Most all commands in Vertex have an associated key command. Even some key short cuts do not appear in the menus. Here's a list of the additional key short cuts. KEY RESULT === ================================ 1 Render as a solid 2 Render as a wire frame (hidden line) 3 Rotate as a wire frame f1 Perspective View f2 Front View f3 Side View f4 Top View Up Arrow Move Position Up (View Dependant) Down Arrow Move Position Down (View Dependant) Left Arrow Move Position Left (View Dependant) Right Arrow Move Position Right (View Dependant) - Zoom out by 2 = Zoom in by 2 _ Zoom out by 4 + Zoom in by 4 ¹ Fast quit (no chance to save!) (This is 'Alt-1' ) HELP Enter sleep mode ==================================================================== The Future Vertex Page 67 THE FUTURE: Finally, I'd like to mention some things about the future of Vertex. I have plans to put more features into Vertex, and I would really like to hear what others are looking for in 3d design software. You might have a great idea for a function or command, or utility that would make Vertex better. If you submit an idea, and it is feasible, I will put it in the program. Currently, I am hoping to add: Face attributes (Color, Reflectivity, etc.) (**** NEXT!) (I have colors worked out for the 3 major file formats (Sculpt, Imagine, and Lightwave), but they're in testing at this stage) More File Formats Maybe a seperate rendering package (There seems to be too many!) How about PostScript Font support? I have ideas for some new virtual 3d type solid generation schemes, as they are completed, I'll release them. I hope you can make use of Vertex. I have put every effort into making the program solid. However, a program of this complexity will doubtlessly have bugs in it. If you find a bug, please let me know by detailing your system set-up and what you did just before the error occured. I can be reached at: US Mail: Alexander D. Deburie 4189 Nickolas Sterling Heights, MI 48310 USA UseNet: ad99s461@sycom.mi.org PS: If you have problems with Vertex, first check out the Vertex.Help file. -- Alexnder D. Deburie =============================================================== Amiga is a registered trademark of Commodore-Amiga, Inc. Sculpt 3D and Sculpt 4D are trademarks of Byte By Byte, Inc. Turbo Silver and Imagine are trademarks of Impulse, Inc. Lightwave is a trademark of NewTek, Inc. Wavefront is a registered trademark of Wavefront Technologies, Inc. Videoscape 3D is a trademark of Aegis Development 3D Professional is a trademark of Progressive Peripherals & Software Arexx is a trademark of William S. Hawes Vertex 1.1a (C) Copyright 1991 Alexander D. Deburie All Rights Reserved Using Arexx with Vertex This document makes no attempts to educate the user on how to program in Arexx. If you do not understand how to program in Arexx, I encourage you to learn the language. It is not difficult to grasp, provided you have some programming experience, and the benefits will quickly save you time. This document is divided into two sections: 1. Communicating with Vertex through Arexx 2. Command Descriptions and Usage The actual use of each of these commands is further documented in the main manual. 1. Communicating with Vertex through Arexx All Arexx scripts designed to communicate with Vertex must have the following line in them: address 'VERTEX' This line must be EXACTLY as it appears. Vertex must be in all upper case, and ideally surrounded by single quotes. This tells the Arexx script that the following commands will be sent to a program named VERTEX. Commands must be between single quotes, as shown in the following examples: 'select all' 'name Every_Thing' These two lines of script will select every vertex and name them all "Every_Thing". Note how there are no spaces in the names of objects. This is necessary to keep Vertex from dropping everything after the last space. AREXX ERROR CODES: When you send a command to Vertex, there is a chance you might not supply the correct parameters or have them in the right order. If Vertex recives a command it does not know what to do with, it will return an error number. These errors are detailed here: ERR MEANING ================================================================== 0 = OKAY (Everything went fine) 10 = Value Error You might have supplied a value which was out of the range which Vertex understands. (ie. Coordinates beyond +-2,000,000,000) 11 = Missing Operand/Key Word The function you called required a field which you did not fill in. (ie. Not supplying an angle for a lathe creation) 12 = Unknown Operand/Key Word You tried to call a function with a keyword it did not recognise, as in trying to create an Open or Closed grid. 13 = Unknown Command The first word of the command was unknown to Vertex. Check this document to ensure the command is implimented (at this time Basic Shapes and Delete Duplicate Faces are not implimented.) These are the mandatory aspects of making Arexx work with Vertex. The following is a detailed explaination of each command available. 2. Command Description and Usage The following descriptions use the format: Command Value1 Value2 Option1/Option2 ... Where Command is always required, and other values may or may not be needed. Some commands, such as lathe, will take 1 of two possible values, ie. Open or Closed. These will be seperated by a slash /. Most all commands have a strict number of values they accept, so you must be accurate to ensure the command will operate properly. Following the description will be a short example for each command. ********************************************************************** Undo This will undo the last operation, provided UNDO is active inside of Vertex. No extra values are required at this time. Example: /* Example */ address 'VERTEX' 'delete all' 'undo' ********************************************************************** Draw You can force the display to be redrawn with this command. Most commands do not re-draw the display when they are finished. This is done to speed up the Arexx interface, so time is not wasted continually redrawing the screen after each modification. Example: /* Example */ address 'VERTEX' 'select all' 'move 100 0 0' 'draw' ********************************************************************** Setview Perspective/Front/Side/Top This will change the editor view mode to any 1 of the 4 possible choices. Again, the view will not be re-drawn until you pass the command DRAW. Example: /* Example */ address 'VERTEX' 'setview top' 'draw' ********************************************************************** Plot X Y This command will plot a point on the polygon or lathe creation screens. The point will not appear on the actual screen, but it will be held in memory. You must use this command before attempting to create lathes or polygons, in order to define a shape. Example: /* Example */ address 'VERTEX' 'plot 100 100' 'plot 100 -100' 'plot -100 100' 'plot -100 -100' 'polygon closed My_Box' ********************************************************************** Lathe Open/Closed Angle Steps Name After defining a lathe outline with successive calls to the Plot command, this command allows you to create a lathed object. You must supply either Open or Closed as the second key word. Also, you must include the desired angle of the lathe, the number of steps and the name of the object. Example: /* Example */ address 'VERTEX' 'plot 100 0' 'plot 100 10' 'lathe open 360 30 Coin_Edge' ********************************************************************** Polygon Open/Closed Name Similar to lathe, you must first create points for this command with the Plot command. Once the desired points are created you simply choose either open or closed, and include a name for the object. Example: /* Example */ address 'VERTEX' 'plot -100 -100' 'plot 100 -100 'plot 0 100' 'polygon closed Triangle' ********************************************************************** Grid Width Height ResX ResY Name With this command, you can define a grid with your specified dimensions and resolution. The inputs are exactly the same as the Add Grid command in the program itself. Example: /* Example */ address 'VERTEX' 'grid 200 200 8 8 Checker_Board' ********************************************************************** Vertex X Y Z Here you can create any vertex in 3D space by supplying the X,Y and Z coordinates for the vertex. Example: /* Example */ address 'VERTEX' 'Vertex 43.233 -736.22 1.41468' ********************************************************************** Edge V1 V2 You may add an edge between any 2 existing vertices. Example: /* Example */ address 'VERTEX' 'vertex 100 100 0' 'vertex -100 100 0' 'edge 1 2' ********************************************************************** Face V1 V2 V3 You may add an face between any 3 existing vertices. Example: /* Example */ address 'VERTEX' 'vertex 100 100 0' 'vertex -100 100 0' 'vertex -100 0 0' 'face 1 2 3' ********************************************************************** Duplicate Xoff Yoff Zoff Name This will duplicate all selected vertices, edges and faces, moving the new object to the relative offset you supply. Example: /* Example */ address 'VERTEX' 'select all' 'duplicate 0 0 100 Copy_Of_Everything' ********************************************************************** Select All This will select every vertex currently in memory. Example: /* Example */ address 'VERTEX' 'select all' ********************************************************************** Select Swap Each vertices selection will be swapped. If the vertex was selected it is now deselected, and vice-versa. Example: /* Example */ address 'VERTEX' 'select swap' ********************************************************************** Select Name Object_Name Select vertices with the given name. Example: /* Example */ address 'VERTEX' 'select name Car_Door' ********************************************************************** Select Vertex V Supply a vertex number and it will be selected. Example: /* Example */ address 'VERTEX' 'deselect all' 'select vertex 10' 'select vertex 11' ********************************************************************** Select Pattern 000000000 Select vertices according to the supplied pattern. Example: /* Example */ address 'VERTEX' 'select pattern 11001010' ********************************************************************** Deselect All This will deselect every vertex currently in memory. Example: /* Example */ address 'VERTEX' 'deselect all' ********************************************************************** Deselect Swap Each vertices selection will be swapped. If the vertex was selected it is now deselected, and vice-versa. Example: /* Example */ address 'VERTEX' 'deselect swap' ********************************************************************** Deselect Name Object_Name Deselect vertices with the given name. Example: /* Example */ address 'VERTEX' 'deselect name Car_Door' ********************************************************************** Deselect Vertex V Supply a vertex number and it will be deselected. Example: /* Example */ address 'VERTEX' 'select all' 'deselect vertex 10' 'deselect vertex 11' ********************************************************************** Deselect Pattern 000000000 Deselect vertices according to the supplied pattern. Example: /* Example */ address 'VERTEX' 'deselect pattern 11001010' ********************************************************************** Move DistX DistY DistZ Moves all selected vertices the requested distance. Example: /* Example */ address 'VERTEX' 'select all' 'move 100 0 0' ********************************************************************** Initialize Initializes all vertices so their centroid is at the center of the 3D world. Example: /* Example */ address 'VERTEX' 'select all' 'initialize' ********************************************************************** Rotate AngleX AngleY AngleZ Will rotate all selected vertices by the requested amount around each axis. Example: /* Example */ address 'VERTEX' 'select all' 'rotate 90 0 0' ********************************************************************** Scale ScaleX ScaleY ScaleZ This command lets you scale all selected vertices by the desired scaling factor on each axis. Example: /* Example */ address 'VERTEX' 'select name Table_Top' 'scale 1.75 1 .75' ********************************************************************** Size Factor Here you can globally scale all axes by the same amount. Example: /* Example */ address 'VERTEX' 'select all' 'scale 2' ********************************************************************** Multiply Formula This lets use the multiply formula feature from Arexx. Supply any matematical formula, and all selected vertices will be sent through the function. Example: /* Example */ address 'VERTEX' 'select all' 'multiply y=cos(z^1.23/x*(z/3))*z^1.1/y' ********************************************************************** Fuse This command will fuse all selected vertices into one. Example: /* Example */ address 'VERTEX' 'select name table_top' 'fuse' ********************************************************************** Extrude DistX DistY DistZ This will extrude all selected vertices. Example: /* Example */ address 'VERTEX' 'select name Out_Line' 'extrude 0 100 0' ********************************************************************** Subdivide The subdivide command will be applied to all selected faces. Example: /* Example */ address 'VERTEX' 'select all' 'subdivide' ********************************************************************** Randomize RangeX RangeY RangeZ This command will randomize all selected vertices to the ranges you specify. Example: /* Example */ address 'VERTEX' 'select all' 'randomize 10 0 10' ********************************************************************** Name Object_Name Will rename all selected vertices to the given name. Example: /* Example */ address 'VERTEX' 'select all' 'name Everything!' ********************************************************************** Delete All Will delete everything currently in memory. Caution! Arexx has no way of verifying this command, so immediately after executing, everything will be gone! Example: /* Example */ address 'VERTEX' 'delete all' ********************************************************************** Delete Vertex This will delete all selected vertices in memory. Example: /* Example */ address 'VERTEX' 'deselect all' 'select Obj_11' 'delete vertex' ********************************************************************** Delete Edges All edges which have both vertices selected will be deleted. Example: /* Example */ address 'VERTEX' 'deselect all' 'select vertex 1' 'select vertex 2' 'delete edges' ********************************************************************** Delete Faces Each face with all three vertices selected will be deleted. Example: /* Example */ address 'VERTEX' 'deselect all' 'select vertex 22' 'select vertex 23' 'select vertex 24' 'delete faces' ********************************************************************** Render Solid Will render the current view as a solid model. Example: /* Example */ address 'VERTEX' 'render solid' ********************************************************************** Render Wire Will render the current view as a hidden line wire frame. Example: /* Example */ address 'VERTEX' ********************************************************************** Render Anim Steps Will generate a rotating animation of the current view with the requested number of degrees between steps. Example: /* Example */ address 'VERTEX' 'render anim 10' ********************************************************************** View Init Will initialize the view. All rotations will be set to 0, and all view positions will be normalized. Also the zoom, or scale factor, will be set to 1. Example: /* Example */ address 'VERTEX' 'view init' ********************************************************************** View Indicator Pixels This command will change the vertex indicator size to the given value. Example: /* Example */ address 'VERTEX' 'view indicator 3' ********************************************************************** View Rotate Pan Tilt This command will change the current view rotations to the supplied values for pan and tilt. Example: /* Example */ address 'VERTEX' 'view rotations 0 90' ********************************************************************** View Position PosX PosY PosZ View position will let you move the view around by supplying offsets for the X, Y and Z positions. Example: /* Example */ address 'VERTEX' 'view position 0 0 -200' ********************************************************************** View Zoom Scale# This command lets you change the viewing scale to the supplied value. Allowable values range from .01 to 16 Example: /* Example */ address 'VERTEX' 'view zoom .5' ********************************************************************** Read FullFileName This will load the supplied file into the editor. If a path is needed for the file, it must be supplied. Example: /* Example */ address 'VERTEX' 'read ram:IceCream_Cone' ********************************************************************** Save Format FullFileName You must supply a file format and the full name of the file. Example: /* Example */ address 'VERTEX' 'save compressed Test_Obj' Formats are listed below: COMPRESSED GEO1 SCULPT LIGHTWAVE WAVEFRONT TURBO (For Turbo Silver and Imagine Objects) If you are having problems getting Vertex to run on your system, please read below: MULTITASKING If you are having problems with multitasking on your Amiga while Vertex is running, remember to either choose the menu option MISC-SLEEP, or press the HELP key. INIT ERRORS: 8: There seems to be some minor memory problems when using Vertex on systems with "too-much" memory. If you have over 8 megs of memory, try filling some up with another application before running Vertex. Version 1.15 and above fixes this problem by limiting the number of vertices, edges and faces to 32760. Future versions will contain a "large" memory model so that vertices edges and faces can number up to about 1,000,000,000. I hope that will be enough! Version 1.21 and up now offer 64000 vertices as a limit. I was limited to this number by other software which limits objects to have approximately 64000 vertices. If this is a major problem, let me know and I'll see what I can do about it. I have successfully used this scheme in tests on an Amiga 3000 with over 8 megs of ram. If anyone has further problems with this, please let me know. RUN TIME ERRORS: I have tried to make many of the functions "stable" by first checking to see if there is enough memory available. It is kind of difficult for me to fully test these types of things, since I only have a 1 meg machine. Be leary of error 8, which is the out of internal memory error. When this happens, you are trying to operate on too many vertices at once. Let me know when you run into this error, and I should ba able to alter the code a bit to fit any special circumstance. GURUS: Again, if you have too much memory, Vertex may try to allocate more than 65000 vertices. This may run into problems in the edge list. If this is a problem, then turn the UNDO option to ON, and everything should be better. UNKNOWN RUN TIME ERRORS: Please let me know when you run into these errors. Include a brief description of your system set-up, and what you did before the error occured. If the UNKNOWN ERROR requestor will not go away, you may have to re-boot the machine. When errors occur, the system will abort any function and try to re-draw the screen. If the error occurred during a screen re-draw, then an infinite loop of errors will continuously appear. DRAWING: Be leary of using perspective mode when zoomed in on large objects. The system may lock up due to an unknown error. I'm in the process of re-writing the drawing routines so this kind of thing does not happen. GURUS WHILE READING: I've tried to make the file reading routines as "dummy proof" as possible. If you try and load a file, and Vertex does not know what it is, it will pup-up a menu and ask you if it is a Wavefront file. If it is, then select the menu item "Wavefront". If it is not a Wavefront file, then move off the menu to abort the read. If you don't you run the risk of crashing the system! Wavefront reading has been changed to make use of the ever present .obj on the end of Wavefront files. This is a last resort test, so if you have objects created with other software which end with .obj in their file name, they should still read correctly. -- Alex Deburie Changes.doc UpDated: 1/7/92 This is a quick list of the changes in this version of Vertex. If this is an update version for you, then you can bypass re-reading the entire manual, if you wish, unless specific details are mentioned which are only present in the updated manual. Changes to Version 1.28 - Registered Update for Preferred Users (1/7/92) . Most (All I hope) of the bugs present from the changes made in the previous version have been taken care of. . I've added some real-time indicators to let you know about transforming objects with the mouse. The bottom line will now tell you how much you are scaling, sizing or moving objects in any of the transform free functions. . The Arexx port is not working correctly. For some reason, the port name "VERTEX" does not show up from within Arexx. Please do not expect to use the Arexx port, as I cannot guarantee it will even be available. This is one of the things I am currently working on. Changes to Version 1.26 (1/1/92) . Objects saved in Turbo Silver/Imagine will be created on their centroid, instead of all the objects overlapping one another. . Sped-up the Turbo Silver/Imagine save routine. It only loops through the faces once now. . Optimized view calculations when Front, Top and Side views are chosen, and no view rotations need to be calculated. . Tried to optimize the extrude and bevel commands. They should work somewhat faster now. . Added the select exterior edges routine. See the manual. . Added the Delete useless routine - see the manual. . Added the ability to hide vertices. Hidden verticies may not be selected or modified. . Greatly sped-up the add-face command. It won't delay after exiting the function. . I made sure the unselected vertices are drawn first, and then the selected vertices are drawn. Should make it easier to see selected vertices now. . A command was added to find the distance from one vertex to another. . Pick and Unpk buttons were added to the main window. Once selected, you may select vertices by clicking right on them or stretching a selector box. Again, press the right mouse button to exit the selection mode. Changes to Version 1.24 (12/29/91) . Added a gravity (magnet) interface. The gravity will attract or repell vertices based on their distance from the centroid of the selected vertices. Also, the newly included Hot Spot can become the center of gravity. . Added a Hot Spot which replaces the center of everything. Formerly, Vertex relied on the centroid (or average) of all selected vertices to perform certain transformations. Now you can place a moveable hot spot to replace this. The hot spot is sticky - in that it will attach itself to a vertex if you place it over a vertex. . Added the Overlay Fuse command. This will attempt to do a fuse of all vertices which are on top of one another. With it, you can connect objects. . Object names in Turbo Silver and Imagine are now saved with the file. (Former versions didn't even attempt to do this) There are important side effects of this new feature, so make sure and read the documentation on the Impulse Save command. (See the manual!) . Bugs fixed: - Transform Point-Move will now correctly handle the view positions. (Before it didn't take them into account) - Subdivide Edges will name the new vertex the same as the other two vertices at the endpoints. - Planar fill works now! (Sorry about that one, I completely forgot to repair it after changing another routine) - Fuse Vertices will always work, unless you specifically cancel it. - I made some changes to the File writing routines to better capture errors. Changes to Version 1.23 (12/27/91) . Lots of little bug fixes. I fixed the Transform-Point move routine to reflect the current zoom level, and corrected the problems with vertex names across bevel, extrude and duplicate. . I've also included a printable version of the documentation for the registered user. Currently, it is 67 pages, and contains a simple table of contents. Once I finish my indexing program, we'll have an index. The file contains the form feed character (ctrl-L), so pages will be split. Hope this helps. Changes to Version 1.22 (12/24/91) . Wavefront file reading has been further repaired. It now relies on the .obj on the end of the file to determine it it's type. . The bevel routine has been further improved. It will currently bevel up to 1000 vertices. Whats more, the bevel will be correct, even on very tight corner angles. ie. no "windshield wiper" effect. . A new point editing routine has been added under the transform menu. It's called Point Move, and it works by selecting a number of vertices, then it enables you to move those points individually. Check out the manual on this one - I'm sure many people will find it helpful. . Apply curve has been fixed completely! (I hope!) Well, it should not forget any vertices now, and the interface has been re-worked to make it easier to understand. . A subdivide edge command has been added to add detail to your objects. Read the docs for the skinny on this function. . I re-did the Lightwave loading routines - they should be a little faster. I just recieved the real docs on this file format, so you should be seeing the promised face attribute stuff shortly. . The limit for vertices, edges and faces has been expanded to 64000. Currenty, this is the absolute limit, although I have plans to re-work some of the loading and saving routines to open this up. Changes for Version 1.19 - Registered Update for Preferred Users (12/17/91) . The Wavefront file format has been repaired. Unfortunately, Wavefront seems to be in the "habit" of changing their file format. The docs I used, dated January 1991, are already out of date. The problems have been fixed. . The anim-render mode has been fixed. I had the workbench screen colors inverted (0 and 1) so 2.0 users were seeing a black image drawn on a black screen. . The Basic Shape-Sphere routine has been fixed. Certain values which did not divide into 360 were causing odd-shaped spheres to be created. . The mouse reading routine was slowed down. Some Amiga's, especially ones with 3rd party mice, were reading the mouse click too fast. . Extrude is now smarter. It will not create faces on the interior of the extruded object, which never get rendered anyway. . A Bevel Edges command has been added, under Modify. This will extrude, then "router" the edges of a flat object. I would strongly suggest reading the manual for further information on this command. . I have double checked the "too much memory" problem of older versions. To date, I have sucessfully run Vertex on an Amiga 3000 UX with 8 megs, and an Amiga 2000 w/1.3 and 2.0 with 10megs. If you have further problems with this, please notify me, and include descriptions of your system set-up and what actually happened at load time. . Error catching and correction has been greatly improved. Errors are now correctly trapped at File Loading/Saving, Multiply, and render. Vertex, edge and face overflow errors are on my list. In order to speedily return from these errors, hooks have to be put in which would greatly slow down performance. Hopefully, the next version will see this problem solved. . A new option has been added to the Lathe Menu. It is called Rewind Lathe. This will enable you to quickly re-create the last lathe created, without having to re-define it yourself. Multiply Document - Hints and tips on getting th emost use out of Vertex's multiply feature. The multiply command lets you apply any mathematical formula to any set of selected vertices. You are limited to affecting 1 axis at a time, ie. either X=, Y= or Z=. For the unitiated, this feature probably seems useless. "I don't know anything about math - I'm an artist!", might be what your saying to yourself. If this is the case, then I strongly urge you to read this document. It will not explain the rules and details of mathematics, but it will give you some formulas, with explainations, which could produce just the effect your looking for. Lets start by getting a feel for how the Multiply command works. With any object selected, activate the Multiply command under the Modify menu. To quickly erase the current formula, press and hold the right Amiga key, then press the X key. Now, enter the following formula: X=X (This may not look like a formula, but it is!) Before pressing return, try to guess what will happen. Ask yourself, "What is being changed." If you answered the X coordinate of all selected vertices, then you are correct. Thats what the X= part of the formula means. We will be assigning some value to the X coordinate of every selected vertex. Now, ask yourself, "What are we assigning to the X coordinate?" Well, for this example, the answer is - the original X coordinate. The net effect of this is that there will be no change to the object. We will be assigning the original X coordinate to the new X coordinate. If your saying, "Wow, thats pretty useless", your right. However, I wanted to get the point across about how the axis on the left of the equation, the X=, is what will be assigned a new value. And, this value is based on the right hand side of the equation. Now, lets take our example a little further. Lets alter our "useless" equation into something we can use: X=X*2 Examine this equation. Ask yourself, "What is being changed?" and "What is it being changed to?" Lets run through it. We are changing the X coordinate (I hope this is clear now). Now, how are we changing the X coordinate? We are taking the original X coordinate and multiplying it by a factor of 2. So, every selected vertices X coordinate will be doubled. If your think this sounds alot like a scale command, you are right. This particular formula will double the width, or X axis, of an object. If we did this in the traditional 3D object editor, we would use the scaling command, and enter a value of 2 for the X axis. True, Vertex has a scale command and this is not that "useful" of a function, but it does open up some new possibilities. Lets take our example a quantum leap forward. Examine this formula, and try to figure out what will happen: X=X+Y Again, we will be affecting the X axis, as shown by the X= in the equation. Now we must ask, "What is the X axis being changed to?" We will be taking the X coordinate of the vertex and adding the Y coordinate to it. Do you know what this will produce? I'd highly suggest trying it now, as I'm sure you can find it useful. If you have tried it, you will see that this is a "shear" command. With it we can tilt a 3D object, or make 3D text italic. Pretty neat, eh? We have only just begun to make use of the Multiply command. ========================================================================== After playing with simple addition and multiplication of vertices, you will prbably discover most of the functions under the Transform Menu: Move, Scale and Size. With the addition of some simple trig formulas, we can open a whole new world of math. Please, don't be intimidated by the trig formulas - we will not be talking about theory! We will be giving you some useful examples of actually using the functions. Lets start with Cosine. Cosine is a trig function, and it is pretty useful. It will return a value between -1 and 1. This value will be circular, or wavy. The COS function should look like this: COS( X ) or COS( Y ) or COS( Z ) Notice how there is COS, then an opening parenthesis, then a letter representing an axis, then a closing parenthesis. The letter of the axis is important, if we simply put a number in there, say COS( 10 ), we would always get the same result. When we put an axis in the middle of the parentheses, we get a varying, or wavy, result. We can use it to map a wave onto an object: Z=cos(x) Lets take a minute to talk about the function before we really try it out. First, it should be obvious that we are affecting, or changing, the Z axis of the object. Now, we ask "What is the Z axis is being changed to?" The Z axis will be assigned the COS of the value of the X coordinate. As the X coordinate changes, the Z coordinate will be the COS of that x coordinate. If this is confusing, (it is very difficult to explain with words), don't worry - we'll look at an example. If we used the formula Z=cos(x), we will probably be a little disappointed. The object will look rather flat after applying the formula. The reason is that we changed the Z coordinate to be the cosine of the X coordinate. The cosine function only returns values between -1 and 1. To fix this we need to change the formula a bit: Z=cos(x)*20 Now that we've added the *20 to the equation, we will scale the new Z coordinate by 20. Type in this example, ans check out the effect. (Make sure you have some vertices selected!) The *20 is considered a scaling factor, or the amplitude. In this case, the Z coordinate will have coordinates any where from -20 to +20. So, by changing this value, we can change the size of the waves. Before we leave the cosine function, lets talk about 1 more thing - frequency. The frequency can be explained as the number of bumps, or high points, in a cosine wave. ** ** *** *** ** ** * * * * * * * * * * * * ** ** *** *** **** To change the the frequency of a wave, we must scale the input. Here's an example: Z=cos(x * 2)*20 Now we've changed our cosine formula to create twice as many high points, or complete waves, in the object. If you tried the cosine example, and found it gave you too few waves, then you can experiment with this scaling factor to increase the number of waves in the object. So, here is, finally, a really useful example. You now have the ability to make waves in your objects! To help you along, here are some hints/tips on using the cosine function: . The size of the original object is very important. You can use the same formula on 2 objects of different sizes, and get very different results. . If you object is centered on the origin, then you will get symmetrical results. Try moving the object on any axis before applying the formula, and see what you get. . Fairly large objects with few vertices, may result in a rather poor effect. If this is a problem, try subdividing the object, or scaling it down. . Don't hesitate to experiment! You may come up with some real interesting results just by changing the formula a little bit. ========================================================================== SIN is a trig function, as is cosine. In fact it is very similar to cosine, except the high point of the sine wave is the low point of the cosine wave. To see the effect of this difference, create an object, (a grid works the best), and apply the following formula: Z=sin(x*2)*30 After this function returns, you will see an effect similar to the COS example above. Now, duplicate the object with Add-Duplicate, and apply this formula to the duplicated object: Z=cos(x*2)*30 You will see how the waves are the mirror image of each other, across the Z axis. Vertex Version 1.5a © Copyright 1991 Alexander D. Deburie All Rights Reserved All users of Vertex are required to read this text before using Vertex. *********************************************************** This is the registered version of Vertex. Any use by other than registered users is prohibited by law. This registered version of this software may NOT be freely distributed. *********************************************************** HOW TO REGISTER Registration comes in two forms. There is the $30 version, which includes a full version of the program, a complete document file, documentation for the Arexx port, and a submittal form for ideas and suggestions. Updates will cost $10 each. The $50 version includes everything in the $30 version, plus you get FREE updates. To register for a full, un-crippled, copy of Vertex, send $30 or $50, in US currency only, (don't send cash! write a check or get a money order), plus a self addressed stamped envelope (SASE) with at least 50 cents postage, to: Alexander D. Deburie 4189 Nickolas Sterling Heights, MI 48310 USA Please include your name, your phone number (+area code), and a note with your impressions of this version of Vertex (especially if you discover a bug!) *********************************************************** DISCLAIMER OF WARRANTY THIS SOFTWARE AND MANUAL FILE ARE OFFERED "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OR MERCHANTABILITY. ANY STATMENTS MADE ABOUT THE USES OF THIS SOFTWARE DO NOT CONSTITUTE WARRANTIES AND SHALL NOT BE RELIED ON BY THE BUYER IN DECIDING TO PURCHASE THIS PROGRAM. THIS PROGRAM IS SOLD WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES WHATSOEVER. BECAUSE OF THE DIVERSITY OF CONDITIONS AND HARDWARE UNDER WHICH THIS PROGRAM MAY BE USED, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. THE USER IS ADVISED TO TEST THE PROGRAM THOROUGHLY BEFORE RELYING ON IT. THE USER MUST ASSUME THE ENTIRE RISK OF USING THE PROGRAM. ANY LIABILITY OF SELLER/MANUFACTURER WILL BE LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF PURCHASE PRICE. ************************************************************ The file formats supported by the registered version of this software are included to expand the usefulness of the IFF - Interchange File Format, and to aid the 3D designer by making these IFF files easier to manipulate. ************************************************************ Finally, I'd like to extend special thanks to the following people: Sam Marrocco Arnold Osgan Keith Schoenrock Without thier help/input, Vertex would probably not be what it is today.