MS V3.1 Release Notes

  o Larger polygonal models
    The previous limit of approximately 32,000 vertices per
    polygonal object has been removed. The number of vertices
    in a single object is now essentially unlimited (over 2 billion).

  o Improved SGI device driver
    The SGI device driver is faster and more robust. It also supports
    GL windows on Personal Irises and IBM RS/6000s. Gouraud (smooth)
    shading is now supported in the "hardware" rendering mode.
    Options for the SGI driver now include the following:
	"kill" or "nokill"
	   - specifies whether the window should be removed (kill)
	     or remain visible (nokill) when the device is closed.
	"wire"or "shade" or "smooth"
	   -  select hardware rendering option: wireframe,
	      shaded (scan converted), or shaded with Gouraud
	      shading of objects which have the property "gouraud"
	      or "phong" set.
       "doublebuffer" or "nodoublebuffer"
	   - enable or disable the use of double buffering for the
	     display of images
       "size=XxY" or "rubberband"
	   - set the window to be the fixed size (in pixels) specified
	     by X and Y or to be rubberband by the user to any desired
	     size when the window is first opened. The default option
	     is "size=512x512".

  o Ability to read compressed geometry and image files
    Both ms_restore (geometry files) and ms_rdimg (image files) can
    now read compressed (.z or .Z) data files.

  o Ability to read and write geometry files from standard i/o
    The ms_restore and ms_dump routines will now read or write to
    standard input and output, i.e. stdin and stdout. This feature is
    selected by passing the file name argument as "-".

  o Ability to close image files without reading or writing an image
    A file containing imultiple images and left open from a previous
    call to ms_rdimg or ms_wrimg with the option "noclose" can now be
    closed without performing an additional read or write on the file.
    This is accomplished by specifying the image device, not the file
    name, as NULL and specifying the option "close". For example,
	ms_rdimg("myvfb", "myfile", "noclose");
	 ...
	ms_rdimg(NULL, "myfile", "close");

  o New Geometry file magic number
    Geometry files have a new "magic number" in their header which
    allows them to be distinquished from other types of files, in
    particular BUCGL image files. The restore routine (ms_restore)
    will continue to read old style files but will print a warning.
    In a future release only files in the new format will be
    allowed. Under the current release old style files can be trivially
    converted to the new format by restoring (ms_restore) the file and
    then redumping (ms_dump) the geometry.

  o PostScript device driver
    MS can now generate PostScript output using the new device
    PS. This driver is quite rudimentary and is designed ONLY to
    supports line mode drawings. BUCGL image files can be converted
    to PostScript files using the utility "ps2img".

  o HSV color specification
    Hue, Saturation and Value (HSV) color specification can
    now be converted to MS color values using the new routine
    ms_hsv(h, s, v), where h,s,v are floats between 0.0-1.0
    and the return value is of type COLOR.

  o Better overall illumination control
    Better control of the overall illumination of shaded or
    raytraced rendering is now available via the CAMERA data
    value "exposure". By adjusting the exposure value the overall
    scene rendering can be made lighter or darker. Prior to this
    release, underexposed renderings often resulted when many light
    sources where used since the total illumination is renormalized,
    and therefore limited, to 1.0.

  o Object "picking" supported
    Objects may now be "picked" from a rendered image using the
    ms_pick routine. This routine takes an image (device) space
    coordinate and the CAMERA from which the image  was rendered and
    returns both the name of the object and the 3D surface coordinate
    which is visible at that pixel location.

  o Correction to antialiasing routine name
    The MS antialiasing routine is now called ms_antial. In the
    previous release the MS code did not matches the printed
    documentation.

  o New object class, PATCH, to support bicubic surface patches
    MS has a new object type, PATCH, which consists of a two-dimensional
    grid of control points and optional vertex colors, and associated
    interpolation information.  The user can choose from three predefined
    bicubic interpolation methods or he can specify his own 4-by-4
    interpolation matrix. Patches are rendered by tesselating the patch
    into polygons according to a user-specified resolution.

  o Cubic interpolation for CURVE objects
    Interpolation information can now be attached to the existing
    object class, CURVE, in which case the curve is rendered by
    interpolating a user-specified number of short line segments.

  o New device subsystem routines for "menu" or "button" devices
    Button/function key/menu devices are now supported in the device
    independent subsystem (DV). This routines allow the user to read
    and set the state of button device. There are three reading routines:
    dv_rbut, dv_rbutm, and dv_rbuts, and one setting routine dv_sbut.
    (See XBUTTON)

  o New X widget devices for valuators and buttons: XDIALn and XBUTTONn
    Two new device types, XDIAL and XBUTTON, support valuators and
    buttons on X Window displays. Each device type supports multiple
    widgets, e.g. XBUTTON0, XBUTTON1, XDIAL3, etc, and each widget
    has a user specifiable number of buttons or valuators. The
    valuator device type, XDIAL, is implemented as a "slider", and the
    button box is implement as a "radio button" menu. The valuators
    are manipulated using the routines dv_rval and dv_sval. The button
    box is manipulated using the new routines dv_sbut, dv_rbut, dv_rbuts,
    and dv_rbutm.

  o All arguments are now required for ms_copdev and ms_aopdev
    All arguments must now be passed to ms_copdev and ms_aopdev.
    These arguments are as follows:
	 ms_copdev(from, to, rastop, value) and
	 ms_aopdev(to, color, rastop, value).
    In prior implementations the arguments "rastop" and "value"
    were optional. The equivalent behavior is may now be achieved
    by passing NULL for "rastop" and any floating point number
    for "value".

  o Better line drawing in virtual frame buffers
    The line drawing algorithm for virtual frame buffers now produces
    smoother lines.

  o Polygons with face normals shade correctly
    A bug which caused polygonal objects defined with surface normal
    vectors (ms_normals) to be shaded incorrectly under some conditions
    has been fixed.

  o Inquire routines for LIGHTS and CAMERAS
    The defined data for LIGHTS and CAMERAS may now be queried using
    ms_inquire. Previously only CAMERA data could be queried.

  o Pixel sized particles
    Setting the "size" property of PARTICLE objects to 0.0 will now
    cause each particle to be render as a single pixel on the display
    device.

  o Solid texture mapping
    An new facilty for defining 3D color maps is now supplied. This
    feature is currently only supported for POLYGON class objects.
    Solid color maps are defined using the new routine ms_defsmap
    and attached to an object using the routine ms_setsmap. Like
    2D color maps, 3D color maps are simply object properties
    ("smap", "smaparg0" and "smaparg1") and thus are inheritable.