Octaviz is a visualization system for Octave.  It is a wrapper that
makes all VTK classes accessible from within Octave using the same
object-oriented syntax as in C++ or Python. Octaviz also provides
high-level functions for 2D and 3D visualization. Using those
functions, most common visualization tasks (3D surface plots, contour
plots, meshes etc) can be accomplished without any knowledge about
VTK.

Although Octaviz is in active development, it already quite usable and
stable. All major features of the wrapper are implemented: all VTK
classes are wrapped, array exchange between Octave and VTK works,
callbacks work and finally there is experimental CygWin
support. Excluding language specific constructs, Python examples
(included in VTK) can be used in octave without any modification. To
help you get started, about 70 Python examples are converted to Octave
and included in Octaviz.

Octaviz consists of two parts: wrappers for all VTK classes and
high-level Octave scripts that hide VTK internals and provide
visualization capabilities without requiring any VTK knowledge.  VTK
classes can be used in Octave as easily as they are used in Python and
with the same syntax. Unlike other scripts or toolboxes for octave,
octaviz uses object-oriented syntax. Octaviz wraps each VTK class into
an Octave function of the same name. Those function are used as
objects: An instance of a VTK class are created by calling
corresponding octave function without parameters. For example, command
"ren =vtkRenderer();" creates an instance of vtkRenderer class that is
kept in octave variable "ren". Methods within a class are accessed
directly using C++ (or Python) syntax. For example, using the above
created object ren, the method Render is accessible as
"ren.Render()". Online help is available for each class and method:
vtkClass("Help") displays the description of vtkClass, while
vtkClass("MethodName","Help") displays help for the method
vtkClass.MethodName. List of available methods for a class can be
obtained as vtkClass("List").

Octaviz has been developed for Linux with X-Window System and OpenGL
but it should work on any platform that supports X and VTK. Octaviz
should work under CygWin too but this port requires more testing. Any
feedback regarding Octaviz in CygWin is welcome.

BUILDING INSTRUCTIONS 

Linux:

You'll need octave 2.1.53 or later and VTK-5.0 or later to build
octaviz.
    - run ccmake . in Octaviz root directory
        - press "c" to configure
        - press "g" to generate Makefiles
        - press "q" to quit ccmake
    - run make
    - make install

To build octaviz under CygWin: 

1. Compile VTK with support for XFree under Cygwin and OpenGL from XFree (NOT Win32!)
    - rum "ccmake ." in the root directory of the VTK source tree
        - Set the following options (press "t" to see advanced options)
           X11_X11_LIB    /usr/X11R6/lib/libX11.dll.a
           X11_Xext_LIB    /usr/X11R6/lib/libXext.dll.a
           OPENGL_INCLUDE_PATH    /usr/X11R6/include
           OPENGL_gl_LIBRARY    /usr/X11R6/lib/libGL.dll.a
           OPENGL_glu_LIBRARY    /usr/X11R6/lib/libGLU.dll.a
           BUILD_TESTING OFF
           BUILD_SHARED ON
           CMAKE_X_LIBS    -lX11 -lXt
        - press "c" to configure
        - change VTK_USE_X to ON
        - press "c" to configure
        - press "g" to generate Makefiles
        - press "q" to quit
    - run make
    - run make install
    - do chmod +x libvtk* in the VTK installation directory (usually /usr/local/lib/vtk). 
    - Make sure that the VTK installation directory is in your $PATH

2. Compile Octaviz
    - run ccmake . in Octaviz root directory
        - press "c" to configure
        - press "g" to generate Makefiles
        - press "q" to quit ccmake
    - run make
    - make install

Comments, suggestions, bug repports and patches are most welcome (you
can use mailing lists at SourceForge or send to
dragant@users.sourceforge.net).

Octaviz is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.

Octaviz is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the file
COPYING for more details.

Parts of this software are
  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
  All rights reserved.
  See http://www.kitware.com/Copyright.htm for details.
