[vtkusers] VTK versus AVS/Express
William R. Oliver
oliver at afip.org
Fri Mar 29 07:33:48 EST 2002
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Well, I have used both and can give you some personal opinions.
Note that these are *personal* and in no way constitutes the
opinion of my employer, the government of the US, the Department
of the Army, etc., etc., etc. It should also not be construed
as an endorsement, but merely a recount of my *personal* experience.
1) VTK costs little money. The code is free, but almost everybody
ends up buying the book(s). AVS is not free.
2) AVS has good support. I have used AVS 5.s and then Express since
around 1989, and the level of support has always been good. It's
on par with the kind of support you get from other rather expensive
packages like Maya -- they will help you debug, look at your networks,
etc.
VTK has no inherent support, though you can buy some from commercial
sources. Kitware's support for VTK is about $1500 (US) the last I
looked, which is a little more than my single-license AVS support
runs and a little less than my multiple-license support runs. I
can't address the quality of Kitware support since I have never
used it, but my personal experience with the people in the company is
positive.
3) AVS/Express has a nontrivial learning curve. You have to get your
head around their object models, which is a little opaque. Once you
"get it" it becomes pretty easy, but it's a trip. Basically, you
can pretty much expect to end up wanting to take one of the AVS
programming courses.
VTK's learning curve is also nontrivial. I found the basic VTK model
*slightly* easier to get my head around. In addition, you have
to *also* learn some sort of ancillary things in order to get the
I/O to work. As you know, most of the examples use Tcl/Tk, Perl,
Python, etc. as a scaffolding. You can write straight C++ code,
but most of the examples use a scripting code for pretty obvious
reasons. Thus, if you are starting from scratch, the VTK learning
curve includes both VTK *and* one of the scripting languages.
4) Ease of use issues are so very tied up with the learning curve issue
it's hard to address separately. For me, AVS/Express is trivially easy
to use -- but I've been using it or AVS 5.x for 13 years. I spend
a fair amount of time creating custom visualizations for folk who use
our facility -- and this includes many different kinds of acquisition
devices from confocal microscopes to conventional microscopes to
magnetic resonance microscopes. I can sit down and throw together
a decent visualization for just about anything I get in just a few
minutes.
The visual dataflow network system in Express is very intuitive; adding
and subtraction parts of the image processing pipeline is fast and easy.
However, if one is not in love with a graphical network GUI,
the pipeline approach of VTK is also intuitive. It is easy
to program if you don't mind working with the code every time
you want to make a change.
Making GUIs is fast and easy in Express, and can be done entirely
in a point-and-click manner for trivial applications. For nontrivial
GUIs, you have to actually type in some parameters, but it is still
pretty easy -- once you have dealt with that learning cure issue.
Making a nice GUI in VTK can be a pain. In VTK, I spend more time
with GUI issues than with image processing issues -- but that's
in part a function of the fact that I'm not all that great
a Tcl/Tk programmer.
That being said, however, there are some caveats. If you want
to do something completely different with the GUI, there can be
nontrivial integration issues in Express. Moreover, there are
some things that you can do very easily using Tcl/Tk that can
be surprisingly difficult in Express. I have occasionally found
it easier to write specific interactive tools in VTK with Tcl/Tk
than in Express.
5) User group and modules. Both VTK and AVS/Express have
active user groups. Neither AVS nor VTK have much
of a presence in the usenet newsgroups any more. VTK discussions
are mostly on this list, and AVS discussions are mostly on
forum.avs.com (which is currently and temporarily down).
AVS 5.x has a huge number of public domain modules; Express has
a smaller, but rapidly growing number. AVS has made a strong
effort to put more Express modules in the public domain, and three or
four show up every month or two. There is a well-organized
user-based site which centralizes much of this -- the International
AVS Centre in Manchester, England (www.iavsc.org).
VTK has a good number of classes that comes with the
distribution. I haven't found a similar repository of user-donated apps and
classes. My impression is that this may be a function of the
design philosophy. Rather than have donated classes laying
about, I get the impression that things are submitted to the
VTK group at Kitware and then integrated into the distribution.
But this repository thing goes back to ease of use and GUI issues.
In AVS/Express, there's almost always a pre-created app around
that *almost* does what I want, and it's easy to modify it slightly
to get what I want. In VTK, there's the collection in the Examples
distribution, but not much else that I have found.
Whether or not the subset of available modules or classes is
better in AVS or Express depends entirely on your specific
set of demands. The only real disappointment I have for
Express is that many of their classic image processing routines
work only on 2D 8-bit greyscale images. That means that
you have to split a 3D three-color image into three monochrome
datasets, process each monochrom dataset slice by slice, and
then reassemble. For some methods where you *have* to look at
the image in color space, and for transforms such as fft, there
are generalized modules available. But this is a limitation that
should be removed. As I remember, the limitations of the VTK
classes vary from class to class.
6) Renderers.
The AVS/Express volume renderer has been recently upgraded. The combination
of the new renderer and the new colormap editor makes the volume renderer
pretty powerful. I am still learning to use the VTK renderer efficiently.
My impression is that it is also pretty flexible, but I really can't do a
direct comparison.
However, once again, the built-in GUI for dealing with this in AVS makes
playing with it easier. It is the difference between point-and-clicking
on a graph to change the opacity ramps versus hand editing the
opacityTransferFunction. Could I write a GUI for doing this in VTK?
Sure -- but that goes back to the ease of use issues. I don't particularly
want to spend all my time writing GUIs.
The volume renderers are both interactive for my datasets.
The AVS/Express volume renderer offers four or five different volume
rendering techniques -- though only two are really useful to me.
The volume renderer seems to run a little faster on my SGI in AVS, but
that may well be a configuration issue.
I have never tried the marching cubes/isosurface renderer in
both VTK and AVS on the same machine with the same dataset.
7) Efficiency
AVS 5.x is a memory hog because it makes a copy of the dataset for
almost every module. Express doesn't do this, and is much more efficient.
Express itself has a high memory overhead, but it is, fundamentally, built
for big machines. The marginal increase per added module is not all that
bad.
Express also runs much faster than AVS 5.x. Since you actually compile
the whole damned thing, you can tweak the compiler and linker for
your site. I am pretty happy with it.
I can't compare VTK directly with Express in terms of efficiency because
I haven't run similar pipelines on the same machine.
8) Parallelism/Distributed Processing.
Express doesn't handle parallelism all that well. If you write your
own code and modules, then *they* can make use of paralellism within
that particular module (Express doesn't interfere), but the overlying
IDE is not multithreaded. There is a new multi-pipe version out which
is very pricey, and that allows one to make efficient use of multiple
graphics pipes in machines like SGI Infinite Reality Engines.
The old AVS 5.x would allow you to run different modules in the same
network on different machines, but this is not well supported in
Express. There are ways in the documentation that say you can
distribute some things across machines at the IDE level, but I have
never done it, and the instructions are not clear.
In VTK, of course, you can also write paralellism into your
own code. I am not sure of the direct parallel processing support of the
actual VTK classes -- I don't think it's there. I know that Kitware
announced that it had signed a contract to develop parallel processing
tools for VTK in March 2000, but I don't know what became of that.
8) Portability and providing apps to others
VTK is portable. AVS/Express runs on a number of boxes, but is not
as portable as VTK.
In both AVS/Express and VTK, if you write an app you can distribute
it to other people and they can run it on their machines if they
have either VTK or Express installed.
BUT.... there are big licensing issues here. For someone to
run an AVS/Express app on their machine, they have to have an AVS/Express
runtime license (or use up one user on their development license). FOr
instance, I have one Developer Licesne, one Visualization License,
and five Runtime Application Licenses at my site. That means that
I have one license that allows me detailed access to the code of
AVS/Express, one license that allows me to build networks and GUIs and
write modules, but not play with the code of the IDE itself, and five
licenses that allow me to run a pre-compiled app without modifying
them (these are for users). Each of those runtime app licenses costs
money.
And this was why I ended up learning VTK in the first place. I found
myself developing visualizations in AVS/Express, but I couldn't
demonstrate them at meetings! I can't go to a meeting in Orlando,
and use AVS/Express because I can't talk to any license servers!
Thus, if I want to demo something at a meeting, I have to call
AVS, get them to send me a 30-day demo license, install it on my
machine, and use that for the demo. AVS is very good about
that -- they have never declined to give me a temporary license
for a meeting, but that means that I really can't do a demo on the
road on the fly (which, oddly enough, I have to do on occasion).
Thus, I ended up learning VTK in order to demo stuff I did at work
on AVS/Express.
William R Oliver, MD
For PGP public key, send email to oliver at afip.org
On Wed, 27 Mar 2002, Richard Dybowski wrote:
> Hi,
>
> How does VTK compare with AVS/Express with regard to functionality?
>
> Richard
>
>
> -------------------------------
> Dr Richard Dybowski
> InferSpace
> 143 Village Way
> Pinner HA5 5AA, UK
> URL: http://www.inferspace.com
> Email: richard at inferspace.com
> Tel: +44 (0) 7976 25 00 92
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (IRIX64)
Comment: Made with pgp4pine 1.76
iD8DBQE8pF8zGyPMvQL2C60RAoaXAJ9LVHAnpqRKDaRk3cfvPC+xJSg8bwCdEWtS
Xhl8dxjVTX6sNTr2IP7AVJM=
=NXuL
-----END PGP SIGNATURE-----
More information about the vtkusers
mailing list