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