home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_GEN
/
LIB3D30A.ZIP
/
3DLIB.DOC
< prev
next >
Wrap
Text File
|
1994-03-10
|
29KB
|
596 lines
╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ HyperAct, Inc. ║
║ P.O.Box. 5517 ║
║ Coralville IA 52241 U.S.A ║
║ Compuserve - 76350,333 ║
║ Phone/Fax - (319) 351-8413 ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝
*******************************************************************************
* 3dLIB *
* 3dLIB - 3D Graphic objects library for Turbo Pascal Programmers. V3.0 *
* Last Update : Feb. 20, 1994. *
*******************************************************************************
*******************************************************************************
* FILE - LIST *
*******************************************************************************
The distribution package contains the following files, in the following
archives :
Archive A :
-----------
* .TPU - Pascal Units, DOS Real Mode :
CTM3D .TPU - Current Transformation Matrix definition.
PROJECT3.TPU - Projection (3D -> 2D) unit.
HDR3D .TPU - Header to 3D structures.
RTOBJ .TPU - 3D Wire-Mesh objects.
* .TPW - Pascal Units, Windows :
CTM3D .TPW - Current Transformation Matrix definition.
PROJECT3.TPW - Projection (3D -> 2D) unit.
HDR3D .TPW - Header to 3D structures.
RTOBJ .TPW - 3D Wire-Mesh objects.
* .INT - Pascal Units interfaces :
CTM3D .INT - Current Transformation Matrix definition.
PROJECT3.INT - Projection (3D -> 2D) unit.
HDR3D .INT - Header to 3D structures.
RTOBJ .INT - 3D Wire-Mesh objects.
* .PAS - Pascal Sources, Demo Programs :
DEMO3D .PAS - A demo program - DOS.
DEMO3DW .PAS - A demo program - Windows.
* .3D2 - Demo OBJ3D Type object files (Pascal/Real):
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).
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 - Spiral 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 - HyperAct, Inc. shareware products description.
3DLIB .REG - 3dLIB registration file.
3DLIB .UPG - 3dLIB upgrade file for registered users.
3DLIB .RES - 3dLIB resource file for windows programs.
EGAVGA .BGI - BGI driver for EGA/VGA. (Pascal Compatible).
3DLIB .TPH - A BP IDE/THELP 3dLIB on-line help.
Archive B :
-----------
* .H - C++ Headers, DOS Real Mode (BC++/4):
CTM3D .H - Current Transformation Matrix definition.
PROJECT3.H - Projection (3D -> 2D) unit.
HDR3D .H - Header to 3D structures.
RTOBJ .H - 3D Wire-Mesh objects.
* .OBJ - C++ Object files, DOS Real Mode model medium (BC++/4):
CTM3D .OBJ - Current Transformation Matrix definition.
PROJECT3.OBJ - Projection (3D -> 2D) unit.
HDR3D .OBJ - Header to 3D structures.
RTOBJ .OBJ - 3D Wire-Mesh objects.
* .CPP - C++ Sources, Demo Programs :
DEMO3D .CPP - A demo program - DOS.
* .MAK - C++ Make files for the demo programs :
DEMO3D .MAK - A demo program - DOS/Make file.
* .3D3 - Demo OBJ3D Type object files (C++/Double):
3 .3D3 - A 3 dimensional "3" character.
BOX .3D3 - A 3D box.
D .3D3 - A 3 dimensional "d" character.
PROP .3D3 - A 3D Propeller.
PYR .3D3 - A Pyramid.
SUPROP .3D3 - Another 3D Propeller.
TRAP .3D3 - A 3D Trapeze.
TWOLAYER.3D3 - Demo 3DO defined object.
3DCW .EXE - Windows Hosted MDI M3D to PAS generator, and animator.
R2D .EXE - Convert Real (Pascal) Objects to Double (C/C++) objects.
3DCW .HLP - 3dCW on-line windows help file.
*******************************************************************************
* 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 library, 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!
A Special Registration Bonus include the 3D Mania Screen Saver Module Source!
With your registered version you will also receive a Registration Bonus
Certificate for one issue (or an additional issue if already a subscriber) of
the "JCSM Shareware Collection"tm CD-ROM at a cost of only $9.95 ! (plus S&H).
Offer valid through June 30, 1994. Only one certificate can be redeemed per
issue.
To order your registered copy of 3dLIB please do one of the following:
1. Order from HyperAct Inc.:
You can order directly from HyperAct Inc. Please refer to the
supplied 3DLIB.REG file. Edit it, print it and mail it
(with a check) to:
HyperAct Inc.,
P.O.Box 5517
Coralville Iowa 52241, U.S.A
If you are outside the US and Canada, please note the following:
- the S&H fee
- wire-transfer payments can be arranged. Please contact
HyperAct, Inc.
2. Order from PsL:
You can order from Public (software) Library with your MC, Visa, AmEx
or Discover card by calling 800-242-4PsL (from overseas: 713-524-6394)
or by FAX to 713-524-6398 or by Compuserve to 71355,470.
These numbers are for ordering only. HyperAct, Inc. can NOT be reached at
those numbers. Please contact HyperAct, Inc. directly for any other
type of problem (technical or other), information or request.
Registered users Upgrade note:
------------------------------
If you registered 3dLIB version 2.5, you can receive this version free (you
pay only S&H fee). If you have an older version, you can get this version for
only $20 (plus S&H fees). Please refer to the supplied 3DLIB.UPG file. Edit it,
print it and mail it (with a check) to HyperAct, Inc.
*******************************************************************************
* What's New *
*******************************************************************************
Version 3.0 -
Animate Windows icon in 3dCW is displayed properly when the animate window is
minimized.
Macro Parser now supports @functions, the following functions were added :
@sin, @cos, @sqr, @cotan, @ln, @log10, @log2, @abs, @arctan, @arccos, @exp,
@e, @tan, @pi, @random. (Interpreter + Compiler).
The Macro Parser interpreter has better error detection, and fixes variable
assignment bug.
The 3da program restores the text screen upon exit, from this version.
Added conditional statement to the 3d macro language. With this statement the
equivalent of a "If Then Else" statement is added to the macro language.
Add C++ library for BC++/BGI. The same core of the 3d library is now available
to C++ programmers!
Added the R2D.EXE program, to convert *.3D2 and *.3DS 3d objects to the
C++ equivalent objects. (*.3D3 and *.3DS).
Added *.3D3 object generation to the 3DO object compiler. (/OC+ switch).
Added C++ Macro Translation to the 3DC macro compiler.
Added Genereate|C++/DOS menu entry in the 3dCW program.
Added Help|Search menu entry in the 3dCW program.
====
Version 2.5 -
Added the color selection command (#c where c = color number) to the 3Dmacro
language.
Fixed a bug in the animate parser (3da and 3dcw) that did not recognize
variables in the start of an expression.
Fixed a bug in the macro compiler parser, assignments are handled properly.
The 'z' macro command is now handled in the same way in the animate and compile
modes - It sets the object's 3d center of gravity to 0,0,0
(goto3DPos(0,0,0)).
Improved on-line and text documentation.
Fixed a bug in 3dCW - animate command on New files (untitled) will not cause
a GPF.
====
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 the 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 compatibility 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 ..).
Because of this change the 3d library can support large and small objects at
the same time with no practical overhead.
Added the 3DLIB.TPH on-line file, use this file from within the BP IDE or THELP
for 3dLIB on-line help.
====
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 extremely 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 useful 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 language).
The SimpleObject statement of the 3DD language (3dO object compiler..) now has
a new optional parameter - NOGEN.
====
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 separated 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).
====
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 -
Added the 3dA program, an animator for .M3D macro programs, in the DOS
Environment.
Added 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 HyperAct Inc. 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 referred 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 HyperAct Inc.,
P.O.Box. 5517
Coralville
IA 52241,
U.S.A.
3dLIB is (c) copyrighted by HyperAct, Inc., 1991,94.
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 HyperAct Inc. are described in the supplied
PROGRAMS.TXT file.
*******************************************************************************
* Contact *
*******************************************************************************
Please contact :
HyperAct, Inc.
P.O.Box 5517
Coralville IA 52241
U.S.A
E-Mail : Compuserve - 76350,333
Phone : (319) 351-8413
To contact the author directly please write to :
E-Mail : Compuserve - 100274,162
*******************************************************************************
* Credits *
*******************************************************************************
3dLib was written by Ron Loewy.
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) v11.0 by Loewy Ron.
The Author's picture (in the 3dCW program) was taken by Allison Bially.