4 Known Problems and Workarounds
- 1 -
1. Introduction
Note: These release notes describe IRIS Explorer
version 2.2, which incorporates changes from
versions 2.0 and 2.1. Version 2.2 runs on
IRIX 5.2 or higher.
The IRIS Explorer product is a system for combining
components called modules to create powerful customized
visualization applications. Modules linked this way form an
IRIS Explorer Map. Modules in a map can execute on a
collection of networked computers, with IRIS Explorer
providing the distributed application framework.
The explorer utility (Map Editor) is the primary way to
interact with modules that are cooperating as an aggregate
Explorer application. The Map Editor creates and destroys
modules, makes and breaks connections between modules, and
operates controls for the modules.
The mbuilder utility (Module Builder) builds new Explorer
modules from existing subroutines written in C, C++, or
Fortran (even without source). With the Module Builder, you
can create graphical user interfaces for modules without
reprogramming their source code.
The dscribe utility (DataScribe) helps you make modules to
convert your data files to and from Explorer's internal
formats without programming. You can also use the
DataScribe to write out data from Explorer modules to disk
without programming.
IRIS Explorer is included at no cost with each Silicon
Graphics workstation. Explorer can be ordered for existing
workstations at a nominal media charge (see the
documentation ordering information below). Explorer is also
available from DuPont Pixel for SPARC workstations, and from
Numerical Algorithms Group, Ltd., for Cray Research
computers, SPARC workstations, and several other types of
workstations.
The Explorer documentation is available as a separate
product from Silicon Graphics. It is a full-color, three-
volume set:
IRIS Explorer User's Guide
IRIS Explorer Reference Pages
IRIS Explorer Module Writer's Guide
To order the documentation (product code M4-EXPLR-2.0),
call:
1-800-800-SGI1 if you are in North America.
- 2 -
If you are outside North America, please contact your sales
representative or your service provider.
Additional information is available from PostScriptO files
included in the explorer.man subsystem, as well as from
online man pages for modules and all Explorer routines.
Note: Packaged with these release notes is a separate sheet
that contains the Software License Agreement. This
software is provided to you solely under the terms
and conditions of the Software License Agreement.
Please take a few moments to review the Agreement.
This document contains the following chapters:
1. Introduction
2. Installation Information
3. Changes and Additions
4. Known Problems and Workarounds
5. Documentation Errors
1.1 Release_Identification_Information
Following is the release identification information for IRIS
Explorer:
Software Option Product IRIS Explorer
Version 2.2
Product Code SC4-EXPLR-2.0
System Software Requirements IRIX 5.2
Related Library Requirements IRIS Inventor 1.1.2
(for non-OpenGL
systems)
IRIS Inventor 2.0
(for OpenGL systems)
1.2 Hardware_Requirements
The minimum memory requirement is 24MB; 32MB is recommended.
When visualizing very large datasets or using many modules,
you need more physical memory to efficiently perform the
calculations without virtual memory paging (swapping). A
24-bit plane (or a virtual 24-bit plane) frame buffer is
required for this product. This includes all Silicon
Graphics workstations except Personal IRIS systems with 8
- 3 -
bitplanes.
Z-buffering is required for proper rendering. Systems that
do not have z-buffering are IRIS Indigo XS, Indigo XS24, and
some models of Personal IRIS with G-level graphics.
Two-sided lighting support is desirable for properly
rendering some geometries. Graphics models that do not
support two-sided lighting include Personal IRIS systems and
systems with IRIS-4D/GTX graphics. Additionally, Indigo
Entry and XS systems do not display two-sided lighting in
Explorer.
Indigo-quality audio is required for correct operation of
certain modules in the sgi_modules subsystem. All such
modules have Audio in their names.
Video hardware is required for the correct operation of
certain modules in the sgi_modules subsystem. All such
modules have Video in their names.
Reality Engine graphics are required for correct operation
of the RealityRender module from the sgi_modules subsystem.
1.3 Online_Release_Notes
After you install the online documentation for a product
(the relnotes subsystem), you can view the release notes on
your screen.
If you have a graphics system, select ``Release Notes'' from
the Tools submenu of the Toolchest. This displays the
grelnotes(1) graphical browser for the online release notes.
Refer to the grelnotes(1) man page for information on
options to this command.
If you do not have a graphics system, you can use the
relnotes command. Refer to the relnotes(1) man page to
access online release notes.
1.4 Product_Support
Silicon Graphics, Inc., provides a comprehensive product
support maintenance program for its products.
If you are in North America and would like support for your
Silicon Graphics-supported products, contact the Technical
Assistance Center at
1-800-800-4SGI.
- 4 -
If you are outside North America, contact the Silicon
Graphics subsidiary or authorized distributor in your
country.
- 1 -
2. Installation_Information
This chapter lists supplemental information to the IRIS
Software Installation Guide. The information listed here is
product-specific; use it with the Installation Guide to
install IRIS Explorer.
2.1 IRIS_Explorer_Subsystems
The IRIS Explorer distribution includes these subsystems:
explorer.links.* IRIS Explorer local environment,
including shared libraries and X
Window System application defaults
files. This subsystem is the
minimum required on any system
running Explorer modules. All
other subsystems can be accessed by
mounting, via NFS, a remote file
system containing those subsystems
on your workstation.
explorer.sw.eoe IRIS Explorer Map Editor,
DataScribe, run-time dynamic shared
objects and associated controllers.
This is the basic execution
environment for the Map Editor and
DataScribe subsystems.
explorer.sw.modules IRIS Explorer module executables.
This release includes approximately
160 modules. See also the
subsystems explorer.sw.sgi_modules
and explorer.sw.unsupported_modules
for other modules.
explorer.sw.sgi_modules IRIS Explorer module executables
for device dependent features, such
as audio and video operations. This
release includes approximately 20
such modules.
explorer.sw.unsupported_modules IRIS Explorer module
executables contributed by users.
These modules are provided as-is
without support from Silicon
Graphics. This release includes
approximately 75 such modules.
explorer.sw.dev IRIS Explorer module development
environment, including the Module
- 2 -
Builder utility. This includes
header files and other utilities
required to create new Explorer
modules.
explorer.sw.source IRIS Explorer module source code
for approximately 170 Explorer
modules, which you can customize
and/or use for coding examples.
explorer.sw.data IRIS Explorer sample data files.
These are needed to run the
tutorials in Chapter 1 of the IRIS
Explorer User's Guide. In addition,
several other datasets are included
for your use.
explorer.sw.data_geosphere Earth images from The GeoSphere
Project and projection conversion
software. These images are three
projections approximately 512x1024
in size, of ``the cloudless earth''
images, produced by Tom Van Sant,
Inc., and are redistributed here
with permission.
explorer.man.doc The IRIS Explorer User's Guide and
the IRIS Explorer Module Writer's
Guide, in PostScript form, suitable
for online viewing or printing. The
contents of the IRIS Explorer
Reference Pages document are
contained in other explorer.man
subsystems.
explorer.man.man IRIS Explorer utility, application
programming interface (API), and
header file man pages (sections 1,
3, and 4) from the IRIS Explorer
Reference Pages document. API
routines new to IRIS Explorer 2.2
are only documented in their online
manual pages.
explorer.man.modules IRIS Explorer module man pages.
Many of these manual pages are also
in the IRIS Explorer Reference
Pages. Modules new to IRIS Explorer
2.2 are only documented in their
online manual pages.
- 3 -
explorer.man.relnotes IRIS Explorer release notes (this
document).
explorer.man.sgi_modules IRIS Explorer module man pages for
modules contained within the
explorer.sw.sgi_modules subsystem.
Many of these manual pages are also
in the IRIS Explorer Reference
Pages. Modules new to IRIS Explorer
2.2 are only documented in their
online manual pages.
explorer.man.unsupported_modules IRIS Explorer module man
pages for modules contained within
the explorer.sw.unsupported_modules
subsystem. Most of these modules
are new to Explorer 2.2 and hence
are only documented in their online
manual pages.
2.2 IRIS_Explorer_Subsystem_Disk_Space_Requirements
This section lists the subsystems (and their sizes) of the
IRIS Explorer option.
If you are installing this option for the first time, the
subsystems marked ``default'' are installed if you use the
``go'' menu item in inst. To install a different set of
subsystems, use the ``install,'' ``remove,'' ``keep,'' and
``step'' commands in inst to customize the list of
subsystems to be installed, then select the ``go'' menu
item.
Note: The listed subsystem sizes are approximate. Refer to
the IRIS Software Installation Guide for information
on finding exact sizes.
Subsystem Name Subsystem Size
(512-byte blocks)
explorer.links.dev 59
explorer.links.eoe 13
explorer.man.doc 7459
explorer.man.man 1738
explorer.man.modules 659
explorer.man.relnotes 81
explorer.man.sgi_modules 62
explorer.sw.data 7534
explorer.sw.data_geosphere 4551
explorer.sw.dev 6658
- 4 -
explorer.sw.eoe 28996
explorer.sw.modules 21648
explorer.sw.sgi_modules 8896
explorer.sw.source 17338
explorer.sw.unsupported_modules 23418
__________________
Total 129110
2.3 Installation_Method
All of the subsystems for IRIS Explorer can be installed
using IRIX installation. You do not need to use the
miniroot. Refer to the IRIS Software Installation Guide for
complete installation instructions.
2.3.1 Linking_IRIS_Explorer If you have insufficient space
under /usr for the subsystems you intend to install, you can
create an empty directory in a disk partition containing
sufficient space, and create a symbolic link to it from
/usr/explorer. To do this, use the following commands
(replacing x with the name of a partition containing
sufficient space):
mkdir /x/explorer
ln -s /x/explorer /usr/explorer
Then, run inst as usual. Do not use the -r option with
inst.
If you already have Explorer installed, you must remove it
before creating the symbolic link mentioned above. Otherwise
inst will delete your symbolic link as it installs the
software, resulting in a broken installation. You can remove
Explorer by using the command
versions remove explorer
2.3.2 NFS-Mounting_IRIS_Explorer You can NFS-mount
/usr/explorer from another system onto your own workstation.
Ask your system administrator to set this up for you. Your
system administrator may use the -r option with inst when
installing Explorer on the file server.
If you NFS-mount Explorer, you must still install the links
for X Window System application default files and Explorer
shared libraries. To do this, you can use inst (as root),
once the NFS mount is established:
inst -f /usr/explorer/lib/inst/explorer
- 5 -
You are prompted with a menu of options. Select ``go'' to
install the correct set of symbolic links onto your
workstation. To remove these links in the future, type:
versions remove explorer.links
2.4 Prerequisites
Version 2.2 of IRIS Explorer is designed to be compatible
with IRIX 5.2, and will not work on earlier versions of
IRIX.
The motif_eoe subsystem is required for Explorer to run.
Even if Explorer is installed on a graphics-less server and
used via the X Window System to open windows on a graphics-
full workstation, the motif_eoe software must be installed
on that server in order to have the shared libraries
available.
You must have a compiler to develop new Explorer modules;
therefore, you must have the IRIS Development Option (IDO)
if you want to create new modules. However, a C-like array
language interpreter that does not require IDO (the
LatFunction module) is provided with Explorer for
prototyping simpler modules.
For displaying the output of the Render, DisplayImg, and
TransformGen modules, a display is required that renders the
Graphics Library or OpenGL. These modules do not render to
a purely X Window System display.
IRIS Inventor, execution-only, is required to run modules
that produce or consume geometry datasets. Thus Inventor 2.0
subsystem inventor_eoe.sw.inventor is a prerequisite of
explorer.sw. The correct version of Inventor to install
depends on whether OpenGL is available for your system.
IRIS Inventor version 2.0, execution-only, is required for
OpenGL systems (Indigo, Indigo^2, Indy and VTX, Reality
Engine, and RE2 graphics). IRIS Inventor version 1.1.2,
execution-only, is required for non-OpenGL systems (Personal
IRIS, GT(X) and VGX(T) graphics). Both Inventor execution-
only subsystems can be loaded from the Inventor 2.0
distribution, where they have names inventor_eoe.sw.inventor
and inventor_eoe.sw.1_1. The development option for
Inventor (inventor_dev.sw) is not required to write modules
that produce geometry using Explorer's cxGeometry library,
but it is required to write modules that read or manipulate
Inventor geometry objects directly.
- 6 -
2.5 Configuration_Files
The default preferences file for Explorer is
/usr/explorer/Explorer.config. It contains the default
locations of modules and maps, establishes module
categories, and sets the shared memory arena size. You can
customize your own preferences by editing the
sample.explorerrc file in /usr/explorer and saving the
updated copy under the name .explorerrc in your home
directory.
2.6 Other_Installation_Information
Modules built under Explorer version 2.0 or 2.1 will
run in Explorer 2.2. Module resource files, map files,
DataScribe script files, and saved lattice or pyramid
files have not changed in structure between versions
2.0 and 2.2.
Note: IRIS Explorer version 2.2 is incompatible with
IRIS Explorer version 1.0 in certain areas:
o Modules built under version 1.0 must be recompiled
and relinked for use with version 2.2. The
command protocol used between the components of an
Explorer program has changed significantly from
version 1.0, causing this incompatibility. If you
have developed your own modules, rebuild each of
them:
1. Update the module resource file (see below)
2. Remake the Makefile with the command:
make Makefile
Rebuild your modules with:
make install
3. Module resource files, saved map files,
DataScribe script files, and saved pyramid
files have changed in structure between
version 1.0 and 2.0, but not from version
2.0 to 2.2. Version 2.2 can read any of
these version 1.0 files with some loss in
efficiency. It is recommended that you
update these files with the provided program
cxupdate. See the cxupdate manual page for
details. Once files have been converted,
they are in 2.x native format and can be
- 7 -
read more efficiently by this release.
Geometry created by modules using Inventor
2.0 cannot be handled by Inventor 1.x based
modules. You must rebuild the Inventor 1.x
based modules, as detailed above. Geometry
files produced by Inventor 1.x modules (eg,
Explorer 2.0 or 2.1 modules) can still be
read in Explorer 2.2.
In order to uncompress and print these PostScript
documents, you use the zcat and lp commands. For
instance, to print chapter 5 of the IRIS Explorer
User's Guide, you could use a command of the form:
/usr/bsd/zcat /usr/explorer/doc/userguide/Chap5.ps.Z | lp
- 1 -
3. Changes_and_Additions
This chapter lists the changes and additions in IRIS
Explorer since the 2.0 release.
3.1 General
o Support for Open Inventor is provided. The Explorer
``geometry'' data type, which is really an Inventor
scene graph, now uses the OpenGL-based Open Inventor
(Inventor 2.0) on OpenGL-capable machines. On machines
that do not support OpenGL (Personal IRIS, GT(X), and
VGX(T)), the Explorer geometry library relies upon
Inventor version 1.1.2.
o There are new modules for volume rendering, pyramid
manipulation, feature extraction, color editing and
video input.
o There are many new unsupported modules. Capabilities
include color manipulation, axes, multi-channel lattice
support, readers and feature extraction for molecular
chemistry, readers and writers for many image formats,
finite element pyramid readers and manipulators,
computational fluid dynamics operations, gnuplot and
Mathematica interfaces, world mapping and cartography,
as well as many others.
Most of the unsupported modules are also distributed in
source form so that you may customize and modify the
modules as needed. Many of these modules are written
and contributed by Explorer users. None of these
modules is supported by Silicon Graphics.
o Explorer now supports Motif drag and drop, in which
module file icons or filename strings may be dragged
onto the Map Editor, Module Builder, or Data Scribe.
o RenderLite has been removed from the module suite.
3.2 Map_Editor
o The default font for the Map Editor has been changed to
a Helvetica font in the default font set. This reduces
system disk usage by not requiring installing of
optional X Window fonts.
o Modules may now be replaced through a menu item on the
module mini control panel. Module replacement preserves
connections and widget values, launching a new disabled
module in place of the old one. This feature is used
- 2 -
primarily by module developers.
o Automatic replacement by the Map Editor of modules that
have exited is more robust.
o The Explorer log window responds to user input. It may
be edited, cleared, or marked as view-only (the
default).
o The scrolled list widget is more robust regarding the
selection of items and module control of selected
items.
o Modules' connections may now be deleted and restored
through a menu item on the module mini control panel.
The user may select input, output, or all connections
for deletion or replacement. This action operates on
all selected modules (highlighted white in the Map
Editor).
3.3 Scripting_Language
Documentation for all scripting commands may be found
by typing (help) at the skm prompt when Explorer is
started with the scripting option. For instance, start
Explorer as follows and then ask for help at the
prompt.
explorer -script -
skm> (help)
A few commands in the Skm scripting language have been
modified, as follows:
display The display command is now renamed
explorer-display.
start Now accepts an optional hostname on
which to start the module.
start-map Now accepts an optional hostname on
which to start the map.
The following new commands have been added to the Skm
scripting language:
connection-list Return the list of connections to a
module.
duplicate Duplicate one or more modules.
- 3 -
filename-to-parts Split a filename into the four
parts host, directory path, file
base name, and suffix.
get-module-x-y Return the location of a module
mini control panel in the Map
Editor.
get-pfunc Return the parameter function for a
particular module port.
module-to-filename Return the filename of the module
executable.
module-to-host Return the host on which the module
executable resides.
param-list Return the list of parameter ports
of a module.
pfunc-list Return the list of parameter
functions (pfuncs) of a module.
set-module-x-y Move a module mini control panel to
a specified location in the Map
Editor.
set-pfunc Set the parameter function for a
particular module port.
set-x-y Set the insertion point in the Map
Editor.
3.4 Module_Suite
o The Render, RenderRemote, and other cxGeometry modules
now use Inventor 2.0 on OpenGL-capable systems (VTX,
Indigo family, and RealityEngine). On Personal IRIS,
GT(X), and VGX(T) systems, the Render and RenderRemote
modules continue to use Inventor 1.1.
There are three main feature changes in the Inventor
2.0-based modules in addition to using OpenGL. Popup
menus now use overlay planes so as not to induce
redrawing of rendered scenes. There are bounding box
and reduced polygon modes during camera changes. And
Render is capable of off-screen rendering (although it
still requires and uses graphics hardware to do this).
- 4 -
o BoundBox and other modules now use the cxParamColor API
calls to set the color of an object from a text typein
widget. Other modules that use the API include
Annotation, BoundBoxPyr, DisplayImg, Legend and
WireFrame.
o The ClipPyr module now accepts compressed pyramids on
input. It has been improved to cap clipped cells. It
also provides a slicing plane when Intersect and
Interpolate modes are chosen. The new module is
substantially faster than previous versions.
o The CompressPyr module is now able to compress pyramids
containing elements not identified in the default
dictionary. Previous versions produced compressed
pyramids with incorrect face normals in some cases.
o The ExteriorPyr module now finds the exterior of 2D, as
well as of 3D, pyramids.
o The GenLat module reflects the newer mathematical
function library and produces a 255 byte value instead
of 254 in the default, sinusoidal operational mode.
o The HistNormImg module reflects the behavior of a new
ilHistNorm operator in the ImageVision library. The new
operator seems to normalize byte images to a smaller
range than 0-255, yielding different output than in
previous versions of Explorer.
o The ILController module has better support for user-
defined image processing operators. It is also
distributed in source code form for easier
modification.
o The Interpolate module has been fixed to remove a
memory error that leaked data on each firing.
o The LatFunction module no longer has problems stacking
a sliced array. The previously erroneous behavior was
apparent when performing operations of the form:
y := x[0];
z := [y];
The LatFunction module is able to output data on
parameter ports as well as lattice ports.
o The PyrToGeom module now employs the code of
ExteriorPyr when displaying 3D pyramids in dimension 3
- 5 -
mode. This can reduce the number of polygons
substantially, resulting in much faster rendering.
o The SampleCrop module has been fixed to remove a memory
error that leaked a copy of the input lattice on each
firing.
o The ScaleXYZ module is improved to correctly scale the
X, Y, and Z dimensions of a lattice with one, two, or
three coordinate dimensions.
o The ShrinkPyr module now accepts compressed pyramids on
input.
o The SliceLat and SlicePyr modules now interpret the 4x4
slicing plane transformation matrix in the same way as
ClipPyr, LatToGeom, Transform, and TransformGen.
o The Triangulate3D module now uses a hash table to
represent adjacent tetrahedra, yielding a considerable
space reduction for large input data sets.
o The VideoInput module is distributed in source form for
easier modification or use as a coding example.
o These new modules have been added to the module suite:
AdjustColor This module corrects an RGB image
to be NTSC/PAL compliant in color
space. It does it by reducing the
saturation.
AnimFile This module generates sequences of
filenames, using two strings and an
integer.
Axis This module annotates a geometric,
rendered image that was constructed
from an Explorer 3D Uniform
Lattice.
BendBox This module is similar to the
BoundBox module used for bounding
lattice data except that it allows
more direct control of the bounding
box produced and produces a
pyramid, similar to the WorldMap
module, which can be used with the
Projector module so that it is
transformed in the same manner as
- 6 -
the data.
ChannelAnimate This module selects a single
channel from a vector lattice and
outputs it as a scalar lattice. If
desired, ChannelAnimate will walk
sequentially down each channel in
the input lattice and output each
as a separate scalar lattice in an
animation fasion.
ChannelMerge This module takes data from up to
five scalar or vector lattices and
merges the data portions of each
into a single vector lattice.
ColorBin This module allows the user to
generate a color table that
consists of discrete intervals,
unlike GenerateColormap which
generates a continuous colormap.
ColorEditor This is a utility module to assist
the user in selecting and editing
colors.
ColorXform This module is a LatFunction-based
module for interactively combining
color channels in an image.
CullPyr This module outputs a subset of an
input pyramid dataset. The subset
consists of nodes and related cells
having data within (or outside of)
a specified range. CullPyr can be
used in conjunction with LatToPyr
to removed blanked data from a
lattice.
ExportImage This module writes an Explorer
image lattice in various file
formats.
EyeBackbone This module extracts the backbone
elements from a PDB file.
EyeBalls This module inputs an Explorer
Chemistry Pyramid and generates
various ball and stick molecular
geometries.
- 7 -
EyeCrystal This module reads the
crystallographic coordinates and
connectivity information of a CSS
format crystal file, converts the
coordinates to cartesian, and
builds a Chemistry Pyramid.
EyeESP This module reads the grid data of
a MOPAC electrostatic potential
file and generaters a uniform
Explorer lattice.
EyeG92 This module reads the the data of a
Gaussian 92 log file, determines
the number of iterations, and
builds a Chemistry Pyramid of the
selected iteration.
EyeMonteCarlo This module inputs a uniform
Explorer lattice and calculates the
volume of a selected piece using a
Monte Carlo integration.
EyeMopac This module reads the Cartesian
coordinates of a Mopac output file
and builds a Chemistry Pyramid.
EyeMopacRxn This module reads a Mopac output
file and generates a Chemistry
Pyramid of the selected reaction
coordinate.
EyeMopacVib This module reads a Mopac output
force file and generates the
vibration of the selected
eigenvalue.
EyeRibbons This Geometry module is an
implementation of the Ribbons
Algorithm by Mike Carson.
EyeSybyl This module reads the molecular
data of a Sybyl mol file and builds
a Chemistry Pyramid.
FE2Zdata This module creates a pyramid in 3D
from two coordinates and a data
value used as the Z coordinate.
FEPyrBox This module creates a bounding box
geometry for a pyramid. It is
- 8 -
similar to BoundBoxPyr.
FERead This module reads a specialized
compressed pyramid representation
for finite element models.
FileList This module displays in a scrolling
list widget a list of file names
that match a given pattern.
FileListBrowse This module displays in a browsing
scrolling list widget a list of
file names that match a given
pattern.
FileListExtended This module displays in an extended
scrolling list widget a list of
file names that match a given
pattern.
FileListMultiple This module displays in a multiple
scrolling list widget a list of
file names that match a given
pattern.
Heat_flux This module is a LatFunction-based
module that computes a simple
heat-flow calculation.
ImportImage This module reads an image in one
of various file formats and outputs
it as an Explorer image lattice.
Islice This module interpolates an (n-1)-
dimensional slice from an n-
dimensional lattice.
Map This module reads the CIA World
Bank II map database and generates
geometry.
Mathematica This module provides an interface
to the symbolic mathematical
manipulation program Mathematica.
MeshDfm This module reads in a 3-based or
4-based deformation mesh file and
outputs a pyramid data structure.
MiniVas This module records animations to a
Lyon-Lamb MiniVas video controller.
- 9 -
Projector This module transforms data with
geographic coordinates into one of
several standard map projections.
ReadAnsys This module reads Ansys finite
element data files to produce
pyramid output.
ReadMarc This module reads MARC output t16
or t19 data files to produce
pyramid output.
ReadMesh1 This module reads in a Mesh data
file to produce pyramid output.
ReadMultiPlot3D This module reads a multi-blocked
Plot3D file and outputs each block
as a separate lattice. It also
allows iblanked files to be read,
but ignores the iblank information.
ReadNastran This module reads a Nastran xdb
file.
ReadQuake This module reads an earthquake
data file and outputs a pyramid
suitable for input to the CropQuake
module.
ReadSEGY This module reads a SEGY file and
outputs a lattice.
ReadXplor This module reads X-PLOR format
electron density maps and generates
a volume lattice.
Readsocklat This module reads floating point
vectors from a TCP/IP connection-
based socket into a lattice.
RotateCamera This example module generates a
camera using a fixed rotation.
SampleXYZ This module is a LatFunction-based
module to subsample a 3D lattice
with a different sample rate in
each dimension.
ScaleDelays This module is a LatFunction-based
module for scaling the Z coordinate
of a 3D dataset. See also the
- 10 -
ScaleXYZ module for scaling one,
two, or three coordinate
dimensions.
SpherToCartes A LatFunction-based module for
computing Cartesian coordintes from
spherical coordinates. See also the
Projector module.
TestIL Sample ImageVision library module
for combining image processing
filters into a single module. This
module performs a Blur and then a
HistEqual operation.
ToCoord A LatFunction-based module for
converting between Explorer lattice
coordinate types. Known to have
problems dealing with perimeter
coordinates.
Transform This module applies a
transformation matrix to the
coordinates of lattice and pyramid
input data, rotating and
translating in any number of
dimensions. It accepts the standard
4x4 matrix output of TransformGen
for 3D transformations.
VideoInput This module captures the input
video via the StarterVideo or
VideoLab device either in single
frame or live mode.
ViewGeom This module shows an iconic
representation of the Inventor
scene graph for a geometry.
VolumeRender This module renders 3D uniform byte
volumes using slicing planes
parallel either to the lattice
coordinate axes or to the viewing
plane.
WatchFile This module watches for
modifications to a file and fires
its Filename port when the file
changes.
- 11 -
WorkBench This module supplies a single
number which can be fed into other
modules, such as the slice number
for OrthoSlice, to allow fine
control over numeric parameters.
WorldMap This module reads a compressed
version of the CIA World Data Bank
II map database and produces a
two-layer pyramid which contains a
cropped, decimated map, in units of
degrees longitude and degrees
latitude, containing only those
features selected by the user.
buildMOPAC Creates a byte lattice of the input
for an execution of MOPAC. This
modules reads a standard chemistry
pyramid and generates the MOPAC
input file. The user can choose
which Hamiltonian to use.
cfd These modules incorporate common
Computation Fluid Dynamics
techniques. The modules are
recognizeable by their naming
scheme, which ends in FunXXX, where
XXX is a three digit number.
particles This module creates a point at each
grid location in an n-dimensional
grid. The point may be depicted as
a single pixel, tetrahedron or
sphere.
readGCM This module reads a very specific
format of a global climate model.
Data courtesy of Los Alamos
National Laboratory.
readKuwait This module reads a datafile with
several time steps of smoke
information generated with the
Global Climate Model from Los
Alamos National Lab.
readVolume This module reads a volume dataset
in a specialized binary format.
warpImage This module takes an image and
wraps it on a sphere. It assumes
- 12 -
that the image is linear in
latitude and longitude.
3.5 Control_Panel_Editor
o The default font for the Control Panel Editor has been
changed to a Helvetica font in the default font set.
This reduces system disk usage by not requiring
installing of optional X Window fonts.
o The Scroll List widget is now resizable in the CPE.
3.6 Module_Builder
o The default font for the Module Builder has been
changed to a Helvetica font in the default font set.
This reduces system disk usage by not requiring
installing of optional X Window fonts.
o The Module Builder now includes label information for
option menu items and radio box items when it creates a
prototype document file.
o Changing the name of an input parameter no longer
deletes the widget information associated with that
port. The widget is preserved through name changes to
the input parameter.
o The Additional Install Files file list in the
Build/Options window now shows the default .shp file
for LatFunction-based modules and is more robust.
o The Module Builder changes its working directory
whenever a new module resource file is opened,
including on startup. This can prevent erroneous
writing of Makefiles in the directory from which the
Module Builder was first started.
o The Module Builder now correctly finds a usable
temporary directory.
o The Module Builder no longer allows a pyramid to be
constrained to have zero layers. All pyramids must be
constrained to have at least one layer.
o The Fortran logical type argument has been restored to
the list of allowable Fortran user function argument
types.
- 13 -
o A bug has been fixed in which the Module Builder
incorrectly assigned a variable's type to the shorter
of two user defined types having a common prefix.
3.7 DataScribe
o The default font for the DataScribe has been changed to
a Helvetica font in the default font set. This reduces
system disk usage by not requiring installing of
optional X Window fonts.
3.8 Module_Development_Environment
o Input and output port constraint checking is applied to
all ports with constraints, fixing a bug in which
checking ceased at the first unconstrained port.
o Port constraint checking on missing data structures now
correctly indicates when a missing structure is
required.
o The automatically generated API routines for all
Explorer data types now delete any array before
resetting its pointer in a *Set() call. The array can
be preserved by temporarily zeroing its pointer during
invocation of the *Set() call.
o The manual pages describing automatically generated API
routines have the same name as the data type. This is
true for the supported data types cxLattice, cxPyramid,
cxPick, cxParameter, cxGeometry, and cxUnknown, as well
as all user-defined types.
o The cxInputDataRelease routine now releases the last
cached input on a port having only one input.
Previously this cached data set was not released.
o Colors may now be specified as text strings in module
control panels using one of several formats. The
cxParamColor* API routines convert from string
parameters to valid color descriptions. As an example,
the BoundBox module uses this feature to change the
default color of its wires.
o A new environment variable is available to control the
execution of modules that use the Inventor library, due
to the absence of OpenGL support on Personal IRIS,
GT(X), and VGX(T) machines. If the CXGLTYPE environment
variable is set to opengl, the local controller
- 14 -
searches /usr/explorer/opengl/modules for Inventor-
based modules, while if CXGLTYPE is set to irisgl, it
searches /usr/explorer/irisgl/modules. If the variable
is not set, the local controller computes which
directory to search based on a hardware inventory of
the local machine.
Thus if the DISPLAY environment variable is set to
display on another machine not running the same type of
Inventor and GL, the CXGLTYPE variable should be used
to communicate this difference to Explorer.
o Silicon Graphics does not support development of
Explorer modules that use Inventor 1.x directly (this
is the only way to develop Inventor-based modules on
the IRIS GL platforms Personal IRIS, GT(X), and
VGX(T)). However, you may be able to develop such
modules with the following instructions.
The symbol InventorVersion must be defined when imake
creates the module Makefile. The appropriate way to do
this is to define the environment variable CXGLTYPE to
have the value irisgl before making the Makefile. The
cxmkmf script will then take the appropriate actions to
create an Inventor 1.1.2-compatible Makefile. (If you
do not set CXGLTYPE, an OpenInventor Makefile will be
generated by default.) For instance, when in the
directory in which to make the module, use the
following C shell commands:
setenv CXGLTYPE irisgl
make Makefile
make
This procedure is not supported, but is provided here
as a service to our users.
o The cxmkmf command accepts zero, two, or four arguments
in making a module or type Makefile.
o These new specialized API routines have been included:
cxConnMaxInd Determine the maximum one-based
index of all connections in a
connection list.
cxConnRemap Remove connections to a cleaned
pyramid layer.
cxCoordTransform Apply a homogeneous
transformation matrix to all
- 15 -
coordinates.
cxHSVtoRGB Convert color values from
hue/saturation/value to
red/green/blue.
cxParamColorFloatGet Convert a string color parameter
into floating point RGBA format.
cxParamColorFloatSet Convert floating point color
values into a string color
parameter.
cxParamColorPackedGet Convert a string color parameter
into a packed integer format.
cxParamColorPackedSet Convert a packed color value into
a string color parameter.
cxPyrActivePrev Flag as active/inactive the
elements at the next higher
pyramid layer.
cxPyrConCompare Compare two sets of vertices for
equivalence of a certain type.
cxPyrLayerClean Remove selected items from one
layer of a pyramid.
cxPyrRefIndexGet Find the pyramid dictionary index
of a compressed pyramid element.
cxPyrVertOrder List the vertices on a pyramid
face in their natural order of
traversal.
cxQmeshCoords Interpolate coordinates from grid
points to cell centers.
cxQmeshData Interpolate data values from grid
points to cell centers.
cxQmeshNextInd Step through triangle vertices in
a quadrilateral mesh.
cxQmeshNumPoints Return the number of points in a
quadrilateral mesh with
interpolated centers.
cxQmeshNumTris Return the number of triangles in
a quadrilateral mesh with
- 16 -
interpolated centers.
cxQmeshTris Generate polygon vertex indexing
to create a quadrilateral mesh
using cell centers.
cxRGBtoHSV Convert color values from
red/green/blue to
hue/saturation/value.
3.9 Miscellaneous
o Modules that set widget values now get the correct
parameter value when they refire. But the
cxInputDataChanged(3E) flag indicating a changed
parameter value is not correct. These modules should
not try to optimize execution based on the changed flag
of widget parameters.
o The shared memory arena is no longer limited to 256
megabytes in version 2.2. Moreover, the shared memory
arena may now reside on an NFS-mounted disk. The
location of the shared memory arena is determined by
the tempdir variable in your .explorerrc file. See
Appendix A of the IRIS Explorer User's Guide for more
information.
3.10 Changes_between_Explorer_versions_1.0_and_2.x
There were many changes made between release 1.0 and 2.0 of
Explorer. This section summarizes those changes for the
benefit of users upgrading directly from Explorer 1.0. The
IRIS Explorer User's Guide and IRIS Explorer Module Writer's
Guide give much more detailed information about the changes.
3.10.1 General
o There are many new modules-providing better pyramid
support, more feature extraction capabilities, audio
and video hardware control-as well as many new readers.
o Pyramid data can now be compressed. That is,
regularity in the cell or face structure can be
factored out and described in a new ``pyramid
dictionary,'' then those descriptions can be used over
and over again within the pyramid.
o You can add new data types to the system by way of a
data typing language and compilation system. An
accessor library is automatically generated for new
- 17 -
types. The Explorer types (lattice, pyramid, and so
on) are defined in this scheme, and the description
files for those types accompany the distribution.
o A new firing algorithm provides better support for
animations and simulations by allowing for frame-based
synchronization and controlled cycles.
o A new, powerful scripting language lets you drive maps
from a command program. This scripting language is
based on the popular language named Scheme.
o A new built-in type, cxGeneric, can hold any of the
Explorer data types, whether it is built-in or user-
defined.
o A new built-in type, cxPick, can hold picking
information from the Render module for transport back
up into a map.
o Support for IRIS Inventor is provided. The Explorer
``geometry'' data type is revealed to be an Inventor
scene graph.
3.10.2 Map_Editor
o Explorer now has a textual scripting language, based on
the popular Scheme language. It allows you to start
modules, create maps, set parameters, and so on.
Additionally, all of the control and data structure
capabilities of the Scheme language are available to
the script writer. Scripts can be read from files,
from the keyboard, or from a pipe, and can be generated
by modules or from menu bar items.
o Creating applications is more fully supported. In
particular, you can create a map containing one or more
groups, customize their control panels, maximize them,
and save the map. Then, the map can be executed as if
it were a shell script, by typing its name. If the map
filename does not end in .map, it is executed without a
map editor or Librarian, as if it were a custom
application.
o The firing algorithm has been enhanced in several ways:
a frame-based implementation exerts better control over
the sequencing of module firing, yet maintains the
fully distributed decision logic of version 1.0. This
algorithm allows, for example, the Render module to
know when it has completed the creation of a new,
complete image. It also allows for controlled cycles,
- 18 -
or loops, in Explorer maps. Designated modules called
``controller modules'' have special logic for deciding
when to continue or terminate a cycle in a map. These
modules have a slightly different look, with an
additional button that identifies them as controllers.
Additionally, some connections in maps are special,
too, in that they carry loop control information.
These connections are colored differently from normal
wires.
o Fan-in of multiple wires to a single input port now
behaves correctly in the firing algorithm. Each wire
is treated almost as if it were a separate port, and
the firing algorithm defers the execution of a module
until all the necessary data on its input links is
available. This has an impact on the implementation of
some modules; see Section 3.7, ``Module Development
Environment,'' for details.
o Connections can now be made between widget parameter
ports and non-widget parameter ports. These wires are
identical to normal wires between ports, and behave
correctly within the Explorer firing algorithm.
Correspondingly, parameter functions (pfuncs) correctly
participate in the firing algorithm.
o The small top-level Explorer window is gone. The
functionality it provided has been moved to the Map
Editor menus.
o Module standard output and error messages are now
captured in a special logging window. This window can
be shown or hidden either globally, collecting output
from all modules, or on a per-module basis.
Additionally, it can be configured to pop to the top
whenever a module generates output.
o Map files and groups can now have help files. For
groups, the help file can be accessed in the same way
as that for modules. For maps, the help file can be
accessed only from the Librarian pressing button three
on the mouse when the cursor is over the map item.
o The Librarian can now save its state. If you rearrange
categories or create new ones, you can save this
configuration in a separate file which you can then
integrate back into your personal Explorer
configuration file (~/.explorerrc).
o The Librarian now has a ``New Host...'' item in its
Hosts menu. Selecting this allows you to type the name
- 19 -
of a new host to participate in this Map Editor
session.
o The modules' mini-control panel menus now have an item
named ``Interrupt''. When selected, it sends a
keyboard-style interrupt signal to the module that is
trapped by the wrapper and results in immediate
termination of the user function. This is useful for
recapturing control of modules that have ``run away''
with your processor. However, no mechanism is provided
to allow the user function to capture control when this
happens and hence, storage leaks might occur. Any data
that has been placed on output ports is flushed, and
NULL data is flushed out on the others.
o The Librarian now allows you to access modules' help
files without launching them. This is accomplished via
a menu that pops up when you press button three on the
mouse over a module or map name. This menu shows the
directory from where the module comes, along with items
to launch the module and display its help file.
o The Librarian now allows you to quickly scroll to a
particular place in the list of modules using the
keyboard. By typing the first few letters of a module
name quickly while the mouse is in a category window,
the module matching those keystrokes is scrolled to the
top of the list.
o Librarian categories can now be created based on more
criteria. Now you can define a category in your
configuration file by specifying a regular expression,
as you would in the UNIX shell, to match module names.
You can also specify the full pathname of a directory,
and Explorer adds all modules in that directory to that
category. These apply to the ``category'' statement in
configuration files.
o The .explorerrc configuration file has a new statement,
``scriptfile''. Its argument is the name of an
Explorer scripting language file that is to be loaded
by the Map Editor on startup.
o The .explorerrc configuration file's ``modulepath''
statement no longer has the -append option; this is now
the default. To remove all entries from the existing
module path simply use this command with nothing after
it. To place new directories at the beginning of the
list use the ``-prepend'' option.
- 20 -
o Execution highlighting can now adapt to rapid firing
situations by suppressing some blinking. When this
happens, the yellow highlighting remains turned on,
even though the module might be rapidly firing
successively. When the firing rate drops, the module
highlighting reverts to the normal mode. Reducing the
amount of flashing allows continued interactivity in
the Map Editor.
o Groups of ImageVision Library (IL) modules can now be
saved and converted into a single module comprising a
single chain of IL operators. To accomplish this,
create a map of only image processing modules, group
it, create a custom control panel for it, then save it.
A prompt asks you if the map should be saved as a
single IL module.
3.10.3 Module_Suite
o Module control panels that previously had file
selectors now only have text type-in fields. They have
file browsers available through a menu item on the menu
bar of the maximized control panel.
o You can now have any number of instances of the
GenerateColormap module present, though due to the
limitations of colormap entries in the X Window System,
not all of them might have active palette windows.
o The isosurfacing modules have been rewritten to use a
different algorithm. This implementation can generate
strips of triangles in its output, resulting in better
rendering performance.
o The image processing modules now follow the automatic
type promotion rules used by the ImageVision Library
product. Previously, they clamped data to the range 0
to 216-1 for short data and 0 to 28-1 for other data
types.
o The PickLat and ProbePyr modules have been removed from
the module suite.
o These new modules have been added to the module suite:
AnimateCamera Key frame animation driver for the
Render module.
- 21 -
Annotation Add text information to the Render
module.
AudioIn Capture audio (on audio-capable
IRIS workstations) and produce a
lattice of sampled sound.
AudioOut Produce audio output (on audio-
capable IRIS workstations) from an
input lattice of sampled sound.
Ball Produce an output geometry
comprising spheres at each data
point in an input lattice.
BoundBoxPyr Produce a wireframe bounding box
for a pyramid.
BrowseFile Present the contents of an ASCII
file in a scroll list widget.
ChannelSelect Select out a single channel from an
input lattice.
ClipPyr Clip a pyramid by an arbitrary
clipping plane.
ComposePyr Compose a pyramid from multiple
input lattices.
CompressPyr Convert a pyramid into a compressed
form.
ExpandPyr Expand a compressed pyramid into a
non-compressed form for modules
that cannot handle compressed
pyramids.
ExteriorPyr Eliminate the shared faces in a
pyramid.
FileList Present a filtered list of files in
a directory.
For Loop controller for DO-loop-style
map cycles.
GenerateVideo Write images to one of several
types of video devices.
- 22 -
GnuPlot Provide an interface to the popular
GnuPlot graphing program.
Note: This module is not supported
by Silicon Graphics, Inc.
GNU software is provided
free of charge by the Free
Software Foundation. SGI
does not provide support or
service to GNU software.
The source code to GnuPlot
is provided as a part of the
IRIS Explorer distribution.
Legend Generate a colormap legend for the
Render module.
MinMax Compute and display the minimum and
maximum data values in a lattice.
Mixer Mix and match data and coordinates
from input lattices to produce a
new output lattice.
MoleculeBuilder Interactively edit a molecule
pyramid.
MopacView Read a MOPAC data file and produce
a lattice.
MultiChannelSelect Select or rearrange data channels
in a lattice.
MultiSlice Produce multiple orthoslices of a
lattice.
PrintParam Print the value of a cxParameter
data structure.
PrintPick Print the value of a cxPick data
structure.
PseudocolorImg Combine an 8-bit image with a
colormap to create a full-color
image.
QueryLat Query the value of an input lattice
at a particular point selected
interactively in the Render module.
- 23 -
ReadAVSfld Read an AVS field file into a
lattice.
ReadAVSimage Read an AVS image file into a
lattice
ReadAVSucd Read an AVS unstructured cell data
file into a pyramid.
ReadAVSvol Read an AVS volume file.
ReadAudio Read an AIFF file into a lattice
ReadHDF Read an HDF input file.
ReadImages Laminate multiple image files into
a 3D lattice
ReadMovie Reads an SGI movieplayer file and
produces multiple lattices
(versions 2.1 and later only)
RealityRender Volume renderer for the
RealityEngine.
RenderRemote A version of the Render module that
can open its rendering window on a
different display.
Repeat A loop controller module for
controlled repeat-style loops.
SamplePyr Subsample a pyramid by
systematically or randomly
discarding cells.
ScaleXYZ Scale coordinates of a lattice with
one, two, or three coordinate
dimensions.
ShrinkPyr Shrink the cells of a pyramid
structure.
SLiceLat Create an arbitrary slice of a
lattice, going directly to
geometry.
SlicePyr Create an arbitrary slice of a
pyramid.
- 24 -
Streakline Create a streak line through a
velocity-based 3D lattice.
Switch Selectively propagate or do not
propagate data through a map.
Triangulate2D Generate a Delaunay triangulation
from a 2D lattice.
Triangulate3D Generate a Delaunay graph of 3D
data.
Trigger Provide a barrier capability,
propagating data based on a
particular condition.
Vectors Generate a vector plot from a
vector field input.
VideoControl Control an external video device.
VideoDevice Route images to an external video
device.
VideoLabInWin Capture VideoLab input into a
window and produce a grabbed image
output lattice.
VideoLabOut Route an image lattice or portion
of the screen to a VideoLab device.
VideoStarterIn Grab images from an SGI Starter
Video device.
VideoStarterInWin Display Starter Video images in a
drawing area.
VideoStarterOut Send image lattices to a Starter
Video device.
While Loop controller for WHILE-style
loops.
WriteAnimation Write a FIT animation file from a
series of input images.
WriteAudio Write an AIFF file from a lattice.
WriteMovie Writes an SGI movie file from a
series of input images (versions
2.1 and later only).
- 25 -
o The Render module has several new geometry input ports.
On input, there is now a second 3D geometry input port,
named Annotation. Geometry wired to this port behaves
the same as normal geometry, except that it is always
displayed in front of all geometry received in the
normal input port. Another input port, named Screen,
accepts geometry and displays it in 2D in front of all
other inputs. The coordinate space for this input port
is always 1 to +1 in the shorter of the two axes. The
longer axis may resolve coordinates outside this range.
In any case, the coordinate (0,0) is the center of the
window.
o The Render module can send out its camera position as a
geometry object on an output camera port. Camera
geometry objects can also be sent into this module on
the Input Camera port.
o The Render module has a new parameter port, Snap on
Redraw, which, when set to non-zero, causes the module
to send out an image lattice of its window each time it
rerenders its scene.
o The Render module and the DisplayImg module have output
ports for picking. This data structure carries
information about user mouse picks.
o The Render module can now read a configuration file,
.Renderrc. Refer to the help information or manual
page for Render for details.
3.10.4 Control_Panel_Editor
o Dial and slider widgets can now have truly integer
values.
o Control panels can now have decoration widgets.
Horizontal and vertical separator lines are supported,
as well as rectangular frames and text labels.
o Widgets now have a stacking order, allowing widgets in
control panels to be placed explicitly above or below
others. This is particularly useful when used with
decoration widgets.
o There is a new widget: Scroll list. This widget has a
set of API calls and supports multiple-line text. You
can add or remove items dynamically from the widgets,
and you can select multiple items at the same time.
- 26 -
o Maximized control panels can now have custom menu bars.
Menus on menu bars can have items that set parameters,
invoke Explorer scripting commands, invoke UNIX shell
commands, or cause the system to quit.
o When selecting widgets to move around, you can use a
shift-select or drag box mechanism to select more than
one widget. Then, these widgets can be moved around in
unison.
o Widgets can be hidden and revealed programatically.
They can also be enabled and disabled. Disabled
widgets appear grayed-out; hidden widgets are not
visible. The control panel editor allows widgets to be
hidden on module startup.
o Many widgets can be selected for resizing horizontally,
vertically, or both, in the control panel editor.
o You can now dynamically add items to or remove items
from option menu widgets. In version 1.0, once the
number of items in the option menu had been set up in
the control panel editor, the module could not increase
it or decrease it.
3.10.5 Module_Builder
o The Module Builder now allows only one main panel to be
active at a time.
o Pyramids on input ports can now have a limited set of
constraints applied to them.
o Lattices on input ports can now be constrained to
require either a data section, a coordinate section, or
both. Hence, lattices without one or the other, within
the bounds of designated constraints, are allowed.
o The Module Builder supports the creation of a loop
controller module. The controller status setting is
located in the Build/Options panel.
o When making connections in the Connections panel,
targets that are allowed after selecting a source item
are highlighted in a way similar to I/O ports in the
Map Editor.
o When making connections to an output port in the
Connections panel, all unspecified structure members
are highlighted with a different color text. When all
- 27 -
members appear in black text, the output data set is
fully wired.
o A Hook Functions panel is now accessible from the
Options menu. This panel allows you to define the hook
functions for the module being built. Previously, this
table had to be hand-coded.
3.10.6 DataScribe
o Reading an input file until end-of-file is detected is
now supported.
o Support for arrays of sets is included. That is, an
element of an array glyph can be an aggregate
structure.
o The DataScribe no longer supports ASCII or binary
templates that contain either multiple lattices or a
mixture of lattices and other glyph types. The
DataScribe now correctly handles Fortran record
structured binary input files. The DataScribe now
supports pattern scans covering more than 8192 bytes.
3.10.7 Module_Development_Environment
o Non-MDW modules no longer need a hand-coded
UserFuncTable or HookFuncTable. These are
automatically generated from the module resources.
o All modules, whether they have a data wrapper or not,
now have input and output port constraint checking
applied to them.
o Several new API routines relating to loop control are
included: cxLoopBreak, cxLoopCtlr, cxLoopIteration,
and cxLoopControlArc.
o The routine cxGeoVolumeDefine has been renamed
cxGeoOctTreeDefine. Additionally, a new splat
enumeration value for texture mapping the splats has
been included.
o The supported data types, cxLattice, cxPyramid, cxPick,
cxParameter, cxGeometry, and cxUnknown, have
automatically generated API libraries that add to the
list of functions that can be called on them. The
manual pages describing these routines have the same
name as the data type.
- 28 -
o A new environment variable is available to control the
compilation and linking of modules. If the DEBUG
environment variable is set, the module Makefile is
generated to compile and load all files with the -g
option. This must be set before building the module
Makefile to have an effect.
o The command cxmkmf replaces the version 1.0 command
cxmkmodmf for generating module and user-defined-type
Makefiles.
o The timer mechanism (cxTimerAdd) and the file
descriptor select mechanism (cxInputAdd) can be used
identically in either X Window System or non-X Window
System modules.
o These new specialized API routines have been included:
cxInputDataRelease Releases the data on an input
port so that it no longer is
available if the module needs to
fire again.
cxScriptCommand Sends an Explorer scripting
language program to the Map
Editor for interpretation.
cxDataCheck* A set of routines for controlling
checking and error actions for
memory allocation problems.
cxParamPathnameGet Reads a parameter port and
resolves its value as a file
pathname, converting environment
variable references or tilde
notation use for home
directories.
cxOutputDataRelease Releases data cached on an output
port.
cxInputAdd/Remove Adds and removes a user file
descriptor to the module
scheduler, resulting in a user
function being called when the
file descriptor has data to read.
cxGeoReceive Allows a module to read Explorer
geometry input and to convert it
into an IRIS Inventor scene
graph. Once in this form, the
- 29 -
scene graph is amenable to
manipulation via IRIS Inventor.
cxGeoInventorDefine Convert an IRIS Inventor scene
graph into an Explorer geometry
object.
cxGeoLightModelAdd Allows a specific lighting model
to be attached to a geometry
object.
o Several API routines that deal with input ports now
have analogs that work on all connections to a given
port. These routine names are the same as the
originals, except that they add a V to the end of the
name. The values generated by these routines are
vectors of values analogous to the single values
generated by the non-vector versions. Examples of
these new routines are cxInputDataChangedV,
cxInputDataGetV, cxInputDataConnIDGetV, and
cxInputDataReleaseV.
3.10.8 Miscellaneous
o Explorer configuration files can now be executable
scripts. If your configuration file is marked as
executable, Explorer runs it as a program and reads the
standard output as the configuration information. If
the first line of the file contains the string #!CPP,
the entire file is processed through the C preprocessor
and the entire set of environment variables are
predefined to the preprocessor.
o A limited performance report capability is available.
When this capability is enabled, modules report CPU and
memory use after each firing of the user function. The
only way at present to enable it is with the ``(perf-
report-on)'' scripting command.
o Modules can have ports typed as ``Generic,'' meaning
that any type of data can be accepted on that port. No
built-in type constraint checking is applied to these
ports; if a module can accept only a particular set of
types, it must check itself and reject
(cxInputDataRelease) data that it cannot handle.
Several modules (for example For, Switch, and Trigger)
have generic ports.
o Files generated by Explorer now have custom IRIS
WorkSpace icons.
- 30 -
o The default base address of the shared memory arena has
been moved; it is now 0x50000000. All shared memory
arenas are limited to 256 megabytes in version 2.0.
o There are many new modules-providing better pyramid
support, more feature extraction capabilities, audio
and video hardware control-as well as many new readers.
o Pyramid data can now be compressed. That is,
regularity in the cell or face structure can be
factored out and described in a new ``pyramid
dictionary,'' then those descriptions can be used over
and over again within the pyramid.
o You can add new data types to the system by way of a
data typing language and compilation system. An
accessor library is automatically generated for new
types. The Explorer types (lattice, pyramid, and so
on) are defined in this scheme, and the description
files for those types accompany the distribution.
o A new firing algorithm provides better support for
animations and simulations by allowing for frame-based
synchronization and controlled cycles.
o A new, powerful scripting language lets you drive maps
from a command program. This scripting language is
based on the popular language named Scheme.
o A new built-in type, cxGeneric, can hold any of the
Explorer data types, whether it is built-in or user-
defined.
o A new built-in type, cxPick, can hold picking
information from the Render module for transport back
up into a map.
o Support for IRIS Inventor is provided. The Explorer
``geometry'' data type is revealed to be an Inventor
scene graph.
- 1 -
4. Known_Problems_and_Workarounds
This chapter describes the known problems with release 2.2
of IRIS Explorer and, where known, ways to work around them.
4.1 Map_Editor
o Explorer, because it is a multiprocess application, can
consume a substantial number of processes and file
descriptors, depending on its use. Under these
circumstances, it is advisable to increase the UNIX
kernel's maximum number of processes (NPROC) and file
descriptors (NOFILES). See Appendix A of the IRIS
Explorer User's Guide for more information.
o When modules that contain file browser widgets are run
remotely, the widgets show files that are available
only on the local machine. To correctly enter a remote
filename in this case, the name must be correctly typed
into the text field without the benefit of the browsing
capability. All Explorer modules have been modified to
remove the file browser from the control panel, moving
it instead to the module menu bar.
o The ``Interrupt'' item on module menus interrupts user
functions with the UNIX signal SIGUSR1. User functions
must not interfere with the capturing of this signal.
Modules that are multithreaded, such as the image
processing modules on multiprocessors, will not
properly clean up the parallel threads when interrupted
with this feature, and may fail on subsequent firings.
o If a module control panel with a drawing area is made
full-screen with the window manager maximize button,
then restored to its previous size, drawing areas might
not be informed of the correct size. If this happens,
resizing the window slightly corrects the display.
o If a module with a maximized control panel is saved as
part of a map, the size of the saved control panel
becomes its new minimum size. Thus if you maximize a
control panel, make it much larger, save the map, and
reload the map, you will not be able to resize the
control panel to be smaller. The workaround is to use
the module menu-bar Replace command to replace the
module. Since this command fails to duplicate control
panel information, the replaced module will have a
control panel with default size.
o Modules that have parameter functions on their inputs
cannot be duplicated or copied from the cut buffer
- 2 -
without an error message complaining about can't find
upstream module.
o The (destroy) and (disconnect) scripting language
commands are not synchronous. Hence, if you re-create
a link or module immediately after destroying it, an
error might occur in the naming of the new item.
o If you save a portion of a map containing nested loops,
and save both loop controllers but not the entire inner
loop, relaunching that map might cause the incorrect
module to be selected as the loop controller.
o When running an application with only maximized control
panels visible, selecting the Motif menu ``Close'' item
causes the control panel to go away, but the map
programs continue to run. You must use the shell
command ps to find and destroy the processes. Sending
a kill to the process named gui should suffice. You
should define a ``Quit'' menu bar item to exit the
application, and then use it to exit the application.
o Map files may contain out of date directory path
information for modules. If a module executable is
moved to a location different than that given in a map
file, the map's path to the module will not be updated.
Operations that depend on this path information will
cease to work; these include module replacement, module
help, and module credits. Module launching will
continue to work correctly, but loading and then saving
the map will not update the path. The workaround is to
edit the map file to replace the quoted path string for
the module with the new path or with the symbol NULL
(not in quotes).
4.2 Firing_Algorithm_Anomalies
o In version 2.1, widget values set programmatically
(e.g. with cxInWdgtDblSet) would change the widget, but
would not change the port value if the Fire Now menu
was selected. This has been partially fixed. The
correct value now appears on the port but the values
returned from cxInputDataChanged and
cxInputDataChangedV may be inconsistent. It is best to
assume that all widget values have changed. Note that
the new widget values set programmatically were never
intended to appear on the port until the next time the
module fires.
- 3 -
o Button widgets are always marked as ``new data'' when a
module starts execution, even if the initialization
hook function calls cxInputDataGet on that port.
o Nested loops perform correctly in most cases, but
certain loop wirings can cause problems. In
particular, a loop control module cannot receive data
both from within its loop and from within an inner
loop. The data from the inner loop must be wired to
that loop's controller, then on to the outer loop
controller. Routing all data through the inner
controller allows the inner controller to send
consistent control information to the outer loop
controller.
In addition, if an outer controller receives data from
an inner loop, you must route all data going to the
outer controller through the inner controller. Failure
to do so causes the outer controller to receive data at
different loop nesting depths, which it might be unable
to handle.
4.3 Shared_Memory_Anomalies
o If a module dies while allocating shared memory, it
locks the arena memory allocator, preventing other
module operations. This has the appearance of the map
failing to fire after a module has died unexpectedly.
It is best to save your map and restart Explorer when
this happens.
o When the disk containing the shared memory arena fills
up during the execution of an Explorer map, there might
be no error reported, but the execution of the map
stalls. This condition will often only manifest itself
via system error messages in the console window.
4.4 Module_Suite
o In Render, Personal IRIS systems support only screen
door transparency.
o In Render, two-sided lighting does not work on IRIS
Indigo systems with Entry or XS graphics, even though
the systems have this capability. This problem is
exhibited when the Render module is run on one system
and displays on a second, using DGL (distributed
graphics library). This problem results in displays
that are completely dark on one side and correctly lit
- 4 -
on the other.
o In Render, selecting geometry objects received on the
Screen input port does not always work correctly.
Highlights and manipulators might be placed
incorrectly. The Transform Sliders can be used to
position these objects accurately.
o In Render, the snapped output image contains a fine
white border of pixels that are not part of the
rendering window.
o The Render module is sensitive to some X Window System
application defaults. For example, setting
``*borderWidth:2'' causes the module to redraw itself
improperly when its window is resized.
o The Render module may print to standard output a terse
message of the form ``id XX not found,'' where XX is an
integer. This sometimes happens during disconnection of
a wire or destruction of a Render module.
o The Render module commonly has problems allocating all
colormap entries and may print to standard output a
message of the form ``Warning: Cannot allocate colormap
entry for LimeGreen.''
o Render and other modules that receive geometry slowly
accumulate memory, possibly causing some fragmentation
of memory. The problem is that each Inventor scene
graph node has a name and the small names accumulate in
the process that transcribes in geometry. The names
are now block allocated, so the fragmentation problem
isn't as severe as it was formerly, but it can still
cause problems if the module receives very large
geometries many times. There is no workaround to this
problem, although we have increased the block size of
the names somewhat to push the failure point further
out.
o Modules from Explorer version 2.1 should run in the
version 2.2 Map Editor without recompilation or
relinking. However, some version 2.1 image processing
modules (names end in Img) may exit when run in the 2.2
Map Editor.
o In Contour, taking contours of large volumes with many
slices might consume excessive memory.
o The GenerateColormap module does not compute ideal
control points for colormaps given all possible lattice
- 5 -
colormap inputs. In particular, it might not place
control points close enough together if the input
lattice has discontinuities in one or more of the color
channels.
Additionally, it might not pick ideal slopes for
control points even when given smooth inputs.
The module sometimes produces a colormap with zero
opacity, resulting in completely transparent objects.
Refiring the module one or more times often resets the
opacity back to the desired values.
o The IsosurfacePyr module exits abnormally when given
the dataset /usr/explorer/data/pyramid/shuttle.pyr as
input. The module is unable to accept this form of
compressed input.
o In LatFunction, an error pop-up might appear when no
data exists on an optional port that is referenced in
the Shape script.
o In LatFunction, the Shape script might be incorrectly
interpreted when it is newly read after changing the
script file. With the cursor in the Program file
type-in slot, press ; this causes LatFunction to
reread the script and usually fixes the problem.
o If the MultiSlice module needs to readjust the Offset
widget back into the range of the number of slices on
its input, it does not recompute the slicing places.
You must adjust the Offset value manually to a valid
value for the module to recompute its output.
o Geometries saved by WriteGeom will not have the shape
hints normally used to view geometry in Render.
Therefore an Inventor scene graph saved via WriteGeom
and viewed with ivview may not appear identical to the
same geometry viewed in Render. Add to the saved
geometry the shape hints documented in the man page for
Render.
4.5 Control_Panel_Editor
o The Control Panel Editor (CPE) does not retain all
information concerning a widget's properties when
switching between widgets. If you change a widget from
a radio button to an option menu, the radio buttons'
labels are not applied to the new option menu. This
occurs also for other widget combinations.
- 6 -
o Very long labels for Radio Button and Option Menu
widgets can confuse the CPE. In this case, the editor
displays a long label, but the bank of option boxes is
incorrect, obscuring the buttons.
4.6 Module_Builder
o In the Connections panel, you cannot wire to any
lattice in the layers of a pyramid other than the
first.
o It is too easy to make wiring mistakes in the
Connections panel. In particular, you can wire a (char
*) parameter value in a port to a (char) function
argument, resulting in a compile-time error if you let
the module builder create your function prototype.
o You cannot set the value of a constant wired to an
output port structure member. Instead, wire the
constant to a function argument and from there to the
output port.
o Using strings as function parameters is confusing. A
function argument in a C or C++ user function that is
to receive a character string from a parameter port
must be specified (in the Function Args panel) as type
``char'' and reference ``Array.'' In a Fortran user
function, the function argument must be specified as a
``character'' and a ``Scalar.''
o You can create a user-defined data type that contains
so many members that the menu for it in the Connections
panel is taller than the height of the screen. If this
happens, apply the keyword ``closed'' to nested
structures within the new type; this prevents the
Module Builder from expanding them out in this menu.
4.7 DataScribe
o Under some circumstances the DataScribe will delete a
glyph's name (and replace it with an empty string) on
reading a DataScribe module. Attempting to perform
wiring or array component selection in the presence of
an empty name may cause the DataScribe to dump core.
o In some cases using the Array Component glyph (the
cross-hatched green icon in a vector glyph) will cause
DataScribe to dump core.
- 7 -
o There are several minor annoyances in version 2.2 due
to design incompatibilities with Motif 1.2. Things such
as glyphs that appear the wrong size, incorrect window
sizing, etc, are due to this problem. These problems
are typically minor and pose no impediment to correct
usage of the software.
o You can overlap templates in the DataScribe slightly.
This can occur under special circumstances if you close
and then open a template that is followed by another
open template. If you save the module, clear the
DataScribe, then read in the script again, the overlap
disappears. The overlap is slight and does not impair
use.
o Templates and glyphs must have unique names. When you
append a template or glyph, you can create a script
with a duplicate name. You must change the new
template or glyph names to avoid collisions with
existing components in the script. The parser can, at
times, fail to detect the duplicate components.
o The value of the nDim glyph in an output lattice glyph
should not be altered.
o The response time is slow while editing names for
parameter glyphs because the CPE must be notified of
changes during this processing. You do not need to
enter a carriage return when typing names and values in
the DataScribe; therefore, the CPE must process each
character separately.
o Glyph names must not include spaces. This can confuse
the parser.
o In the save pop-up dialog, if you select OK without
selecting or entering a filename, no prefix is assigned
and the files are saved with their default suffix only.
o In the Control Panel Editor, the Cancel button does not
cancel widget editing (that is, editing the widget
type, dimension, position), and it reverts back to the
beginning of the editing session. Editing in the CPE
does not have any widget addition or deletion
semantics. You can add and delete parameters only
through the DataScribe, not through the Control Panel
Editor.
o Drag-and-drop into output templates is unreliable if
the input pane has been hidden. Glyphs can still be
added to the template by selecting the template, then
- 8 -
selecting the desired items in the palette while
holding down the key.
4.8 Libraries_and_Module_Building_Environment
o Linking modules that contain C++ source files gives a
linker warning indicating that the C++ library was not
used and could be removed from the link line. This
happens because the module control wrapper (MCW)
prelinks against the C++ library. No action is
necessary.
o Explorer modules are not marked for QuickStart by the
loader. You may observe a slightly longer startup time
than would have been possible with a quickstarting
executable.
o If you create a new data type with two unlabeled
members having the same name at the same scoping depth
from their shared parent types, the wrapper code
generator might try to call an API routine that doesn't
exist, resulting in a module compilation error. The
workaround is to label the members with unique names or
change the member names so that they are unique.
o Using the Workshop Performance Analyzer tool on
Explorer modules is not currently supported.
o Modules written in Fortran that happen to call routines
from the Explorer Geometry API (eg, cxGeo* calls) may
exit when run. In these cases there will be no
resulting error message identifying the cause of the
module death. The module exits because a symbol is
undefined, but the situation is further confounded by
an absence of linker (ld) or run-time loader (rld)
error messages identifying the undefined symbol.
Because Fortran modules call an interface routine found
in libcx.so or libcxX.so, which then calls the cxGeo
routine in libgeometry.a, the correct ordering of the
symbols on the link line is one of
userFunc.o -lcx -lgeometry
userFunc.o -lcxX -lgeometry
Because User Library symbols are placed before the
Explorer system libraries on the link line, the actual
order reverses the cx and geometry libraries. This
yields an undefined symbol at run time.
- 9 -
The workaround is simple. Authors of Fortran geometry
modules must place the symbols
-L$(CXLIBDIR) $(LIBAPI)
before $(GEOMETRYLIBS) in the User Libraries field of
the Module Builder main window. Authors of Fortran
geometry modules using X Windows must instead add the
symbols
-L$(CXLIBDIR) $(LIBAPI_X)
For instance, a User Libraries line that read
$(GEOMETRYLIBS) mylib.a
would now read as one of the following two lines,
depending on the absence or presence of X Windows code
in the module:
-L$(CXLIBDIR) $(LIBAPI) $(GEOMETRYLIBS) mylib.a
-L$(CXLIBDIR) $(LIBAPI_X) $(GEOMETRYLIBS) mylib.a
- 1 -
5. Documentation_Errors
This chapter lists the documentation errors in the version
2.0 IRIS Explorer User's Guide, IRIS Explorer Reference
Pages, and IRIS Explorer Module Writer's Guide. These
documents are shipped unchanged from version 2.0. In
addition to their hardcopy form, the documents are included
online in the /usr/explorer/doc directory.
In order to uncompress and print these PostScript documents,
you use the zcat and lp commands. For instance, to print
chapter 5 of the IRIS Explorer User's Guide, you could use a
command of the form:
/usr/bsd/zcat /usr/explorer/doc/userguide/Chap5.ps.Z | lp
5.1 User's_Guide
o Chapter 3 mentions the ProbePyr module, which is no
longer shipped with Explorer. The SlicePyr and ClipPyr
modules can be used as a replacment.
o The PickLat module has been removed from Explorer.
Instead use the user picking function in Render along
with the QueryLat module.
5.2 Reference_Pages
o cxLookupCreate may return a negative one value for
lookup points outside the domain of a uniform lattice,
when it is supposed to clamp the point to the uniform
domain.
o The UserFuncs(4E) man page does not mention the create
hook function, which is called after the module is
created, but before it is first enabled. In particular,
the widget parameters are not set when the create hook
function is called, so the module is restricted to
performing actions independent of widget values.
5.3 Module_Writer's_Guide
o The files
/usr/explorer/src/MWGcode/Pyramid/C/GeneratePyr.c and
/usr/explorer/src/MWGcode/Pyramid/Fortran/GeneratePyr.f
were missing in version 2.0, but are now present.
o The API description for cxPyrCompress was missing a
function argument, which is now included in the online
man page.
- 2 -
o The scrolled list widgets may not update their
maximized Motif window list when changed with a call to
cxInWdgtScrollList*. However, the diminutif control
panel items are updated.