=====================
File: AmachiPack.zip
Author: Alain Gautherot <gauthero@club-internet.fr>
Release: 0.6
Compatibility: >= R4
Location: contrib/graphics/viewers
Description: an add-ons based 3d objects viewer using OpenGL
=====================


Important!!!
*************************************************************

Amachi is now released **Open Source**.
Please, read the legal notice in "COPYING".


Forewords
*************************************************************

I just don't have enough time to pursue the development of Amachi.
So I hope someone can do it for me, especially a x86 compile.
This should be as easy as typing "make".
I've planned to buy a PC for quite a long time now for more power,
and... 3D hardware acceleration.
I have several more or less important projects in mind. I'll let you
guys know when it's ready.

Enjoy Amachi!




Ouatitiz?
*************************************************************

Amachi is an OpenGL-based 3d objects viewer. It uses 2 libraries:
- libLAP: help write lexical and syntaxic analyzers
  (see below for a short description)
- libPierrot: a bunch of useful 3d functions and data structures
  (see below for a short description)

Each format has its own add-on (see below for a short description).
Supported formats are:

3D2: CAD 3d2
3DS: 3d studio
OBJ: wavefront
DXF: AutoCAD
NFF: Neutral File Format
NFF-WTK: NFF World ToolKit
AOFF: Object File Format (DEC)
COB: Caligari TrueSpace
IOB: Imagine
LWOB: Lightwave
PLY: PoLYgonal data


Special thanks:
*************************************************************

Thanks to:

- Peder Blekken, author of VRMLview, for his helpful information.
- Be, for providing the BeOS.
- Every Amachi user


Building & Installing:
*************************************************************

Double-click the "AmachiPack.zip" archive and "Expand" it.
type "make".
The libraries will be copied to "/boot/home/config/lib",
the add-ons will be copied where Amachi expect them.
Once compiled, the directory should be around 3.8 Mb.

To check for add-ons, launch Amachi and have a glinch at the
Setup window, panel "add-ons". If nothing is displayed in the
list, no add-ons could be found. It can be that add-ons didn't
compile, or that the format is wrong (binary compatibility),
or that the API doesn't match that expected).



Use:
*************************************************************

drag and drop 3d files files in a window.
Use the numeric pad to move the object:
4 & 6: left/right
2 & 8: up/down
1 & 3: tilt left/right
7 & 9: zoom in/out
ESCAPE: reset view
TAB: toggle fullscreen mode


Known bugs:
*************************************************************

- OpenGL is so slooooooooooow on my dual 66... 80)

- fullscreen in 24 bits color mode uses uncorrect colors
(a bug in the BeOS)

- crashes sometimes when deleting scenes


libLAP:
*************************************************************
LAP is a library to Lex And Parse files. Is supports both
binary and text-based files, platform issues (endianness),
and has been used to write the current 3d parsers.
It defines classes such as:
- buffers input and output (binary or text-based)
  buffers can be dynamically allocated. They can be used as an
  Ersatz to cin/cout/cerr. The output can be duped to a file, to
  the screen and/or to a BHandler (through a BMessage).
  The allocation policy can be set at construction time (grow on
  overflow, error on overflow, ...)
- lexers (binary or text-based) along with a lexeme buffer
  For instance, ReadInt8, 16, 32, 64, ReadString are provided for
  binary lexers
- parsers (binary or text-based)

It is required to sub-class your parser from the LAPparser class.


libPierrot:
*************************************************************
This library defines a basic set of data structures, not including
texture-related information.
Some facilities are provided, such as geometric transforms
(vectors, matrices, ...)
Some spin volumes are also supported (cylinders, cones, spheres,
torus, rings), along with prisms. They can be instanciated at a
by defining a position and direction, and spin accuracy.
(see GenerateSpinDesc, GetPosition and Build* static functions)

A 3d object parser is also defined. It is derived from the LAP
parser (binary or text parser).

These classes are not complete and miss some information such as
mapping-related stuff.


Add-ons API:
*************************************************************
Here are the required symbols:
char	handlerName[]		ex: "CAD-3D v2.0 (.3d2)"
char	handlerVersion[]	ex: "1.1.0"
char	handlerAuthor[]		ex: "Alain GAUTHEROT"
char	handlerEmail[]		ex: "gauthero@club-internet.fr"

LAPparser*	instantiate_parser(int32 block_size, LAPtracer* trace_output)

This function just create a LAPparser instance. The lexer will
use a block_size bytes long buffer (with a minimum of 1 kb).
It is recommended to use 4, 8 or even 16 kb.

Amachi uses:
- LAPparser::SetInput: to set the input, which calls LAPparser::Identify
- LAPparser::Parse: to do the actual parsing
- LAPparser::Terminate: to terminate the processing (close input...)

Look at AmachiApp::RefsReceived, AmachiApp::FindHandlerFor and
AmachiApp::AddonCanHandleFile.


History:
*************************************************************
- April 9th 1999: Amachi is released Open Source. Enjoy

- December 26th 1998: nothing new as compared to the Masters
release, but now Amachi-0.6 is available for R4 BeWare.

- November 1st 1998, v0.6b: 4th release
submission for the Be Master awards

- September 27th 1998, v0.4: third release
*Joailleu ZaaaaaaaNiiiiiiiiiVerrrrrrrSaiiiiiiiiiiiiiiiiiR!
	I'm officially older today.
* minor bug fixes
* new add-ons for AOFF, NFF, NFFWTK, IOB, LWOB, & COB

- August 10th 1998, v0.3: second release
added transparency support

- July 27th 1998, v0.2: first release
