home *** CD-ROM | disk | FTP | other *** search
-
- ╔══════════════════════════════════════════════════════════════════════════╗
- ║ ║
- ║ ISoft D&M ║
- ║ POB. 5517 ║
- ║ Coralville IA 52241 ║
- ║ U.S.A ║
- ║ ║
- ╚══════════════════════════════════════════════════════════════════════════╝
-
- *******************************************************************************
- * 3dLIB *
- * 3dLIB - 3D Graphic objects library for Turbo-Pascal Programmers. V2.0 *
- * Last Update : Jun. 03, 1992. *
- *******************************************************************************
-
- *******************************************************************************
- * FILE - LIST *
- *******************************************************************************
-
- The distribution package contains the following files :
-
- * .PAS - Pascal sources :
- CTM3D .PAS - Current Transformation Matrix definition.
- PROJECT3.PAS - Projection (3D -> 2D) unit.
- HDR3D .PAS - Header to 3D structures.
- RTOBJ .PAS - 3D Wire-Mesh objects.
- DEMO3D .PAS - A demo program - Dos.
- DEMO3DW .PAS - A demo program - Windows.
- * .3D2 - Demo OBJ3D Type object files :
- 3 .3D2 - A 3 dimensional "3" character.
- BOX .3D2 - A 3D box.
- D .3D2 - A 3 dimensional "d" character.
- PROP .3D2 - A 3D Propeller.
- PYR .3D2 - A Pyramid.
- SUPROP .3D2 - Another 3D Propeller.
- TRAP .3D2 - A 3D Trapeze.
- TWOLAYER.3D2 - Demo 3DO defined object.
- * .3DS - Demo ComplexObj type object files.
- BIMBO .3DS
- HOUSE .3DS - A Very bad example of a house.
- INMID .3DS
- MASHPECH.3DS
- MYTEST .3DS
- TWOBOX .3DS - 2 Boxes Object.
- TWOEDGE .3DS
- TWOPYR .3DS - 2 Pyramids.
- * .3DD - Demo object definition files.
- TWOLAYER.3DD - Two Layers - one above the other.
- TWOPYR .3DD - The Two Pyramids Complex Object Src.
- 3DLIB .DOC - This file.
- 3DC .EXE - M3D to PAS source file translator. (DOS).
- 3DCW .EXE - Windows Hosted MDI M3D to PAS generator, and animator.
- 3DC .DOC - 3dC translator documentation.
- 3DA .EXE - 3dA Macro Animator (Interpreter) for the Dos environment.
- 3DO .EXE - 3dO object compiler - Dos.
- 3DO .DOC - 3dO object compiler documentation.
- * .M3D - Sample macro programs.
- 3DEMO .M3D - Rotating '3' and 'D' objects.
- BOX3MV .M3D - Spirale Box.
- BUG .M3D - An old macro that once helped me to
- debug some of the 3D code.
- CLC .M3D
- FOXTROT .M3D - Named after the Genesis album (Why?)
- INTEGV .M3D - A Nice macro.
- KUKU .M3D
- NEWDEMO .M3D - A Long macro.
- PYR3MV .M3D - Same as BOX3MV but with a pyramid.
- PYRMOV .M3D
- PYRTYP .M3D
- R2D2 .M3D
- SUPERBOX.M3D - A box that "moves" in space..
- TST .M3D
- TWOBOXMV.M3D - A ComplexObject animated.
- ZOOZO .M3D
- DEMO3D .EXE - Demo 3d animation program - Dos.
- DEMO3DW .EXE - Demo 3d animation program - Windows.
- PROGRAMS.TXT - ISoft D&M shareware products description.
- 3DLIB .REG - 3dLIB registration file.
- 3DLIB .RES - 3dLIB resource file for windows programs.
- 3DCW .HLP - 3dCW online windows help file.
- EGAVGA .BGI - BGI driver for EGA/VGA.
- 3DLIB .TPH - A BP IDE/THELP 3dLib online help.
- BWCC .DLL - Borland Windows Custom Controls DLL, Used by 3dCW
-
-
- *******************************************************************************
- * Why Register *
- *******************************************************************************
-
- 3dLIB is a shareware product, if you find this product valuable,
- please register it. This section describes the reasons you should register.
-
- By registering you will receive a diskette with the latest 3dLIB version,
- the 3d environment program, for WYSIWYG object creation, the complete source
- code for the 3d environment program, and - you will help us to create the next
- version of 3dLIB - that will include even more features than the features that
- are currently available!, we might even add YOUR enhancement requests!
-
- *******************************************************************************
- * What's New *
- *******************************************************************************
-
- Version 2.0 -
-
- Added the Animate button to the 3dCW program toolbar.
-
- Added the Background BMP toggle option to the 3dCW Options menu.
-
- Added the floating Tools child window to macro editor windows, just click
- on the desired tool to get a command dialog box that will be inserted into
- the source text. (And you thought it can't be easier .. ).
-
- The 3d simple object was updated to use Collections, so the number of points
- and lines is not limited to the size that was decided when the library was
- compiled. Please notice - the format of the .3d2 and .3ds files was not
- changed in order to maintain compatiablity with older objects. It should
- be noted that the objects API (Methods calling conventions) was not
- changed as well. The only difference is in the implementation of the
- 3d objects. (It does pay to play by the OOPS rules after all ..).
- Becasue of this change the 3d library can support large and small objects
- at the same time with no practical overhead.
-
- Added the 3DLIB.TPH online file, use this file from within the BP IDE or
- THELP for 3dLib online help.
-
- ====
-
- In version 1.7 the help facility of the 3dCW program can be activated from
- the menu, not just from the toolbar.
-
- From this version the extremly important feature of having the author's
- picture in the background of the 3dCW program is added. In this picture the
- author is seen in his Alfa-Romeo Spider 2000. Admit it - this is a feature
- no other 3d graphic library (how many are there?) can offer you.
-
- The Options|Text Color option in the 3dCW program now works properly.
-
- The help database was extended, and received usefull titles in this
- version.
-
- The 3dCW program was converted to work with Borland's BWCC DLL.
-
- Added Help|Using help option in the 3dCW program.
-
- The 3dO object compiler now supports the creation of complex objects, as
- well as simple objects. (Added a complexObject statement to the 3DD langauge).
-
- The SimpleObject statement of the 3DD langauge (3dO object compiler..) now has
- a new optional parameter - NOGEN.
-
- ====
-
- In version 1.6 3dCW users can set the font of the edit window.
-
- The Dos and Windows source library files are combined, and only the
- different parts are seperated by {$ifdef}s (conditional compiles).
-
- Added support for BP7, and upgraded the utilities to BP7.
-
- 3dCW was converted to be a MDI program, with the goodies of a toolbar, etc.
-
- The 'w' and 'b' are handled as they should be in the 3dCW animator from
- this version. (A bug fix).
-
- Added the 3dO object compiler program, that helps with the creation of
- 3d objects from object definition files described in the new object
- definition language. (please refer to 3DO.DOC).
-
- ====
-
- In version 1.5 the 3dC and 3dCW programs generate a getClassName function
- for the generated windows.
-
- Added Animate Command to the 3dCW program, this way macros can be prototyped
- before they are translated into source code.
-
- ====
-
- Version 1.4 adds the 3dA program - an animator for .M3D macro programs,
- in the dos Environment.
-
- Version 1.4 also adds the Windows Hosted 3dCW program - A macro translator
- that runs in the Windows environment.
-
- This version was tested with Turbo Pascal for Windows V1.5 .
-
- ====
-
- Version 1.3 adds the 3dLIB.RES resource file for use in Windows programs
- generated by the 3DC program.
-
- 3dC generated programs include a menu that allows them to be re-animated and
- closed.
-
- ====
-
- Version 1.2 adds support for Turbo Pascal for Windows programmers by including
- a second set of pascal code sources for this compiler.
-
- The supplied 3dC macro compiler has been enhanced to produce code for both
- compilers, by using a switch on the command line. Please notice - The
- same macro source files can be translated into Turbo Pascal 6.0 and
- Turbo Pascal for Windows code, with no change in the macro definition!
-
- The supplied 3dC macro compiler implemented the z, b and w commands that
- were omitted from version 1.1 because of time constraints.
-
- *******************************************************************************
- * INTRODUCTION *
- *******************************************************************************
-
- 3dLIB is a library of pascal units that allows Turbo Pascal programmers to
- write applications that display and animate 3D wire-mesh objects. The
- library is based on a project developed since 1984 on different platforms.
-
- This package supports both Turbo Pascal for DOS and Turbo Pascal for Windows.
- (Or BP 7.0 with objects for dos real/protected and windows targets).
-
- A package called 3D120 is distributed by ISoft D&M that
- includes a graphic editor, macro interpreter and pascal translator to
- create and use 3D objects. It is highly recommended that any programmer
- trying to use this library will use the 3D program to create
- objects, and understand the animation abilities of the library.
-
- The 3dCW program is a MDI IDE for 3d macro programs (.M3D files).
-
- For more help - please consult the provided on-line help database, from
- within the 3dCW program.
-
- *******************************************************************************
- * OBJECTS *
- *******************************************************************************
- The 3D objects are defined as the following TP object-structures :
-
- *******************************************************************************
- * BaseObject *
- *******************************************************************************
- baseObject - defined in the RTOBJ.PAS file, this is the "dummy"
- ancestor object class of the 3D-objects, such an object has a CTM (called
- myCTM), a color, a center of gravity 3D point (location), and other display
- attributes, in order to achieve better animation results, a scrPntUpdt
- boolean variable is used to indicate if the screen 2D points of the
- object has to be re-calculated from the 3D representation.
-
- The object uses a 4X4 "transformation matrix" to represent itself in the
- 3D universe, the move, translate, scale, allScale, rotate, goto3dPos,
- setToOrigin, calcLocation and deleteTransform methods are used to update
- that matrix (the Current Transformation Matrix).
-
- The load, save, writeMe, and readMe methods are used to store and retrieve
- a 3D object from a storage device (a disk..), and the open and close methods
- are used to construct, and destruct the object. The show, hide and paint
- methods display, or erase the object on the 2D screen. One more interesting
- method is the updateScreenPoints method, that transforms the 3D object
- representation to the 2D screen.
-
- *******************************************************************************
- * obj3D *
- *******************************************************************************
- obj3D is a descendant object of the baseObject class, this is a simple
- wire-mesh object, that is built from a Collection of 3D points
- in the 3D universe, a collection of 3d lines (a line is a segment in the
- 3D universe that connects 2 3D points), another collection holds the 2D screen
- points of the object, calculated from its 3D representation, and the CTM.
- Another interesting aspect of this object is the use of 2 more matrices,
- the reverseRot, and unReverseRot CTM objects, that are used to hold only the
- reverse, and counter reverse of the rotation transformations, these are used
- by complex objects that contain several obj3D objects, where some of them
- has to be rotated, scaled and translated around an arbitrary point in the
- 3D universe, which is not their center of gravity (frame - reference).
-
- This object is refered as simple object in some places in the provided
- documentation.
-
- *******************************************************************************
- * complexObj *
- *******************************************************************************
- The RTOBJ.PAS file contains the definition of the complexObj 3D object,
- this is an object that contains a maxSubObjects (defined in that file)
- array of simple wire-mesh obj3D objects. This object class sometimes
- referred to as the "super - object", allows the user to create complex 3D
- objects that has a common frame - reference (center of gravity), an example
- of such an object might be a Robot, that has a center of gravity, and is
- built of some sub objects that must be able to be transformed both with the
- frame - reference, and by themselves.
-
- The RTOBJ.PAS (for - RunTime object) unit file contains the definition of
- the baseObj, obj3D and the complexObj classes.
-
-
- *******************************************************************************
- * PROJECTIONS *
- *******************************************************************************
-
- The PROJECT3.PAS file contain the code that transforms objects and points
- from the 3D universe, to the 2D coordinates.
-
- Two 3D -> 2D transformations are supported, axonometric projection, and
- perspective projection. This is a short explanation of the difference
- between these 2 projections :
-
- A : axonometric projections, no perspective due to
- distance is performed, the general way
- we can look at the coordinate system is as
- follows :
-
- | z axis
- |
- / \
- x axis / \ y axis
-
- B : perspective projections : the normal eye perspective
- projection is performed, we can look at the 3d
- universe we are referring to as a cube of
- 1000 x 1000 x 1000 integer locations, with
- the x axis, and y axis parallel to the screen
- x, y axis respectively, and the z axis going into
- the screen.
-
- we will look at the coordinate system as follows :
-
- │ Y axis
- │
- Z axis x------ X axis
-
- These units contain a calcPoint procedure that receives a 3D point, and
- transforms it to a 2D screen coordinate, the setPerspective,
- resetPerspective and togglePerspective change from perspective projection
- to axonometric projection, and vice versa.
-
- *******************************************************************************
- * CTM *
- *******************************************************************************
-
- CTM3D.PAS is the file that defines the current transformation matrix that
- is used to position the 3D objects in the universe. The CTM is a 4x4 matrix
- that is multiplied (from the right) by each point of the 3D object whenever
- a new location is desired for the object.
-
- This unit defines all the transformations that can be applied and used
- by a CTM, like rotate, scale, translate etc..
-
- *******************************************************************************
- * 3D2 FORMAT *
- *******************************************************************************
-
- The obj3D object files are files of type real, that has the following
- structure :
-
- 1 Real entry : number of 3D points. (We will call in numOfPoints)
- numOfPoints entries that contain the following information :
- 1 Real Entry : X location in the 3D universe.
- 1 Real Entry : Y location in the 3D universe.
- 1 Real Entry : Z location in the 3D universe.
- 1 Real Entry : number of lines. (We will call it numOfLines)
- numOfLines entries that contain the following information :
- 1 Real Entry : 3D Point Number of "From" edge of the line.
- 1 Real Entry : 3D Point Number of "To" edge of the line.
-
- Please refer to the OBJ3D.README method that deals with reading this
- 3D file format.
-
- To Create object of this kind - Please use the 3dO object compiler provided
- with this package, or the 3D environment program available in a different
- package, or with the registered version.
-
- *******************************************************************************
- * 3DS FORMAT *
- *******************************************************************************
-
- The complexObj object files are files of real type that have the
- following structure :
-
- 1 Real Entry : Number of subobjects the complexObj contain (We will
- call it numOfChilds)
- numOfChilds entries that have the same structure as simple 3D2 files.
-
- To Create object of this kind - Please use the 3dO object compiler provided
- with this package, or the 3D environment program available in a different
- package, or with the registered version.
-
- *******************************************************************************
- * Warranty *
- *******************************************************************************
-
- There is no warranty what so ever, The package is supplied as is,
- The distributor (ISoft D&M), or the author (Loewy Ron), are not,
- and will not be responsible for any damages, lost profits,
- or inconveniences caused by the use, or inability to use this package.
- The use of the package is at your own risk.
- By using (or attempting to use) the package you agree to this.
-
- *******************************************************************************
- * General *
- *******************************************************************************
-
- 3dLIB is distributed by ISoft D&M, P.O.B. 5517 CORALVILLE IA 52241, U.S.A.
-
- 3dLIB is (c) copyrighted by Loewy Ron, 1991,93.
-
- 3dLIB is a shareware package, please register your copy.
- To register your copy of 3dLIB please refer to the supplied
- 3DLIB.REG file.
-
- Other programs distributed by ISoft D&M are described in the supplied
- PROGRAMS.TXT file.
-
- *******************************************************************************
- * Contact *
- *******************************************************************************
-
- Please contact :
-
- ISoft D&M,
- P.O.B 5517
- Coralville IA 52241,
- U.S.A
-
- To contact the author directly :
-
- Contact : Loewy Ron,
- 9 Haneveem st.
- Herzeliya, 46465
- ISRAEL.
-
- e-mail address : CompuServe - 100274,162
-
- *******************************************************************************
- * Credits *
- *******************************************************************************
-
- 3dLIB was written using Turbo Pascal 6.0 & 7.0, as well as
- Turbo Pascal for Windows 1.0, 1.5 and Borland Pascal with objects 7.0.
- These products are trademarks of Borland international.
-
- Windows 3.0 and Windows 3.1 are trademarks of Microsoft Corp.
-
- The Borland Brief v3.1 editor was used to write these programs.
-
- The windows help file, as well as the TPH file were created using the
- help development kit (hlpdk) v5.0 by Loewy Ron.
-
- The Author's picture (in the 3dCW program) was taken by Allison Bially.
-
-
-