home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / graphic / raygcc10 / raysmith.doc < prev    next >
Text File  |  1994-10-25  |  17KB  |  372 lines

  1.  
  2.                                RAYSMITH v 1.0
  3.  
  4.                                 August, 1994
  5.                          -by Eduardo Bustillo Iceta-
  6.  
  7.   1.INTRODUCTION
  8.  
  9.     RAYSMITH is a radiosity and ray tracing program that allows the user to
  10.   create impressive 3-D images. It was created as an end of university
  11.   project for my six year degree in mechanical engineering.
  12.  
  13.     The program will be released as freeware and its continuity and
  14.   support will depend on public acceptance.
  15.  
  16.     RAYSMITH's main characteristics are:
  17.  
  18.      -Geometry input: The geometry file is read from an Autodesk
  19.     3D-Studio v2 .3DS file. This provides a very good geometry creation
  20.     interface, as well as DXF importing facility (in 3DS, not in RAYSMITH).
  21.  
  22.      -Radiosity calculations: Implemented using Monte Carlo integration.
  23.     This permits to have colour bleeding between surfaces, penumbras,
  24.     refracted shadows, specular and diffuse reflections, blurry
  25.     reflections, translucency and refractions, texture mapping and any
  26.     geometry of light sources. The 'disadvantage' is that you won't get
  27.     sharp shadows as in a pure ray-tracing program.
  28.  
  29.      -Adaptive subdivision: Objects with big radiosity gradients inside
  30.     are dynamically subdivided during the radiosity process.
  31.  
  32.      -Ray tracing: A postprocess of ray tracing is used to get the view
  33.     independent information obtained and create the image file. Among
  34.     the main characteristics of the algorithm used are:
  35.  
  36.         -Depth of field: The camera is not a pinhole model, and it has a
  37.         user selectable lens radius.
  38.         -Stochastic anti-aliasing: This eliminates aliasing in a great
  39.         deal.
  40.         -Stereo view: As an option you can obtain an image that can be
  41.         watched with red-green stereo glasses for a more impressive 3-D
  42.         effect.
  43.  
  44.      -Acceleration techniques: Three different techniques are incorporated
  45.     into RAYSMITH. This makes it one of the fastest programs I have
  46.     tried (POV 2.2, RAYSHADE, RTRACE...).
  47.  
  48.      -Graphic formats: RAYSMITH works in 16.7M colours and only the
  49.     uncompressed 24 bit TARGA file format is supported. If you want to use
  50.     files with other file format for textures, you should get ALCHEMY
  51.     or any other good format exchange program.
  52.  
  53.      -Limitations: There are no resolution, number of objects or any
  54.     other kind of limitations in the program. No arrays have been used
  55.     in its programming so every piece of memory is dynamically
  56.     allocated. With the usage of a 386 and a DOS extender compiled
  57.     version any scene can be rendered.
  58.  
  59.      -Minimum system required: IBM-PC compatible with a 386 & 387 or
  60.     better CPU and 2Mb of RAM. It is recommended to have at least 8Mb of
  61.     RAM if you're planning to do serious work. It works anyway but disk
  62.     accessing becomes irritating.
  63.  
  64.      -Completely written in ANSI C: It doesn't help in speed but it may be
  65.     compiled for almost any other platform (DEC OSF/1 and HP-UX versions
  66.     have been compiled with no modifications).
  67.  
  68.  
  69.   2. AVAILABLE VERSIONS
  70.  
  71.     At present there are two versions available:
  72.  
  73.     -GNU gcc 2.6.0 compiled version: It uses DJ Delorie's GO32 DOS extender
  74.    which provides up to 256Mb of virtual memory. It works under DPMI, but
  75.    it's faster when DPMI is disabled.
  76.  
  77.     -WATCOM C v9.5 compiled version: It provides only 32Mb of virtual
  78.    workspace and its much bigger as it needs to include the DOS4GW
  79.    extender. It is slightly faster in the radiosity process but has
  80.    slower parsing and similar ray-tracing benchmarks. The only
  81.    difference is that it outputs memory statistics as the program is
  82.    executing. This lets you know the amount of memory required for
  83.    rendering a file.
  84.  
  85.  
  86.    3. COMMAND LINE OPTIONS AND REQUIRED FILES
  87.  
  88.      These are the included files in the compressed package:
  89.  
  90.         RAYSMITH.EXE  -Executable-
  91.         RAYSMITH.DOC  -This file-
  92.         RAYTRACY.EXE  -Distributed raytracer with diffuse effects-
  93.         RAYTRACY.DOC  -Documentation for RAYTRACY-
  94.         TEXTURES.RAY  -Material translating file-
  95.         DOS4GW.EXE    -Only in the WATCOM version-
  96.         GO32.EXE      -Only in the GNU gcc version-
  97.         MLI2RAY.EXE   -3DS material library to TEXTURES.RAY translator-
  98.  
  99.      Command line options:     RAYSMITH.EXE filename.OPT
  100.  
  101.      You don't have to create long command line scripts to activate
  102.    RAYSMITH's options. Once you have your geometry file, you must
  103.    create a .OPT text file where you include the options that will
  104.    be used for rendering.
  105.  
  106.      .OPT format: The .OPT file is an ASCII file in which there is an
  107.    option in each line.
  108.  
  109.       INFILE=filename.3DS
  110.           Here you put your geometry file name.
  111.       OUTFILE=filename.TGA
  112.           Output file name. If omitted, the default name given to the
  113.           file would be the input file name with its extension changed
  114.           to TGA.
  115.       HRESOLUTION=640  (default)
  116.           Horizontal resolution of the image file. There are no limits
  117.           (only your available time).
  118.       VRESOLUTION=480  (default)
  119.           Vertical resolution.
  120.       MIN_BOUND=0   (default)
  121.           This affects acceleration. Possible options are:
  122.           0: No minimum bounding volume of global scene is computed.
  123.           1: Minimum bounding volume is computed and consequently a
  124.           coordinate system change is performed.
  125.            Explanation:
  126.           When objects in the scene are axis aligned, the minimum
  127.           bounding box has its planes perpendicular to the coordinate
  128.           system axis, but when objects are in arbitrary positions a
  129.           coordinate system change must be performed to permit an axis
  130.           aligned box be the minimum possible bounding box.
  131.            So, when you have an scene aligned, put 0 (it will be faster),
  132.           but if the objects are not aligned, use 1.
  133.       TURBO=0 (default)
  134.           If 1, computation is much faster. RAYSMITH will try to create
  135.           a Z-Buffer structure to accelerate calculations. If there's
  136.           enough memory in your system, ray-tracing may be 3 times faster
  137.           than usual.
  138.       VOXEL_RESOLUTION=6  (default)
  139.            There are two acceleration schemes selectable by the user:
  140.  
  141.            -Adaptive Voxel subdivision: Subdivides the space in a tree of
  142.           voxels adaptively depending on the number of objects inside.
  143.           It is faster if used wisely, but consumes more memory. A good
  144.           parameter selection could be:
  145.                    VOXEL_RESOLUTION=6 (or 8)
  146.                    VOXEL_DEPTH_MAX=2
  147.            -BOP (Binary Object Partitioning): Creates a tree of planes
  148.           subdividing the space so that equal number of objects are in
  149.           each side.
  150.  
  151.            This variable "VOXEL_RESOLUTION" affects the number of
  152.           voxels that are in each step of the subdivision. If you put
  153.           10, you will get 10*10*10=1000 boxes each time a subdivision
  154.           is performed.
  155.       VOXEL_DEPTH_MAX=2   (default)
  156.            Maximum depth of the voxel tree.
  157.       VOXEL_OBJECTS_MIN=16  (default)
  158.            If VOXEL_OBJECTS_MIN number of objects is reached in a voxel,
  159.           subdivision is stopped, even if the maximum depth hasn't been
  160.           used.
  161.  
  162.        -Note: If any of the above options concerning voxels is
  163.        indicated, voxel subdivision will be used as the accelerating
  164.        technique. If only BOP options are specified, a BOP subdivision
  165.        scheme is used. If none of the options is selected, the default
  166.        is voxel subdivision.-
  167.  
  168.       BOP_OBJECTS_MIN=12  (default)
  169.            Minimum number of objects in each leaf of the tree that stops
  170.           subdivision.
  171.       BOP_DEPTH_MAX=100  (default)
  172.            Maximum depth of the tree. If you use a big one (200), the
  173.           program will never reach it as subdivision stops when it isn't
  174.           efficient.
  175.       MAX_NUMBER_RAYS=8000  (default)
  176.            This is the initial number of rays that will be shot from
  177.           the lights in the scene. 8000-20000 should be enough to assure
  178.           a good solution (depending on the number of triangles in the scene).
  179.           For quick previews 2000-4000 is enough.
  180.            When adaptive subdivision is activated you should increase this
  181.           value.
  182.       MAX_DEPTH=5   (default)
  183.            Maximum depth of rays shot (if their energy is still enough).
  184.            For scenes with diffuse and specular reflecting objects 2-3
  185.           is enough. When using transparent materials it should be
  186.           increased to 4-5.
  187.       INSIGNIFICANCE_THRESHOLD=0.01  (default)
  188.            Ratio between the ray's energy and its initial energy to stop
  189.           propagation.
  190.       BRIGHTNESS=80.0   (default)
  191.            Used to brighten up scenes that are too dark to watch. It is
  192.           recommended to use a low resolution to calculate the scene
  193.           fast until the right level of brightness is found.
  194.       ADAPTIVE=0   (default)
  195.            If 0, adaptive subdivision is off. If 1, it is on.
  196.       SUBDIVIDING_AREA=0.1   (default)
  197.            When (triangle_area)/(average_area) is higher than
  198.           SUBDIVIDING_AREA, subdivision may be performed if necessary.
  199.       DEPTH_OF_FIELD=0    (default)
  200.            If 0, depth of field is off (pinhole camera). If 1, it is on.
  201.       LENS_RADIUS=0.  (default)
  202.            Option read only if depth of field is on.
  203.       ANTI_ALIASING=0   (default)
  204.            Number of rays per pixel. Possible values:
  205.  
  206.           0->One ray per corner of pixel. Pixel colour averaged. Fast
  207.           and gives good result in scenes without blur or depth of
  208.           field.
  209.           >0->n rays per pixel following a pseudo-Poisson distribution.
  210.           When using blurry materials or depth of field you should use a
  211.           high value to achieve good quality.
  212.       STEREO_VIEW=0    (default)
  213.            If 0, a normal image is generated. If 1, 3-D red-green stereo
  214.           glasses must be used to watch it.
  215.       EYE_SEPARATION=6   (default)
  216.            Affects the Stereo view option.
  217.  
  218.     Example of .OPT file:
  219.        INFILE=test.3ds
  220.        HRESOLUTION=640
  221.        VRESOLUTION=480
  222.        TURBO=1
  223.        VOXEL_RESOLUTION=6
  224.        VOXEL_DEPTH_MAX=2
  225.        VOXEL_OBJECTS_MIN=12
  226.        MAX_NUMBER_RAYS=8000
  227.        MAX_DEPTH=3
  228.        INSIGNIFICANCE_THRESHOLD=0.005
  229.        BRIGHTNESS=90.0
  230.        ADAPTIVE=1
  231.        SUBDIVIDING_AREA=0.01
  232.        DEPTH_OF_FIELD=1
  233.        LENS_RADIUS=6.0
  234.        ANTI_ALIASING=16
  235.  
  236.   4. TEXTURES.RAY
  237.  
  238.     This file must be present at runtime for the program to work
  239.    correctly. It is an ASCII text file with the translation table of the
  240.    materials used in 3DStudio. Materials in RAYSMITH have additional
  241.    properties, and this file contains them.
  242.  
  243.  
  244.   NAME      TYPE    REFLECT     SR   DR   IOR  BLUR   TRANSM     ER   EG   EB
  245. "MIRROR"    0       1 1 1       1     0    0    0    0  0  0     0    0    0
  246.    |         |         |         |    |    |    |       |             |
  247.    name of the material in 3DStudio between ""  |       |             |
  248.              |         |         |    |    |    |       |             |
  249.              0 means pure colour, while 1 means texture mapped material
  250.                        |         |    |    |    |       |             |
  251.                        reflectance of the material in the Red Green Blue
  252.                        bands (max. 1 1 1) (min 0 0 0)   |             |
  253.                                  |    |    |    |       |             |
  254.                                  Specular reflection index (0->1)     |
  255.                                       |    |    |       |             |
  256.                                       Diffuse reflection index (SR+DR |
  257.                                       should be 1)      |             |
  258.                                            |    |       |             |
  259.                                            Index of refraction (only  |
  260.                                            useful if transmittance >0)|
  261.                                                 |       |             |
  262.      Blur: Value between 0->1. 0 means perfectly specular reflection of
  263.      specularly reflected rays. 1 means diffuse reflection of specularly
  264.      reflected rays. It affects specular reflection and transmition making
  265.      them less sharp. Good values for metals are between 0.0005->0.0001.
  266.      Higher values give unrealistic results. When this value is not 0,
  267.      anti-aliasing should be 15 to 40 to give the best results.
  268.                                                         |             |
  269.            Transmittance: Part of the incident energy that is left to |
  270.            pass in each frontier. Again in the R G B bands.           |
  271.                                                                       |
  272.                  R G B Energy emitted by the material. This is the way to
  273.                  define lights in RAYSMITH. Create objects with this material,
  274.                  and they will be lights of any geometry.
  275.  
  276.       There is a TEXTURES.RAY example file included in the package so that
  277.     you can experiment with it and create your owns.
  278.  
  279.       Another late hour facility has been included in the package: MLI2RAY.EXE
  280.     This program lets you convert automatically 3DStudio material
  281.     libraries (extension .MLI) to TEXTURES.RAY files so that you are
  282.     able to use any already created material.
  283.  
  284.       Usage: MLI2RAY.EXE material_file without extension.
  285.  
  286.       It will create a file called material_file.RAY that you will have
  287.     to rename as TEXTURES.RAY and retouch by hand.
  288.  
  289.  
  290.   5. CREATING GEOMETRY FILES
  291.  
  292.      As it was said before, geometry files have Autodesk's 3DStudio .3DS
  293.    format. So if you want to create any scene you must have access to
  294.    it. The only incompatibility with this format has to do with lights.
  295.    Lights in 3DStudio are point lights, and as RAYSMITH is a radiosity
  296.    program, it cannot use these lights. To create lights for RAYSMITH
  297.    you have to assign a luminous texture to the object you want to have
  298.    as a light.
  299.  
  300.      RAYSMITH is a radiosity program so it is difficult to obtain sharp
  301.    shadows. One reason for this is that lights are not point lights, but
  302.    the most important one is the polygons size. Using small polygons in
  303.    shadow boundaries will give the best results, but this is difficult
  304.    to do when creating a scene the first time. It was because of this
  305.    that I added a sort of rudimentary adaptive subdivision scheme. Even
  306.    in scenes with great radiosity gradients and relatively low polygon
  307.    resolution it gives acceptable results if wisely used and combined
  308.    with a manual pre-subdivision. Well, it's up to you to send me
  309.    suggestions and own experiences to improve it.
  310.  
  311.  
  312.  
  313.    6. CONTACTING THE AUTHOR
  314.  
  315.      I would appreciate any scenes, high-quality renderings,
  316.    TEXTURES.RAY files, suggestions or comments that anyone interested
  317.    may send me. Any bugs will be welcome.
  318.  
  319.      My address is:
  320.  
  321.              Eduardo Bustillo Iceta
  322.              Part. de Basterra 1
  323.              48990 GETXO (VIZCAYA)
  324.              SPAIN
  325.  
  326.      You can also reach me at the following Internet address: (Please
  327.    only send me messages here):
  328.  
  329.                         epabuice@s835cc.bi.ehu.es
  330.  
  331.  
  332.      Letters in spanish, english or french will be answered.
  333.  
  334.      Have fun!
  335.  
  336.  
  337.   7. LEGAL INFORMATION
  338.  
  339.  
  340.      DISCLAIMER
  341.  
  342.      This software is provided as is without any guarantees or warranty.
  343.    Although the author has attempted to find and correct any bugs in
  344.    the package, he is not responsible for any damage or losses of any
  345.    kind caused by the use or misuse of the package. The author is
  346.    under no obligation to provide service, corrections, or upgrades
  347.    to this package.
  348.  
  349.      Permission is granted to the user to use RAYSMITH to render images.
  350.    The use of this software for the purpose of creating images is free.
  351.    The creator of an image retains all rights to the image created and may
  352.    use it for any purpose.
  353.  
  354.      This software package and all of the files in this archive are
  355.    copyrighted and can not be distributed or modified without the written
  356.    permission of the author Eduardo Bustillo Iceta.
  357.  
  358.      No portion of this package may be separated from the package and
  359.    distributed separately without the written permission of the author.
  360.  
  361.      This software may not be included in whole or in part in any
  362.    software without the written permission of the author.
  363.  
  364.      This software may not be included in any publication, such as, but
  365.    not limited to, magazines, books, newspapers, or newsletters, without
  366.    the written permission of the author.
  367.  
  368.      This software may not be included in any software compilation using
  369.    media such as, but not limited to, CD-ROM, tape backup, optical disks,
  370.    hard disks, or memory cards, without the written permission of the
  371.    author.
  372.