> I've been on this list for nearly 2 years and watched this community
> grow and mature during that time and I know there is a great deal of
> expertise and wisdom collected here in the general arena of scientific
> visualization, information visualization and java/java3D.
> I have written a little Java3D w/o visad and used visad 2D/3D plotting
> in limited ways but have not gone deeply into either one. I've got more
> experience with C/C++ and OpenGL but much prefer Java/Java3D and really
> like what I see in Visad and the many uses it has been put to here by
> all of you.
> I'm working on the requirements and specification for a fairly ambitious
> project to unify a number of different simulation and analysis tools
> developed here with a single UI and set of Viz capabilities.
> I have no doubts about Java/Java3D and especially Visad's relative
> leverage and portability from a developers standpoint but I do have to
> answer criticisms and questions from many sides about it's effeciency.
> As many of you are doing scientific/information visualization, I am sure
> you are always pushing the performance limits of Java3D as well as
> perhaps Visad's and Java's ability to render and manipulate large,
> complex and heterogenous data structures.
> What I'm looking for is some "instant wisdom", if there is any to be had
> around the obvious issues in performance that we will encounter using
> Thumbnail sketch:
> Various large (multi-year, multi-person) models have been developed
> here and simulations written to study regional, national and global
> infrastructure problems. Highway transportation, electrical power, gas
> pipelines, air traffic, rail traffic, communications and related
> infrastructural networks are all examples of the general problem domain
> that we have been working from many angles. For the most part these
> efforts were seeking relatively specific answers to relatively specific
> questions when they were started but new and more general questions have
> been asked along the way and these various simulations and models are
> being asked to relate to one another, to feed into eachother, et cetera.
> Each of these simulations generates extremely large amounts of data when
> run in earnest and the various tools used to visualize and analyze the
> results were developed to provide overly narrow capabilities and cannot
> be extended/expanded easily or they are commercial tools with only the
> most general capabilities such as S+ or XGobi for example.
> All of these infrastructure domain areas have some georeferencing...
> some sense of being registered in a space defined by a few thousand
> meters underground/sea to earth orbits... with the bulk of them a few
> meters from the earth surface. The scale of interest ranges from
> meters to continental, if not global. The majority of the data is
> structured naturally as discrete points in space with some existence and
> evolution over time and/or networks/graphs over time. Some of the data
> is field oriented over areas or volumes and many fields can be imagined
> to be derived which would help in analysis (density distributions of
> various quantities such as population or resources or financials or even
> weather as it relates to reliability or usefulness of various networks).
> I know this sounds really aggressive and it is, but by trying to
> apprehend the whole scope of the problem I hope to be able to specify a
> subset of it which will reap much of the low-hanging fruit without
> limiting long-term capabilities.
VisAD is specifically designed for dealing with the issue of
the great diversity of data. The VisAD data model can deal with
virtually any numerical data (plus text fields), and integrates
metadata about Units, CoordinateSystems, regular and irregular
sampling topologies, missing data and error estimates into
computational and visualization operations on data.
It is designed to be common infrastructure for applications,
so that they can be merged together after they are built (and
hence solve the problem you describe).
> When I have looked at Visad, I do not see a lot of specific support for
> network/graph-like structures but I may be missing things and may not be
> creative enough to see how some of the other structures such as
> arbitrary mesh data might be useful.
VisAD includes classes for supporting general irregular
topologies, in its Irregular2DSet and Irregular3DSet
classes. These are not optimized for any partial regularities
that may exist in topologies (e.g., nested grids), but will
handle arbitrary topologies.
The Set class is intended to be extended to handle whatever
topological assumptions applications need.
You are right to focus on performance as the main current
problem with Java, Java3D and VisAD. But there are numerous
efforts to address performance.
1. Java3D is making progress to reduce memory use.
2. JDK 1.4 supports 64-bit addresses (to escape the 2 GB
limit on program size).
3. VisAD supports transparent caching of files (applications
see them as a data object, but data moves between disk and
4. We are working on support in VisAD for multi-resolution
displays (see visad/examples/Test71 for an example).
5. We are working on support in VisAD for visualzing large
data objects distributed across the processors of a cluster.
6. VisAD includes custom DataRenderers, and special case
logic in default DataRenderers, for more efficient display
of common data structures.
7. IBM and others are developing Java implementations that
run just as fast as C and C++.
VisAD is a very object-oriented design, in order to be open
to a wide variety of performance solutions. In such an O-O
design, applications can modify deep behavior of the system
without needing to modify low-level code (they can just
extend classes and override methods).
I think an infrastructure for solving the problem of mutliple
special incompatible applications justifies the effort of
solving these performance issues.
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706
hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738