AC3D Version history:

1.01 - optimized rendering for the 3d window - much faster than previous versions. added light switch on 3d window ('l'). Optimised VRML output so files are smaller and run faster in Webspace (uses IndexedTriangleStripSet instead of IndexedFaceSet for polys with 3 or 4 vertices). Fixed selection/negate selection. Fixed a bug with drawing cubes in Front-view. You can now 'spin" the 3d object view. Fixed a bug with display of closed-lines. changed Dive output so that objects and groups have local coordinates rather than global. Changed Dive and VRML output so that there is no longer one toplevel object.

1.04 fixed bug (crashed) when switching between some draw-modes. Fixed a bug in the sphere creation routine (didn't like odd number of sides). Added Mesh (10x10 grid of triangles) object - need to add UI to alter num squares and cols though... Added Disk object. Fixed problem with shift selections - you used to be able to reselect selected objects. Added splinize button - use only on a single line object - not fully working.

1.05 got the spline surface working properly.

1.06 fixed bug is GL code which caused a crash sometimes.

1.07 added revolve around axis (to make those lovely taurus and bottle shapes). Lots of non-visible changes and optimisations. Ported versions to Sun and Mac (although no shading in 3d window). Changed the handling of the mousebuttons in 3d window. Sun version uses X - perhaps I'll try Mesa GL in the future...?

1.081 added texturing to SGI version. Sun version generates and loads and saves texture coors but no texturing is available.

1.1 Gouraud shading added (SGI only). Fixed fatal bug - crashed when negate-selected used in object-select mode. double buffered X version. Fixed some palette problems. Fixed error on loading files (only showed up under Linux/gcc). Added Massive VR file output. Fixed rgb in data files (was using bgr...) fixed vertex normals so they are in unit range. Added resize handles. Added bounding box display in 3D window. Fixed normals on primitive objects. Fixed GL window to redraw on expose. added double and half buttons. Some palette editing functions added. Recalc normals after rotation and moving of vertices. a few more bug fixes...

1.21 added a drawing grid. Added settings window. Save settings from first menu - saves windows sizes and positions as well as other settings. .ac3dprefs is created in the current dir (allows you to have diff preferences for diff models). Added "snap selected vertices to snap-grid". added snap objects to grid (select one vertex in each object).

1.23 Fixed Massive output - there is no need to ungroup everything now. added snap vertices to grid. added snap vertices together. added key shortcuts in orth windows 'V'-vertex selectmode, 'O'-object select mode, 'T'-tree selectmode. Loaded objects are now selected.

1.25 changed VRML generation IndexedTriangleStripSet to IndexedFaceSet for compatibility with VRML browsers ( IndexedTriangleStripSet is not in the VRML spec but many browsers read it) added Separator{} around the whole VRML output. Loaded objects are now selected properly (all subobjects weren't...).

1.26 added simple DXF geometry loading - please note that this is not fully tested - I have no way of producing DXF files and have only tested the loader with a few pulled from the net. It may not load the latest DXF files. Let me know if you have trouble loading DXFs. If you have a spec for the latest DXF then please send it to me. Added triangle loading (each line in file has 9 floats, 3 per vertex) and a hex number signifying the rgb colour.

1.34 - fixed revolve so that end surfaces are linked properly. now rubber-bands when drawing polys/lines. Fixed XOR problem on Suns . Chucked out Motif. added scrollable palette. Mesa renderer for Sun version. Cleans up groups on delete properly now. Full material editing. A few optimisations and internal changes. Fixed nasty bug in the AC3D-file loading. Corrected some bugs in the Massive file generation. Optimised texturing on SGI version - much faster now. Better texture handling and mapping functions on SGI version. Added object fragmentation (split objects into single surfaces) and merging of objects. Solved problems with Linux version. Adjustable handle sizes in preferences.

1.40 - numbered palette buttons. texture coors are now per vertex-reference rather than vertex. This means that the texture mapping is now better on 3D objects like cube and sphere. objects now again rotate about the mouse pointer rather than the centre of the object. space now centres windows AND resets zoom. fragment now creates toplevel objects - each one a sepatate surface fixed the file dialog. added "save settings" button to settings window. reorganized the palette-edit window . "save settings" now saves position of contol panel window. replaced cone with cylinder. snap vertices together now moves all selected points to the points centre of gravity. Fixed crash when trying to load non rgb files for textures.

1.41 - discovered a bug in cylinder object when porting to sun - contained surfaces with no vertices.

1.42 - fixed snap vertices together. Disk objects had an extra vertex - removed it.

1.43 - fixed some dive bits. If no transparency is set then no transparency is generated. Dive output wasn't using texture repeats for texture coors - fixed.

1.45 - switchable Texture and normal support in VRML output. RenderMan output. +-10% scale buttons. Switchable 3D axis display in 3D window (on sgi version). Fixed some memory leaks. Fixed garbage collector problem - was freeing objects too many times. surface->subdivide now splits quads into 4 and triangles into 3. Added 'make hole' function for making holes in surfaces - adjustable hole size from settings window. Spheres and grids can now be made from triangles or quads. Default sphere is now quads (change setting on settings window) GL-renderer now renders lines in one single colour (no shading).

1.47 - fixed problem with lines being drawn on the wrong colour. Lots of memory and speed optimisations. Some work on Undo - but don't rely on it too much, it still needs a lot of work.

1.48 - fixed 'snap object vertex pairs'. Selection is now preserved when changing selectmode. 'Insert Vertex' added. Fixed fatal bug in the create poly/line object function. Fixed memory leak in surface subdivide. Fixed memory leak in sphere. Fixed simple trianulate - was leaving original surface behind. xor'ed line are now dashed - makes rotates easier to see. Made ui sensitivity better. Added POVray output. Triangulate now does convex polys and recurses properly. Window zoom now zooms about centre of window properly (was wrong on Plan and Front views).

1.49 - some quick bug fixes: some numbers in the saved AC3D files were wrong - this is because I shortened some of the integers to shorts and some to bytes. It meant that object type numbers and numvert where wrong. Also fixed bug in Disk and Circle objects where some numbers of subdivisions could cause incomplete revolutions.

1.5 there was a bug in the last version - cloning objects (using duplicate) did not copy the number of vertices. This means that the .ac file saved will have the number of vertices set to zero. Fixed problem with translations in RenderMan files. Renderman output now outputs the surface normal for each vertex of a flat shaded surface. 'Optimize surfaces' now removes polygons with only 2 vertices as well as surfaces with only 1 vertex.

1.55 - fixed the problem with no keyboard focus under Fvwm - Fvwm is strict in adhering to some X guidelines (no other window managers were) It just involved changing a window-manager hint. Added grid object. Fixed bug in copying object-data(dive data) when duplicating objects. Object centres are now mirrored with mirrored objects. Added object visibility (at last you are able to edit complex scenes). Added 'goto' centre view/s about selection. Added 'fit view/s' - fit selection into view/s. Added Lightwave object importing. change the preferences system so that preference file is stored in home dir and is pure text (editable). Some UI changes. Stopped crash when >1 mouse-button pressed and dragged. Added walkabout 3D mode on OpenGL/GL versions. Fixed bug in 'ungroup' - caused crash on some machines (was freeing same addr twice). Some changes to DXF import code - now loads separate objects. added switchable grid in 3d window.

1.55a Fixed problem in Solaris version - removed bcopy

1.56 - fixed 'Insert vertex' so that it works on lines (was joining start and end, and failed if line had 2 vertices). Added 'cut-away object' - makes a new object from selected surfaces. Changed Renderman output to ignore polygons with one or 2 vertices. Added 'Display' line to renderman output.

1.58 - fixed X server crash on some SGIs (prob with XFillRect outside window) Fixed expose problem - was not refreshing when window moved up/down. New rectangles are positioned correctly using the 3D cursor now. Degrees of revolution now ajustable via settings. File format overhalled - much more compact. Fixed bug in Optimize-surfaces - surface count was incorrect if some surfaces were removed. Fixed crash where first click of drawn poly/polyline/line was with mouse button 2 or 3. Removed UNKNOWN_SHAPE_TYPE lines from ShapeHints in VRML output (was causing VRWeb to crash). Degenerate triangles are now ignored when generating POVray. Length of line now displayed when drawing edges. if 2 vertices are selected then distance between them is shown. POV output - polys are now automatically triangulated. triangulation of concave polys working now. Light can be postioned in prefs file. Iconized windows not drawn into. 'Render' menu item added - command configured from settings. Optimize vertices now removed duplicate surface references. Surface-type menus items moved to buttons on control panel. 1.58a - fixed crash which happened after deleting an object and moving the mouse into the object-name textfield. 1.58b - removed the 'import vrml' menu item - sorry, no code was attached, it was just for testing.

Beta version - search pattern in file dialog is now matched case insensitive. fixed fatal bug caused by deleting stuff after loading an old format file and changing the select mode from tree or object to vertex - delete was trying to delete the same vertices more than once. added triangle saving. added simple lights. Added balloon help. Added size-to dialog. VRML output overhalled. Added simple text from text. font objects defined in AC3D file. X cursor can be changed in prefs file. optional wireframe moving for 3D window. Added 'Select by name'. Switchable headlight. Fixed revolve problem where a vertex lying on the axis caused invalid surfaces to be created. added FOV control for 3D window. SGI version - right control key now works for tilt in 3D window. RIB files - polygons with > 4 points are automatically triangulated on output. Added simple Bevel function.

1.66: overhalled the internal command system - may be useful for macros later. Window titles can be changed in prefs file. VRML2.0 output added. output "ReverseOrientation" before polygons on rib file - Renderman wants polgons in clockwise order, AC3D was generating anti-clockwise. Undo button now displays what it will undo when pressed. Normals now calculated after importing DXF file. added Move-to. position is shown if size selected is zero. SPline function moved to Surface menu (from Object) - individual surfaces can now be splined. output of header in rib files is now switchable via settings. Negate select now works with shift-button3 as well as shift Button2 - easier for users with two button mice. coors now shown when drawing line/poly before first point. fixed crash when other draw mode is selected whilst drawing line/poly. Fixed lightwave loader on linux - it was wrongendian. added font path name edit to prefs. Fixed crash in Optimize functions.

1.7: Reversed surfaces in Cylinder when drawn in XY window (was inside-out). Made no spinning in 3D window the default. SGI version is now CPU-friendly. Added missing internal command "set_no_texture". Many changes to make code portable to Windows/NT. Renamed default window names (now Front, Side, Top rather than (Side, Front, Top). Added Undo to some more operations. Preferences file saved in user profile (under WindowsNT). Fixed bug in Optimize Surfaces where extra vertices where being wrongly deleted.

1.79 (minor release to registered Linux users): added pov file header option. object data can now be used to add pov commands to objects (switchable in settings). Added centering of 3D view about selection and cursor. Fixed 'fit' function, sometimes it was incorectly fitting to the size of window (when two dimesions of the bounding box where the same). Added 'fit all'. fixed dragging of zero width bounding boxes (i.e. one vertex) to display small cross at vertex position (was previously no feedback). Stopped resize handles working in extrude mode. Mouse pointer now changes over handles. VRML shininess is now correctly output as a float between 0.0 and 1.0. Fixed fatal bug in object->merge. Simple VRML loading added. 3D studio file loading added. added unselect-by name. Added background images for orth windows. Added undo for insert-vertex and snap functions. 1.79 minor release to registered Linux users

1.84 Chucked out glut - UI is now all TCL/TK. All windows are now sub-windows of a main window. Big reorganisation of user interface. added recalc-normals switch - makes manipulating large models much faster. Added 'surfaces->change vertex order'. Added rotate-about-object-centre switch. Fixed bug to stop wonky background images. Next: fixed bug in surface->spline - vertex count in object was wrong. Faster texture mapping. Model info now in a window rather than printing to the console. Fixed background images problems - texture mapping can now be used instead of PutImage (faster on some machines). added a rubber line for move and extrude. Fixed bug in rib files - window size was wrong. object data can now be used in RIB files with switch in settings. Fixed problem where doing an undo on adding an object then selcting the object name window would cause crash. Fixed bug with Duplicate from menu - window ID was screwy. Fit-all now knows if only one view is the current window setting. Dialogs are now children of mainwindow - so they iconize when it does. Killing the file dialog does cancel instead of OK. killing the main window calls quit function instead of just exiting.

1.85 fixed fault in the way keysyms where decoded - was not portable. Fixed the correct menu to update with 'save filename.ac'

1.87 - texture repeats are now output in VRML2 files. Texture repeats are now editable floats rather than integers. changed default for output of VRML normals - the default setting is now FALSE. turned transparency back on (had commented out some code when testing some texture stuff!). Pictures used for background images on windows can no longer be directly used as textures.

1.87b - fixed SGI version so it runs with OpenGL 1.0 and 1.1. Fixed bug in static tcl initialisation on SGI version.

1.87c - more SGI probs sorry. I think I used the wrong version of 'strip'.

1.94 - 3DS objects are now fitted to the views after import. object selection/deselection now possible in 3D window (with CTRL down). frames are now resizeable. Fixed bug is VRML2 texture repeats - texture repeat line was not output if one of the values was 1. Selection of objects is now possible in orth windows by clicking on or near a line. Removed grab from move-to and size-to windows. added a comment where a texture would be in a POV file. Fixed bug in loading background images - uninitialized variable would sometimes cause the op to fail. fixed file dialog on Unix versions - you can no longer press OK when there is not file selected. added some mouse controls to 3d window for walk mode. Spinning (in spin mode) fixed. Fit-all now works correctly if nothing is selected. Some rearranging of file and edit menus. Fixed prob with Edit object data and undo - was not refreshing after the undo. 3D window is now redrawn after texture-coors are mapped on surfaces. The material-edit window is now parented by the main window. Lights can now be hidden. solid is now false in vrml2. Lights are now output in VRML2. Crease angle is now 0.5 in VRML2. VRML2 texture names now have file:// before them. Exception handling added to windows version. Load/save paths are no longer reset in windows version, separate paths tracked for files/textures. Plugins interface works on all platforms. Plugins for texture files and model file import/export.

1.94a - fixed problem with menu bar not showing on unix versions.

1.95 - fixed problem with texture loaders not working and alt key not working in walk-mode under unix versions (windows version was OK)

1.95a - recompiled the linux version under Slackware 3.1. Previous 1.95 didn't run on some linux boxes (that was compiled under Slackware 3.3)

2.0 - added key_rotate_degs_3d to prefs (so you can adjust the degrees of spin for key control in 3d window). Fixed problem importing some 3D studio files. normals are now only calculated on objects loaded in - rather than the whole world. added Alias .tri file importer. Fixed problem when an objects centre was at the origin and the object was in a group - the location wasn't saved. Control-D now calls Duplicate like it should have. A texture loaded with the same name now replace the previos one (rather than being ignored). added object->explode. added cut/copy/paste. added toggle for selected vertices display. Moved edit-object-data to tools menu. 2D and 3D convex hulls can now be made from a selection of vertices (Surface->Create surface/object). Reworked the way plugins are loaded - should stop the previous bug where tcl crashed because one tcl_command was run inside another. added some more plugins. added some toolbar buttons. Gif texture loader now incorporated into main program and working on all platforms. stopped dialog when socket was disconnected. Fixed VRML2 Anchor output.

2.0a - version compiled slightly differently for Linux only - to fix some library problems.

2.5 beta 7 (Windows version released to registered users only) - Fixed bug where you could group in vertex mode using the hierarchy window. Fixed bug in extrude code where multiple extrudes were badly spaced. Fixed bug in create-object/surfaces where AC3D would crash if >1 vertex was in the same position and the selected vertices were in a plane. Fixed bug where holding left and right mouse buttons down caused 3d view to always go to wireframe and stay there. Fixed a fatal bug in fragment. Some work with texture names (to not save the full path if the texture is in the same dir as the .ac file). Fixed bug in tokenizing function inside loading AC3D files (to count linefeeds same as returns). Transparent gifs now handled OK (appeared corrupt previously). Improved VRML1 loading (now handles rotations/translations and highlevel sphere, cubes and cylinders). Much improved 3DS loading - loader now loads bindings into separate objects, allowing texture-mapping to work. Fixed VRML2 output where shininess is now a float 0.0->1.0 rather than the previously incorrect 0-128. Walkmode using the mouse to navigate now 'flies'. Added VRML2 proto output where objects are put in individual prototypes that can be used from an external file. Direct X export plugin by Shawn Hakl. OBJ import plugin. OFF import plugin. Fixed bug where pressing 'g' when mouse was outside window caused crash later (invalid window id passed to 'goto_selected'). Middle mouse button now drags 2d views and (with control pressed) zooms them (can be turned back to original functionity by setting middle_button_drags_view FALSE). middle mouse button moves 3d view around (in spin mode). Position and orientation is now saved when switching between walk/spin mode. 'w' key is now a toggle for wireframe/filled (in 3d view). f is now used to take 3d view to the selection. added tools->replicator. Added edit->rotate. fixed undo for resize where one or more of the dimensions was resized to zero and wouldn't revert with the undo.

Version 3.0 - corrected fault in VRML1 parser where the first node in a seperator was ignored. First field in move-to/size-to/rotate/scale dialog is not set to main focus when displayed. Paste now moves the new stuff one snap-grid unit (so it's not over the original geometry). Fixed translation/rotation/scale problem in VRML1 loader. Settings are now automatically saved when exiting the program. Load/save and texture dirs are remembered. Fixed problem with texture offsets getting corrupted. Expressions can now be entered in the move-to/size-to/rotate dialogs. Control-S now correctly saves the model with the last saved file name (like it said it would on the menus). Modified VRML2 proto output so that multiple shapes are put in a group.

Version 3.0a - Linux only - Mesa 3.2 contained bugs in the tesselation code - this caused AC3D to sometimes crash when tesselating polygons. This version is simply the same code compoiled with Mesa 3.2.1.