===================== File: AmachiPack.zip Author: Alain Gautherot 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