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. V1.1 *
- * Last Update : Mar. 19, 1992. *
- *******************************************************************************
-
- FILE - LIST
- -----------
-
- The distribution file 3DLIB11 contains the following files :
-
- * .PAS - Pascal sources :
- CTM .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.
- * .TPU - Complied Units.
- * .3D2 - Demo OBJ3D Type object files :
- 3 .3D2 - A 3 dimentional "3" character.
- BOX .3D2 - A 3D box.
- D .3D2 - A 3 dimentional "d" character.
- PROP .3D2 - A 3D Propelor.
- PYR .3D2 - A Pyramide.
- SUPROP .3D2 - Another 3D Propelor.
- TRAP .3D2 - A 3D Trapez.
- * .3DS - Demo ComplexObj type object files.
- 3DLIB .DOC - This file.
- 3DC .EXE - M3D to PAS source file translator.
- 3DC .DOC - 3dC translator documentation.
- * .M3D - Sample macro programs.
- DEMO3D.EXE - Demo 3d animation program.
- PROGRAMS.TXT - ISoft D&M shareware products description.
- 3DLIB .REG - 3dLIB registration file.
-
-
- Why Register
- ------------
-
- 3dLIB is a shareware product, if you find this product valuable,
- please register it. This section describes the reasones you should register.
-
- By registering you will receive a printed manual, with many examples, a
- diskette with the latest 3dLIB version, and the complete source code for 3dLIB
- based training and example programs, and - you will help us to create the next
- version of 3dLIB - that will include even more features then the features that
- are currently available!, we might even add YOUR enhancment requests!
-
- 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.
-
- A package called 3D111 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 recomended that any programmer
- tring to use this library will use the 3D program to create
- objects, and understand the animation abilities of the library.
-
- 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 represantation.
-
- 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 strore 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 an array of maxPoints points (change
- this constant in the HDR3D.PAS file to create bigger, or smaller objects)
- in the 3D universe, an array of maxLines lines (a line is a segment in the
- 3D universe that connects 2 3D points), another array holds the 2D screen
- points of the object, calculated from its 3D represantation, and the CTM.
- Another interesting aspect of this object is the use of 2 more matrixes,
- 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 there center of gravity (frame - reference).
-
- *******************************************************************************
- * 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
- refered 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 refering 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 respectivly, 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 recieves 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.
-
- 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.
-
- Warranty
- --------
-
- There is no warranty what so ever, The program is supplied as is,
- The distributer (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, 92.
-
- 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
-
- Credits
- -------
-
- 3dLIB was written using Turbo-Pascal V6.0, a copyright of
- Borland International.
-