[vtkusers] GUI for VTK (was [DEMO] amira)
Brian Alexander Todd
bat5 at po.cwru.edu
Wed Jun 14 13:49:40 EDT 2000
Dear vtkers,
There seems to be a lot of interest in a VTK / wxWindows union.
This would be a dream come true for me since I've been struggling
with this for about a year. Some of you may be interested in
downloading a wxVTKWindow class from
http://home.cwru.edu/~bat5/wxvtk.html
to get you started. I've been able to render into wxWindows on
wxGTK (linux) and wxMSW. I haven't tested the motif code which
I copied from someone elses previous wxVTK attempt. I have a lot
of other code but it is shakey.
If anyone is willing to lead a full-fledged wxVTK project I
would be glad to support it (with time not money; I'm a grad
student I have more of the former).
Brian
At 04:09 PM 6/14/00 +0200, Sebastien BARRE wrote:
>At 16:54 13/06/00 -0400, Dave Reed a écrit:
>
>>Is there any GUI front end for VTK out there?
>
>There is at least three GUI's :
>**************************
> - LCAvision (http://zeus.ncsa.uiuc.edu/~miksa/LCAVision.html), a
>project I was not aware of (see previous answer), but the GUI does not seem
>to fit what I'd like to see for the moment (see below),
>
> - vtkEditor (http://www.esat.kuleuven.ac.be/~vtkedit/), which is a
>nice OpenSource try, but not a serious concurrent,
>
> - Visualization Studio, by Principia Mathematica
>(http://www.principiamathematica.com/), which is commercial and run only
>for Win32, but looks good. I downloaded the demo once, but had problems to
>run it on my NT box (flickering).
>
>The idea of building a serious GUI has been around for a while. What I'd
>like to see, as features :
>**************************
> - OpenSource, and free
>
> - platform independent
>
> - scriptable (i.e., integrated console so that we can
>simultaneously use both the GUI and the whole range of VTK functions in a
>programmatic way).
>
> - visual pipeline (like Visualization Studio or Amira), as well as
>an object browser
>
> - completeness and consistency (i.e., access to ALL VTK functions,
>and unified access, meaning that it has to be done automatically, see below).
>
>As far as I know (I'seen AVS, but not used it), Amira is the software which
>is the closest to what I'd imagine as a good GUI.
>
>Platform independent :
>**************************
>I've already built a VTK GUI for my own application, and here are some of
>my thoughts : developping a large project using Tcl/Tk is a pain, even with
>object-oriented front-end like IncrTcl. I know that VTK has a great Tcl
>support, I know that very nice and nifty examples might be built quickly
>using Tcl, but I do not think it's an option for a large system, even if
>it's component oriented. The "everything is a string" Tcl moto is sometimes
>driving me crazy, although I learned to love Tcl :)
>
>This leaves Python, which is a free, opened, modern and powerful scripting
>language, with builtin object-oriented support. It's also natively stuffed
>with lot of interesting modules and network access. I guess David Gobbi
>could advertise it better than I do :)
>
>Now for the GUI... I guess we need :
>
> - something available for *both* Unix and NT (and OpenSource-like
>as well).
>
> - a toolkit that IS (and will be) supported and developed by a
>serious team, so to say a serious partner for VTK.
>
> - Python bindings of course.
>
>That page : http://www.geocities.com/SiliconValley/Vista/7184/guitool.html
>is an interesting comparison of free GUI toolkits. To my opinion :
>
> - GTK looks nice, is heavily supported/developed, but I'm not sure
>it has been seriously ported to Windows (without using cygwin I mean). It
>won't be discontinued, but who is ready to enter the GTK/KDE war ? :) I'd
>rather not see our task-force divided between VTKGTK and VTKKDE.
>
> - Tk, well... huhuh... the problem is not Tk, the problem is the
>Tcl part of Tk :) But python has indeed a strong Tk support through TkInter
>or some PmWidget (Python MegaWidget), but I do not know if they are still
>supported. I guess one could bypass Tcl by using Python bindings to Tk, but
>this still looks and taste like Tk, and I do not know about performance
>issues (Python calling Tcl calling Tk calling Tcl...). Anyway, I've been
>using Tk and Itk for a while, I find it a bit outdated and clumsy to some
>extensions, but I might be influenced by the fact that one can do *very*
>dirty things with Tk (and I guess that's what I've done :)
>
>=> my favorite "candidate" is wxWindows : http://www.wxwindows.org/, but
>I've NOT been playing with it for the moment. It looks serious, and seems
>easy to install. "It'a free C++ framework supporting Windows 3.1/95/98/NT,
>and Unix with GTK/Motif/Lesstif. A Mac port at version 2.0 is available.
>Other ports are under consideration." It has Python support :
>http://wxpython.org/.
>
>I guess we should compare Tk and wxWindows, it's worth a try. There is one
>big issue to solve : I do not know if there is an OpenGL support in
>wxWindows, or if we need to develop something like a TkRenderWidget or
>tkImageWidget for wxWindows...
>
>
>Visual pipeline (like Visualization Studio or Amira), as well as an object
>browser
>**************************
>As VTK is pipeline- and object- oriented, I guess it would be logical to
>use such GUI representation : put a component on a grid or "pool", drag
>connections between components, press "Update" buttons or set automatic
>update, and so on. Look at Amira, it's very easy to use. An object browser
>should be available too, listing all objects and their properties, but this
>has been done already by some of us.
>
>I guess there is two issues to solve :
>
> - implement "serialization" in VTK, i.e. a way to
>save/load/store/restore objects (not scene) and their parameters in files,
>and therefore whole pipelines too (object by object, or by following the
>pipeline graph). Maybe a vtkSerialize class, and subclasses that would help
>objects to store themselves in different forms : portable and readable
>textual form, compressed binary form, Tcl form, Java form, C++ form, so
>that by building a pipeline in Tcl, one could save it in a file as a
>readable C++ pipeline, and vice-versa (restore it from a C++ example, even
>if it is called from a Tcl program). It's not too difficult to do in Tcl,
>but I think it has too be natively implemented in the VTK C++ API. (I'm
>quite sure Serilalization has been done also by some of you, please feel
>free to give some feedbacks).
>
> - achieve completeness (see below)
>
>Completeness and consistency
>******************
>Meaning : access to ALL VTK functions (keyword : ALL :)). And access in a
>unified way.
>
>What I would like to see :
>
> - when I right-click on an object in a pipeline, or start a
>connection from this object to another, I would like to be aware of ALL
>possible connections, i.e. to what kind of objects/classes I can connect it
>to (and the name of these objects, if they are present in the actual
>"pool"), as well as subclasses.
>
> - when I click in an object in an object browser, I would like to
>see ALL functions that might be applied on that object, AND (that's
>important) the TYPE of the parameters of these functions, and the actual
>values (using Tcl, it's possible to access the list of one object's method,
>but NOT the parameter's type).
>
> That means for example that if the object has a SetLookupTable
>member function admitting a vtkLoopupTable object as parameter (OR a
>derived class), I will be able to build (and provide though the GUI) a list
>of the already-created objects of this target type and connect both objects
>very simply. This might be part of the previously discussed point, as a
>generalized pipeline concept : every functions that admit a VTK
>object/class as parameter might be seen as a "port", a way to connect to
>objects although they are not part of the whole "Update" stuff.
>
> Hints might be welcome to, for example if the functions admits 3
>floats that represent a RGB triple, I will be able to build a GUI component
>representing a color, or a color chooser.
>
>Consequently : the VTK lib/API is SO huge (have a look at the inheritance
>graph, and compound members list), there is so much functions, that I do
>not think that there is a reliable "human" way to maintain a list of all
>available connections and functions and implement that stuff one by one in
>the GUI, as little buttons that would clutter the interface after two months.
>
>Therefore, I think we might need a tool that will parse the VTK sources,
>and build a kind of database (or listing) of all objects, functions, and
>parameters (VTKDB). This file would be read by the GUI, and used to build a
>database and provide a reliable and unified way to connect objects, or
>implement a full-featured object browser. It could be available for
>download, or updated remotely or locally when you update your VTK version,
>whatever.
>
>That kind of parser is already available in some form, it is (they are)
>used to build the API bindings between the C++ lib and Python, Tcl, Java,
>and stuff. There is one parser per language, and correct me if I'm wrong,
>the C++ source is parsed for *every* language to build the binding. To be
>honest, I've not reverse-engineered the parser for the moment, it looks a
>bit freaky (Yacc/Bison or something like that, I'm just a poor Perl adept).
>Maybe it would be a good opportunity to write a tool unifying and
>simplifying the stuff : something that would build that previously
>described VTKDB, then simple functions that would generate the bindings
>from the VTKDB, without re-reading the source.
>
>
>Just my 2 cents. Feel free to flame :)
>
>
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at:
<http://public.kitware.com/cgi-bin/vtkfaq>
>vtkusers mailing list
>vtkusers at public.kitware.com
>http://public.kitware.com/mailman/listinfo/vtkusers
>
>
More information about the vtkusers
mailing list