Background
-----------------------
	One of the most common problems in amatuer 3Dfx programming is a decent
	way to get models from spiffy 3D modelling programs to our damn programs.
	Originally, I had thought that the holy grail to this problem was to be 
	found in ".ASC" files -- 3D Studio ASCII files, which almost any program
	could save in.  This worked fairly well for a while, but then I realized
	the key problem: .ASC files did not include texture coordinates.  However,
	with the release of 3D Studio R2, there came a format that WOULD offer
	all of the information needed, without trying to read complex .3DS files.  
	In the File | Export option of 3DS R2, you can export your scene as an
	".ASE" file: ASCII Scene Export.  This ASE format is essentially the 3DS
	format, but in ASCII code, and thus parsable.  

	ReadASE.cpp and ReadASE.h are very basic routines built for the purpose
	of parsing .ASE files.  Currently, they are in a very primitive state,
	and have some limitations, listed below.  However, this should offer
	at least a starting point to other programmers out there who want
	to tackle this problem of getting 3D models out of rendering programs
	and into OUR hands.

Converted Data ** UPDATED **
----------------------------
	The current revision will read and export the following data:
		
		* Vertex Coordinates
		* Texture Coordinates (for each FACE VERTEX)
		* Normals of each Edge

   See SMF.TXT for documentation of the SMF format

Functionality
------------------------
	The enclosed example will take two command line arguments.  The first
	is the filename of an .ASE file, and the second is the output filename.
	The output file type I am using is a proprietary one called "Simple
	Model Format" (.SMF).   If you look at the .SMF file (which is simply
	an ASCII file) you will immediately see how to read it into your own 
	programs.

	For a basic example, use the sample file "box.ase" that I have included.
	Just go to the directory in DOS, and type:

	readase box.ase test.smf

	And test.smf will be the new Simple Model Format file. 

Current Limitations
------------------------
	* Single GEOMOBJECT reading
		There must only be one object in the entire scene, and it must be
		a top-level object (that is, not part of a group).  The ASCII parser
		scans through top-level nodes until it encounters a "*GEOMOBJECT" node. 
		So, if the GEOMOBJECT node is buried in a group, it will not find it.

Bugs 
------------------------
	* No Memory Allocation Checking
		Well, this isn't specifically a bug, but it is lack of error checking,
		which could lead to a bug.  My advice, if you do use this program, is 
		that you should use it to convert to your own file types and then
		include routines in your program to load that file type.

Fixed Bugs ** UPDATED **
-------------------------
	* Previously, when outputting faces F1 was written twice instead of 
	  writing F3  (Thanks to Matthias Block for finding this one)

  * Texture Coordinates are now implemented per face instead of per
    vertex (Thanks to Lem Zazul for spotting this).  3D Studio and
    most other 3D file formats store the texture information per
    face vertex instead of per vertex, because many times a vertex
    can have two different S/T coordinates depending on what 
    face it is being used as a part of.  To render these, you must
    set the SOW and TOW of the given vertex when you are rendering 
    each FACE at runtime.

  * Normals are now included.  You can choose whether or not to read
    them in and use them, but hey, use 'em if you want.


Redistribution/Modification/Etc
--------------------------------

	This code is released PUBLIC DOMAIN.  My reasoning for this is simple:

		A) These are simple routines, and anyone could write them.  I'm just
		   here to (hopefully) save you some time.

		B) Because I **WANT** them to be modified.  What would be best is if
		   people were to look at this simple example and build extended
		   sets of it -- say, reading VRML 2.0 ".WRL" files, which almost 
		   any 3D rendering program supports, and then additionally
		   released THOSE files into the public domain.  Given minimal
		   effort on the part of a few programmers, eventually the whole
		   problem of which programs to use, texture coordinates, etc, will
		   be a non-issue.

	So, in a nutshell, you can:

		* Modify this program
		* Redistribute the program
		* Print the program out and burn it
		* Take the program's name in vain
		* Spit on the program (although your monitor may get dirty)
		* Rewrite this program
		* etc.

	And if you DO do anything constructive with this program, be it adding
	new support, fixing it, or just general feedback/comments about it...
	SEND IT TO ME.  Just because I'm interested (:

The Author / Contact Information
----------------------------------
 - Dan Dunham:
	Basically, I'm just an average amateur 3Dfx programming.  I'm a sophomore
	at Iowa State University in Ames, Iowa, and can be reached at: 

		crow@tconl.com

	And hey, if you're Quake2 fans and ever see a "Crow" online, it might
	just be me (:

The Future
----------------------------------
	Any future revisions/additions to this program by me (Dan Dunham) will
	most likely be sent to the developer section of Operation 3Dfx -- by
	far, my favorite 3Dfx related site.  Read it daily (:  And support
	the developer section, damnit.  If you write anything ... tutorials,
	utilities like this one, etc, submit to the developer section.  You're
	helping EVERYONE out when you do.  

Special Thanks To
----------------------------------
  Matthias Block (finding bugs)
  Lem Zazul      (finding bugs)
  Operation 3dfx
  Sarah Karaff

Legal 
----------------------------------
	Everything in this package that is mentioned that is NOT a 
	trademark/copyright of Daniel Dunham, is a trademark/copyright
	of it's respective trademark/copyright holder.  The author takes no
	responsability or liability for this program in any way.
