------------------------------------------------------------------------------ REND 1.0 February 7, 1994 A basic wireframe renderer for creating, visualizing and interacting with computer generated environments. written by Michael P. Schenck mps4466@ultb.isc.rit.edu ------------------------------------------------------------------------------ SUMMARY - This software package was developed to provide the tools needed to construct, visualize, and interact with a virtual environment. The environment is generated from a series of primitives called models which are linked together and controlled through a hierarchial display map to create objects. There can be multiple objects and any number of nodes (action blocks) within a single object that link the primitives together. The view into the environment is controlled through a view structure which when reconfigured is used to display the next frame of graphics. The view is a simple "camera" implimentation using spherical coordinates and parameters for far and near clipping planes. Other functions available in the library include a pause function and a getinput function. The get input function will grab a character from the keyboard in a wait or nowait mode. The current implimentation of the renderer only supports drawing a wireframe output. Clipping is done on a "whole" polygon basis which means that if any of a poly's verticies are outside the clipping limits (view volume) then the entire poly is removed. This can create annoying visual artifacts if a poly is very large and near to the viewpoint. USING AND MAKING MODELS - The models used for the demos are in the ModelLibrary drawer which has a path set to it in the main program (see demo files) The Model Utilities drawer contains two programs. One converts an ascii model into the binary version needed by the renderer and the other takes parameters and generates a "plane" (mesh) model in binary format. Just execute them with no parameters to get details. The two programs are compiled for the 020. The input specifications for modeler are the number of verticies followed by the number of polys, then a list of all verticies followed by a list of all polys. The polys indicate each vertex that makes them up followed by a zero. Don't worry about closing the poly it is done automatically. See the cube.asc and pyramid.asc files for examples of the format. (both of these create unit primitives) The binary formats have a .bin extension COMPILING AND RUNNING DEMOS - To run this software you need a math coprocessor or it will crash! This is because it is based on a floating point environment. To recompile, just modify the makefiles in the graphics subsystem and the main directory (for the demo files) and click build (you should do the graphicssubsystem first of course). All you should need to change is the CPU type. You will need a SAS/C 6.x compiler to rebuild it the way it is right now. I havn't actually tried it on anything but 6.5x and 6.3, but it should work fine. I can't confirm that it will recompile correctly though. If you are using version 6.5 of SAS/C, don't reassemble the blitter code (rasterasm.a) with the asm in that version. For some mysterious reason it doesn't work! The problems with asm were fixed in 6.51 so I would advise getting the patch. If you don't have a compiler, compiled versions of the demos are provided for the 68020/6888x, and 68040/68882 processors. Just double click on these to run! Check out the module headers for more info on how to use them. USING THE GRAPHICS LIBRARY - For more details on how to use the library of routines, see the demo programs, the header files, and the modules. Sorry the code is not more descriptive and commented, but this library is just a small hack I wrote a while ago! I am currently working on an extensive C++ VR Toolkit for the AMIGA (see the notice with this release). I will of course be modifying this code to test ideas I may use in the Toolkit. First of which is to impliment this pathetically slow renderer in fixed point integer arithmetic. If you find any bugs in this software or have questions about it, just send me email at the above address. ------------------------------------------------------------------------------- LEGAL STUFF AND DISCLAIMER ------------------------------------------------------------------------------- Copyright (C) 1993, 1994 -- by Michael P. Schenck, (mps4466@ultb.isc.rit.edu) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. For a copy of the GNU General Public License write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.