                       ForeSpace OS/2 ver 0.21b




This version is still quite beta, though not to the same degree as the
last. I have managed to make a few nice scenes with it.

This is identical to version 0.20b, with the addition of a toolbar and
with the lines from objects behind the camera being clipped.



Basic Instructions:
------------------

Most menu commands are fairly self-explanatory:

File menu:

    Your standard open/save/export kind of stuff, and the settings
dialog. Use this dialog to specify include directories and files for 
the scene, and directory locations for file output, povray.exe and 
your image viewer. 
    When additional files are included, the textures/pigments/finishes
from these files are read in immediately for use in the scene. If files
are removed from this list however, the textures etc. from the files
will remain in memory until the program is quit. So you will still be
able to assign them to objects, but they will be found to be missing
the next time you start the program.


Edit menu:

    Selecting objects:
        Quite a handy function is the ability to select and work on 
multiple objects simultaneously. This presents a hierarchical list of 
visible objects from which you can select as many as you like.

    Deleting and copying objects:
        All currently selected objects will be deleted or copied. If 
deleting CSG objects, you will be prompted to decide whether to delete
the object's children. If you opt to delete the children, any further 
descendents will be deleted too (ie: the children's children etc).
When copying a CSG object, the children are automatically copied.

    Changing object's values:
        Changes made in this dialog apply to all the selected objects.
If the selected objects have differing values in any respect, the 
value shown in the dialog box is a "*". If the values are the same for
all the selected objects, the actual values will be shown.

        By default, the values represent the actual values of the
object's transformations and changes to these will set the
corresponding transformation value on all the objects. Alternatively, 
by selecting the "values indicate change in variable" radio button, 
the fields will all be reset to 0.0 and the values you enter will be
added to the object's current values. This is useful if you have 
selected a range of object's with differing tranformations, and wish 
to move them all a certain amount in a certain direction, while not 
changing their locations with respect to each other (or similar with 
their scaling or rotation values).

        Likewise, the texture and layer fields will apply to all
selected objects.

    Extended edit:
        This only applies to CSG, torus, height_field and spotlight
objects currently. If multiple objects are selected, the extended edit
dialog will come up once for each object, changes in the dialog will
not apply to all selected objects.

    Camera location and look at:
        Pretty obvious. When you select these you can use the object
settings dialog to set the location, or just drag it around the 
screen.

    Visible layers:
        Allows you to select which of the 32 layers are currently 
visible. If you are making a scene with lots of objects this is very 
useful for speeding up the redrawing while you are working on it.


Primitives menu:
 
    Selecting from this menu will create the selected primitive with
default values.

    The only one worth mentioning is the CSG, which presents you with 
a dialog to specify the CSG's particulars. The list of objects is 
initially all the currently selected objects, and the operation is 
union. The selected object in the list is the primary object for the 
operation.

    If you click "Edit list", you will get a dialog containing a
list of all eligable objects (ie: those that don't already belong to 
another CSG). You can select as many of these as you wish to be in the
CSG.


Texture editor:

Note: you really need to be operating in 16bit or better colour depth 
for the colours to be displayed accurately.

    Currently, the texture editor does not allow any operation on
included textures, you may only edit your own textures.

    When you create a texture, you are able to assign pre-defined or 
included pigments, normals and finishes. The values in these
pre-defined elements are then overridden by the values you specify. 
Only values you change will be used to override the pre-defined 
element's values. eg: Glass_Finish has its ior set to 1.5 or so, if 
you select Glass_Finish, you will note that the refraction value stays
at 1.00. This will not override the value in Glass_Finish unless you 
change it from this default.

    You do not have to specify any pre-defined elements if you do not
wish to, the texture will be composed solely of the actual values you
give.

    When creating a pigment, you should select the type first, then
edit the colours. The way the colours are displayed depends on the
pigment type. When editing the colours, you are restricted to the
appropriate number of colours (ie solid = 1; checker = 2; hexagon = 
3; gradient = 2 -> 20). The positions of the colours can be changed by
clicking on the colour bar while editing. This also changes the value
for colour gradients. Play around with this and you will see what I
mean.

As with the textures, the included texture elements are not editable
in themselves. (This is because I have not gotten around to writing a
good parser for the povray files).

    There is not currently any facility to generate texture maps or 
layered textures.


Tools menu:
 
    The align and spread functions are not operable, though most 
alignment needs can be met through the use of multiple selection and 
changing selected object values.

    The object count function just counts the number of objects of 
each type. Really only for my use.

    Describe object motion and generate frames are not yet operable.
These will, of course, facilitate animation once I have implemented 
them.

    Trace frame:
        Allows you to trace the image. Pretty straight-forward, just 
kicks POV-Ray off in a separate session with the settings you specify 
in the dialog box. 

    When this option is selected, the scene is exported to a POV file
first. The pov file name will be the name you specified when you last
exported it, or if you have not exported it it will be generated from
the name of the 4SP file you're working on. If that doesn't have a
name either, you will be prompted for a pov file name.

    Currently, there is no communication between the POV-Ray session
and ForeSpace, so it doesn't know when the trace have finished. You'll
have to keep an eye on the current task list (or just wait for the 
system performance to pick up again) to know when it has finished.

    Incidentally, I find that setting PRIORITY=ABSOLUTE in the 
config.sys prevents POV-Ray from sucking too much processor time from 
your other apps, thus providing a more responsive system while you are
tracing in the background. Of course the trace proceeds more slowly, 
but not by much.

    Image viewer:
        Just kicks off the image viewer you have specified in the 
file/settings dialog, passing the name of the POV-Ray output file. 
This does not check to see if the trace has finished first.



General:
-------
    Mouse operations:

        Left-button dragging translates all currently selected 
        objects.

        Right-button dragging moves the viewplane. (Excluding the 
        camera view, whose viewplane is set by the camera
        location/look_at)

        Right & left-button dragging zooms the view in/out with
        left/right movement.


    Multiple object operations caution:

        When operating on CSGs be careful you don't have the CSG's
        children selected as well, otherwise any operations you do 
        will be applied to the parent and to the children. ie: The
        parent will move, and the children will move _inside_ the
        parent, so the child has moved twice as far.

        Also, get into the habit of using the "Deselect all" button. 
        It is easy to acidentally leave some objects selected while 
        you work on others.


Known Bugs:

Every now and then, one of the views seems to turn inside out and 
become inverted. I have zero (0.00E-99) idea why this occurs. Clicking
the mouse on the view to make a redraw occur will fix it up.

Still not clipping the lines behind the camera, so when there is an 
object behind the camera, it causes lines everywhere on the camera 
view. I will fix this I promise.

A texture that has no values of any kind will still be exported, and
POV-Ray will complain about it. Just stick some pigment type in it and
it's fine.

That's it! (yeah right)




ForeSpace OS/2 was written in Borland C++ 2.0 using ObjectWindows.
Mainly for the purpose of allowing an easy port to Windows NT, but as 
it turns out, ObjectWindows is not all it's cracked up to be.
I'm considering converting to VisualAge C++. Any recommendations 
anyone?


Still a long way to go with this I know. Just thought I'd release a 
version that was less shonky than the last.

Coming features:

 - Function to import objects and textures from other 4SP scene files.
 - Material maps / layered textures
 - Some more bugs
 - General shape generation
 - Animation (last)
 - Statistics / maths pop quiz function to make up for all the time
   Sean spent doing this instead of being at Uni. :)
 - Anything (almost) that anyone suggests I put in


Please tell me about any bugs you find.

Sean

damien@mpx.com.au
s3042813@titanic.mpce.mq.edu.au

