SlideShare ist ein Scribd-Unternehmen logo
1 von 89
Downloaden Sie, um offline zu lesen
Introduction to visualization Visualization libraries MayaVi2




                   3D visualization with TVTK and MayaVi2

                                               Prabhu Ramachandran

                                           Department of Aerospace Engineering
                                                       IIT Bombay


                                                        19, July 2007




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2




 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 What is visualization?

       Visualize: dictionary meaning (Webster)
           1    To make visual, or visible.
           2    to see in the imagination; to form a mental image of.

       Visualization: graphics
                Making a visible presentation of numerical data,
                particularly a graphical one. This might include anything
                from a simple X-Y graph of one dependent variable
                against one independent variable to a virtual reality which
                allows you to fly around the data.

       – from the Free On-line Dictionary of Computing


                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Introduction


                Cross-platform 2D/3D visualization for scientists and
                engineers
                Almost all 2D plotting: matplotlib and Chaco
                More complex 2D/3D visualization
                         Unfortunately, not as easy as 2D (yet)
                Most scientists:
                         not interested in details of visualization
                         need to get the job done ASAP
                         have enough work as it is!
                Fair enough: not often do we need to know internals of
                matplotlib!



                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Introduction to visual


                from enthought.tvtk.tools import visual
                visual: based on VPython’s visual but uses VTK
                Makes it very easy to create simple 3D visualizations
                API shamelessly stolen fron VPython (and for good reason)
                Implemented by Raashid Baig
                Differences from VPython:
                         Slight API differences from VPython
                         Does not require special interpreter
                         Works with ipython -wthread
                         Uses traits
                         Does not rely on special interpreter for looping
                         Much(?) Slower


                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                   Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Simple visual example



    Example code
    from enthought . t v t k . t o o l s import v i s u a l
    s1 = v i s u a l . sphere ( pos = ( 0 , 0 , 0 ) ,
                                    radius =0.5 ,
                                    c o l o r = v i s u a l . c o l o r . red )
    s2 = v i s u a l . sphere ( pos = ( 1 , 0 , 0 ) ,
                                    r a d i u s =0.25 ,
                                    c o l o r = v i s u a l . c o l o r . green )
    b = v i s u a l . box ( pos = ( 0 . 5 , 0 . 5 , 0 . 5 ) ,
                            size =(0.5 , 0.5 , 0.5) ,
                            representation= ’ s ’ ,
                            c o l o r = v i s u a l . c o l o r . blue )




                                                     Prabhu Ramachandran            TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 visual: bouncing ball

    Example code
    from enthought . t v t k . t o o l s import v i s u a l
    l w a l l = v i s u a l . box ( pos =( − 4.5 , 0 , 0 ) ,
                                      size =(0.1 ,2 ,2) ,
                                      c o l o r = v i s u a l . c o l o r . red )
    r w a l l = v i s u a l . box ( pos = ( 4 . 5 , 0 , 0 ) ,
                                      size =(0.1 ,2 ,2) ,
                                      c o l o r = v i s u a l . c o l o r . red )
    b a l l = v i s u a l . sphere ( pos = ( 0 , 0 , 0 ) , r a d i u s = 0 . 5 ,
                                         t =0.0 , dt =0.5)
    b a l l . v = visual . vector (1.0 , 0.0 , 0.0)
    def anim ( ) :
            b a l l . t = b a l l . t + b a l l . dt
            b a l l . pos = b a l l . pos + b a l l . v∗ b a l l . d t
            i f not ( 4 . 0 > b a l l . x > − 4.0):
                    b a l l . v . x = −b a l l . v . x

    # I t e r a t e t h e f u n c t i o n w i t h o u t b l o c k i n g t h e GUI
    # f i r s t arg : t i m e p e r i o d t o w a i t i n m i l l i s e c s
    i t e r = v i s u a l . i t e r a t e ( 1 0 0 , anim )
    # Stop , r e s t a r t
    i t e r . s t o p _ a n i m a t i o n = True
    i t e r . s t a r t _ a n i m a t i o n = True




                                                    Prabhu Ramachandran             TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 visual: a curve


    Example code
    from enthought . t v t k . t o o l s import v i s u a l
    import numpy
    t = numpy . l i n s p a c e ( 0 , 6∗ p i , 1000)
    t = numpy . l i n s p a c e ( 0 , 6∗numpy . p i , 1000)
    p t s = numpy . zeros ( ( 1 0 0 0 , 3 ) )
    p t s [ : , 0 ] = 0.1 ∗ t ∗numpy . cos ( t )
    p t s [ : , 1 ] = 0.1 ∗ t ∗numpy . s i n ( t )
    p t s [ : , 2 ] = 0.25 ∗ t
    c = v i s u a l . curve ( p o i n t s = pts , c o l o r = ( 1 , 0 , 0 ) ,
                                  radius =0.05)
    # Append ( o r extend ) p o i n t s .
    c . append ( [ 2 , 0 , 0 ] )
    # Remove p o i n t s .
    c . p o i n t s = c . p o i n t s [: − 1]




                                                   Prabhu Ramachandran          TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 More visual demos




                More examples available in tvtk/examples/visual
                directory
                More demos!




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Introduction to tvtk.tools.mlab



                enthought.tvtk.tools.mlab
                Provides Matlab like 3d visualization conveniences
                Visual OTOH is handy for simpler graphics
                API mirrors that of Octaviz: http://octaviz.sf.net
                Place different Glyphs at points
                3D lines, meshes and surfaces
                Titles, outline




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                          Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 tvtk.mlab: example


    Example code
    from enthought . t v t k . t o o l s import mlab
    from s c i p y import ∗
    def f ( x , y ) :
        r e t u r n s i n ( x+y ) + s i n (2 ∗ x − y ) + cos (3 ∗ x+4∗ y )

    x = l i n s p a c e ( − 5, 5 , 200)
    y = l i n s p a c e ( − 5, 5 , 200)
    f i g = mlab . f i g u r e ( )
    s = mlab . SurfRegularC ( x , y , f )
    f i g . add ( s )
    f i g . pop ( )
    x = l i n s p a c e ( − 5, 5 , 100)
    y = l i n s p a c e ( − 5, 5 , 100)
    s = mlab . SurfRegularC ( x , y , f )
    f i g . add ( s )




                                            Prabhu Ramachandran              TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                    Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 tvtk.mlab: example


    Example code
   from enthought . t v t k . t o o l s import mlab
   from s c i p y import p i , s i n , cos , mgrid
   # Make t h e data
   dphi , d t h e t a = p i / 2 5 0 . 0 , p i / 2 5 0 . 0
   [ phi , t h e t a ] = mgrid [ 0 : p i + d p h i ∗ 1 . 5 : dphi ,
                                      0:2 ∗ p i + d t h e t a ∗ 1 . 5 : d t h e t a ]
   m0 = 4 ; m1 = 3 ; m2 = 2 ; m3 = 3 ;
   m4 = 6 ; m5 = 2 ; m6 = 6 ; m7 = 4 ;
   r = s i n (m0∗ p h i ) ∗∗m1 + cos (m2∗ p h i ) ∗∗m3 +
           s i n (m4∗ t h e t a ) ∗∗m5 + cos (m6∗ t h e t a ) ∗∗m7
   x = r ∗ s i n ( p h i ) ∗ cos ( t h e t a )
   y = r ∗cos ( p h i )
   z = r ∗ s i n ( p h i )∗ s i n ( t h e t a ) ;
   # Plot i t !
   f i g = mlab . f i g u r e ( )
   s = mlab . S u r f ( x , y , z , z )
   f i g . add ( s )




                                                      Prabhu Ramachandran               TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 More tvtk.tools.mlab demos




                More examples available in tvtk/tools/mlab.py source
                Demos!




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Introduction to mayavi.tools.mlab



                enthought.mayavi.tools.mlab
                Provides Matlab like 3d visualization conveniences
                This one uses MayaVi
                Makes it more powerful (easier to use and extend) than the
                tvtk version
                Current API somewhat similar to tvtk.mlab
                API still under development: will change for the better
                Gael Varoquaux helping with current development/design




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                            Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 mayavi.tools.mlab example



    Example code
   dims = [ 3 2 , 3 2 ]
   xmin , xmax , ymin , ymax = [ − 5 ,5 , − 5 ,5]
   x , y = s c i p y . mgrid [ xmin : xmax : dims [ 0 ] ∗ 1 j ,
                                 ymin : ymax : dims [ 1 ] ∗ 1 j ]
   x = x . astype ( ’ f ’ )
   y = y . astype ( ’ f ’ )
   u = cos ( x )
   v = sin ( y )
   w = scipy . zeros_like ( x )
   q u i v e r 3 d ( x , y , w, u , v , w)
   # Show an o u t l i n e .
   outline ()




                                              Prabhu Ramachandran       TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                           Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 mayavi.tools.mlab example


    Example code
    dims = [ 6 4 , 64 , 6 4 ]
    xmin , xmax , ymin , ymax , zmin , zmax = 
                                      [ − 5 ,5 , − 5 ,5 , − 5 ,5]
    x , y , z = numpy . o g r i d [ xmin : xmax : dims [ 0 ] ∗ 1 j ,
                                    ymin : ymax : dims [ 1 ] ∗ 1 j ,
                                    zmin : zmax : dims [ 2 ] ∗ 1 j ]
    x , y , z = [ t . astype ( ’ f ’ ) f o r t i n ( x , y , z ) ]

    s c a l a r s = x∗x ∗ 0.5 + y∗y + z∗z ∗ 2.0
    # Contour t h e data .
    contour3d ( s c a l a r s , c o n t o u r s =4 ,
                    s h o w _ s l ic e s =True )
    # Show an o u t l i n e .
    outline ()




                                             Prabhu Ramachandran       TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 More mayavi.tools.mlab demos




                More examples available in mayavi/tools/mlab.py
                source
                Demos!




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Introduction to graphics



                Visually represent things
                Fundamental elements: graphics primitives
                Two kinds: vector and raster graphics
                Vector: lines, circles, ellipses, splines, etc.
                Raster: pixels – dots
                Rendering: conversion of data into graphics primitives
                Representation on screen: 3D object on 2D screen




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Graphics primitives



                Point

                  Line
                                                                          Polygon

                Polyline
                                                                    Triangle strips


                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Physical Vision




                Objects, their properties (color, opacity, texture etc.)
                Light source
                Light rays
                Eye
                Brain: interpretation, vision




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Rendering


                Ray tracing
                         Image-order rendering
                         Slow (done in software)
                         More realistic
                Object order rendering
                         Faster
                         Hardware support
                         Less realistic but interactive
                Surface rendering: render surfaces (lines, triangles, polygons)
                Volume rendering: rendering “volumes” (fog, X-ray intensity,
                MRI data etc.)



                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Lights, camera, action!

                Colors: RGB (Red-Green-Blue), HSV (Hue-Saturation-Value)
                Opacity: 0.0 - transparent, 1.0 - opaque
                Lights:
                         Ambient light: light from surroundings
                         Diffuse lighting: reflection of light from object
                         Specular lighting: direct reflection of light source from shiny
                         object
                Camera: position, orientation, focal point and clipping plane
                Projection:
                         Parallel/orthographic: light rays enter parallel to camera
                         Perspective: Rays pass through a point – thus objects farther
                         away appear smaller
                Homogeneous coordinate systems are used (xh , yh , zh , wh )

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Practical aspects




                Bulk of functionality implemented in graphics libraries
                Various 2D graphics libraries (quite easy)
                Hardware acceleration for high performance and interactive
                usage
                OpenGL: powerful, hardware accelerated, 3D graphics library




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Scientific data



                Numbers from experiments and simulation
                Numbers of different kinds
                Space (1D, 2D, 3D, . . . , n-D)
                Surfaces and volumes
                Topology
                Geometry: CAD
                Functions of various dimensions (what are functions?)
                Scalar, Vector and Tensor fields




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Space



                Linear vector spaces
                The notion of dimensionality
                Not the number of components in a vector of the space!
                Maximum number of linearly independent vectors
                Some familiar examples:
                         Point - 0D
                         Line - 1D
                         2D Surface (embedded in a 3D surface) - 2D
                         Volumes - 3D




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Dimensionality example




                            Points



                                                                                          Surface



                        Wireframe

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Topology

       Topology: mathematics
                A branch of mathematics which studies the properties of
                geometrical forms which retain their identity under certain
                transformations, such as stretching or twisting, which are
                homeomorphic.

       – from the Collaborative International Dictionary of English

       Topology: networking
                Which hosts are directly connected to which other hosts
                in a network. Network layer processes need to consider
                the current network topology to be able to route packets
                to their final destination reliably and efficiently.

       – from the free On-line Dictionary of Computing

                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Topology and grids



                Layman definition: how are points of the space connected up
                to form a line/surface/volume
                Concept is of direct use in “grids”
                Grid in scientific computing = points + topology
                Space is broken into small “pieces” called
                         Cells
                         Elements
                Data can be associated with the points or cells




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Structured versus unstructured grids

       Structured grids
                Implicit topology associated with points
                Easiest example: a rectangular mesh
                Non-rectangular mesh certainly possible




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Structured versus unstructured grids
       Unstructured grids
                Explicit topology specification
                Specified via connectivity lists
                Different number of neighbors, different types of cells




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Different types of cells




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                        Introduction Quick graphics: visual and mlab Graphics primer Data and its representation


 Scalar, vector and tensor fields


                Associate a scalar/vector/tensor with every point of the space
                Scalar field: f (Rn ) → R
                Vector field: f (Rn ) → Rm
                Some examples:
                         Temperature distribution on a rod
                         Pressure distribution in room
                         Velocity field in room
                         Vorticity field in room
                         Stress tensor field on a surface
                Two aspects of field data, representation and visualization




                                         Prabhu Ramachandran        TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Introduction


                Open source, BSD style license
                High level library
                3D graphics, imaging and visualization
                Core implemented in C++ for speed
                Uses OpenGL for rendering
                Wrappers for Python, Tcl and Java
                Cross platform: *nix, Windows, and Mac OSX
                Around 40 developers worldwide
                Very powerful with lots of features/functionality



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 VTK: an overview




                Pipeline architecture
                Huge with over 900 classes
                Not trivial to learn
                Need to get the VTK book
                Reasonable learning curve




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                            VTK VTK data TVTK Creating Datasets from NumPy


 VTK / TVTK pipeline

                                            Source              Generates data


                                             Filter               Processes data



                                            Mapper                Graphics primitives
             Writer


                                                                Geometry, Texture,
                  Sinks                    Actor
                                                                Rendering properties

                                                                Renderer, RenderWindow,
                                           Display
                                                                Interactors, Camera, Lights


                                         Prabhu Ramachandran          TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Example VTK script
       import v t k
       # Source o b j e c t .
       cone = v t k . vtkConeSource ( )
       cone . Se t H e i g h t ( 3 . 0 )
       cone . SetRadius ( 1 . 0 )
       cone . S e t R e s o l u t i o n ( 1 0 )
       # The mapper .
       coneMapper = v t k . vtkPolyDataMapper ( )
       coneMapper . S e t I n p u t ( cone . GetOutput ( ) )
       # The a c t o r .
       coneActor = v t k . v t k A c t o r ( )
       coneActor . SetMapper ( coneMapper )
       # Set i t t o r e n d e r i n w i r e f r a m e
       coneActor . G e tP r o pe r t y ( ) . SetRepresentationToWireframe ( )


                                                    See TVTK example


                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Legacy VTK Data files



                Detailed documentation on this is available here:
                http://www.vtk.org/pdf/file-formats.pdf.
                VTK data files support the following Datasets.
                    1    Structured points.
                    2    Rectilinear grid.
                    3    Structured grid.
                    4    Unstructured grid.
                    5    Polygonal data.
                Binary and ASCII files are supported.




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 General structure

       # vtk DataFile Version 2.0
       A long string describing the file (256 chars)
       ASCII | BINARY
       DATASET [type]
       ...

       POINT_DATA n
       ...

       CELL_DATA n
       ...

                Point and cell data can be supplied together.
                n is the number of points or cells.
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Structured Points


       # vtk DataFile Version 2.0
       Structured points example.
       ASCII
       DATASET STRUCTURED_POINTS
       DIMENSIONS nx ny nz
       ORIGIN x0 y0 z0
       SPACING sx sy sz

                Important: There is an implicit ordering of points and cells.
                The X co-ordinate increases first, Y next and Z last.
                nx ≥ 1, ny ≥ 1, nz ≥ 1



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Rectilinear Grid

       # vtk DataFile Version 2.0
       Rectilinear grid example.
       ASCII
       DATASET RECTILINEAR_GRID
       DIMENSIONS nx ny nz
       X_COORDINATES nx [dataType]
       x0 x1 ... x(nx-1)
       Y_COORDINATES ny [dataType]
       y0 y1 ... y(ny-1)
       Z_COORDINATES nz [dataType]
       z0 z1 ... z(nz-1)

                Important: Implicit ordering as in structured points. The X
                co-ordinate increases first, Y next and Z last.
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Structured Grid

       # vtk DataFile Version 2.0
       Structured grid example.
       ASCII
       DATASET STRUCTURED_GRID
       DIMENSIONS nx ny nz
       POINTS N [dataType]
       x0 y0 z0
       x1 y0 z0
       x0 y1 z0
       x1 y1 z0
       x0 y0 z1
       ...
                Important: The X co-ordinate increases first, Y next and Z
                last.
                N = nx*ny*nz
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Polygonal data

       [ HEADER ]
       DATASET POLYDATA
       POINTS n dataType
       x0 y0 z0
       x1 y1 z1
       ...
       x(n-1) y(n-1) z(n-1)

       POLYGONS numPolygons size
       numPoints0 i0 j0 k0 ...
       numPoints1 i1 j1 k1 ...
       ...

                size = total number of connectivity indices.

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Unstructured grids

       [ HEADER ]
       DATASET UNSTRUCTURED_GRID
       POINTS n dataType
       x0 y0 z0
       ...
       x(n-1) y(n-1) z(n-1)

       CELLS n size
       numPoints0 i j k l ...
       numPoints1 i j k l ...
       ...

       CELL_TYPES n
       type0
       type1
       ...

                size = total number of connectivity indices.
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Dataset attributes




                Associated with each point/cell one may specify an attribute.
                VTK data files support scalar, vector and tensor attributes.
                Cell and point data attributes.
                Multiple attributes per same file.




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Scalar attributes


       SCALARS dataName dataType numComp
       LOOKUP_TABLE tableName
       s0
       s1
       ...

                dataName: any string with no whitespace (case sensitive!).
                dataType: usually float or double.
                numComp: optional and can be left as empty.
                tableName: use the value default.



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Vector attributes




       VECTORS dataName dataType
       v0x v0y v0z
       v1x v1y v1z
       ...

                dataName: any string with no whitespace (case sensitive!).
                dataType: usually float or double.




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Simple example
       # vtk DataFile Version 2.0
       Structured points example.
       ASCII
       DATASET STRUCTURED_POINTS
       DIMENSIONS 2 2 1
       ORIGIN 0.0 0.0 0.0
       SPACING 1.0 1.0 1.0

       POINT_DATA 4
       SCALARS Temperature float
       LOOKUP_TABLE default
       100 200
       300 400

       VECTORS          velocity float
       0.0 0.0          0.0
       1.0 0.0          0.0
       0.0 1.0          0.0
       1.0 1.0          0.0
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Issues with VTK




                API is not Pythonic for complex scripts
                Native array interface
                Using NumPy arrays with VTK: non-trivial and inelegant
                Native iterator interface
                Can’t be pickled
                GUI editors need to be “hand-made” (> 800 classes!)




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Introduction to TVTK


                “Traitified” and Pythonic wrapper atop VTK
                Elementary pickle support
                Get/SetAttribute() replaced with an attribute trait
                Handles numpy arrays/Python lists transparently
                Utility modules: pipeline browser, ivtk, mlab
                Envisage plugins for tvtk scene and pipeline browser
                BSD license
                Linux, Win32 and Mac OS X
                Unit tested



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Example TVTK script



       from enthought . t v t k . a p i import t v t k
       cone = t v t k . ConeSource ( h e i g h t = 3 . 0 , r a d i u s = 1 . 0 ,
                                                 r e s o l u t i o n =10)
       coneMapper = t v t k . PolyDataMapper ( i n p u t =cone . o u t p u t )
       p = t v t k . P r o p e r t y ( r e p r e s e n t a t i o n = ’w ’ )
       coneActor = t v t k . A c t o r ( mapper=coneMapper , p r o p e r t y =p )




                                                     See VTK example




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 The differences


              VTK                                                           TVTK
         import vtk                                      from enthought.tvtk.api import tvtk
     vtk.vtkConeSource                                             tvtk.ConeSource
       no constructor args                                         traits set on creation
      cone.GetHeight()                                                   cone.height
 cone.SetRepresentation()                                      cone.representation=’w’


                vtk3DWidget → ThreeDWidget
                Method names: consistent with ETS
                (lower_case_with_underscores)
                VTK class properties (Set/Get pairs or Getters): traits



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 TVTK and traits



                Attributes may be set on object creation
                Multiple properties may be set via set
                Handy access to properties
                Usual trait features (validation/notification)
                Visualization via automatic GUI
                tvtk objects have strict traits
                pickle and cPickle can be used




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Collections behave like sequences


       >>> ac = t v t k . A c t o r C o l l e c t i o n ( )
       >>> p r i n t l e n ( ac )
       0
       >>> ac . append ( t v t k . A c t o r ( ) )
       >>> p r i n t l e n ( ac )
       1
       >>> f o r i i n ac :
       ...       print i
       ...
       # [ Snip o u t p u t ]
       >>> ac [ − 1] = t v t k . A c t o r ( )
       >>> del ac [ 0 ]
       >>> p r i n t l e n ( ac )
       0




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Array handling

                All DataArray subclasses behave like Pythonic arrays:
                         support iteration over sequences, append, extend etc.
                Can set array using
                vtk_array.from_array(numpy_array)
                         Works with Python lists or a NumPy array
                Can get the array into a NumPy array via
                numpy_arr = vtk_array.to_array()
                Points and IdList: support these
                CellArray does not provide a sequence like protocol
                All methods and properties that accept a
                DataArray, Points etc. transparently accepts a NumPy
                array or a Python list!
                Most often these use views of the NumPy array!

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Array example
       Any method accepting DataArray, Points, IdList or CellArray
       instances can be passed a numpy array or a Python list!
       >>> from enthought . t v t k . a p i import t v t k
       >>> from numpy import a r r a y
       >>> p o i n t s = a r r a y ( [ [ 0 , 0 , 0 ] , [ 1 , 0 , 0 ] , [ 0 , 1 , 0 ] , [ 0 , 0 , 1 ] ] , ’ f ’ )
       >>> t r i a n g l e s = a r r a y ( [ [ 0 , 1 , 3 ] , [ 0 , 3 , 2 ] , [ 1 , 2 , 3 ] , [ 0 , 2 , 1 ] ] )
       >>> mesh = t v t k . PolyData ( )
       >>> mesh . p o i n t s = p o i n t s
       >>> mesh . p o l y s = t r i a n g l e s
       >>> t e mp e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ )
       >>> mesh . p o i n t _ d a t a . s c a l a r s = t e m pe r a tu r e
       >>> import o p e r a t o r # A r r a y ’ s are P y t h o n i c .
       >>> reduce ( o p e r a t o r . add , mesh . p o i n t _ d a t a . s c a l a r s , 0 . 0 )
       80.0
       >>> p t s = t v t k . P o i n t s ( ) # Demo o f f r o m _ a r r a y / t o _ a r r a y
       >>> p t s . f r o m _ a r r a y ( p o i n t s )
       >>> p r i n t p t s . t o _ a r r a y ( )


                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Array example: contrast with VTK
       VTK and arrays

               >>>     mesh = v t k . v t k P o l y D a t a ( )
               >>>     # Assume t h a t t h e p o i n t s and t r i a n g l e s are s e t .
               ...     sc = v t k . v t k F l o a t A r r a y ( )
               >>>     sc . SetNumberOfTuples ( 4 )
               >>>     sc . SetNumberOfComponents ( 1 )
               >>>     f o r i , temp i n enumerate ( te m p er a tu r es ) :
               ...          sc . SetValue ( i , temp )
               ...
               >>>     mesh . GetPointData ( ) . S e t S c a l a r s ( sc )


       Equivalent to (but more inefficient):
       TVTK and arrays

               >>> mesh . p o i n t _ d a t a . s c a l a r s = t e m pe r a tu r e


       TVTK: easier and more efficient!
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Some issues with array handling


                Details of array handling documented in
                tvtk/docs/README.txt
                Views and copies: a copy is made of the array in the following
                cases:
                         Python list is passed
                         Non-contiguous numpy array
                         Method requiring conversion to a vtkBitArray (rare)
                         Rarely: VTK data array expected and passed numpy array
                         types are different (rare)
                         CellArray always makes a copy on assignment
                         Use CellArray.set_cells() method to avoid copies
                         IdList always makes a copy
                         Warning: Resizing the TVTK array reallocates memory



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Summary of array issues



                DataArray, Points: don’t make copies usually
                Can safely delete references to a numpy array
                Cannot resize numpy array
                CellArray makes a copy unless set_cells is used
                Warning: Resizing the TVTK array reallocates memory: leads
                to a copy
                         Note: not a memory leak




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Overview




                An overview of creating datasets with TVTK and NumPy
                We consider simple examples
                Very handy when working with NumPy
                No need to create VTK data files
                PolyData, StructuredPoints, StructuredGrid,
                UnstructuredGrid




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 PolyData
       from enthought . t v t k . a p i import t v t k
       # The p o i n t s i n 3D .
       points = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ )
       # C o n n e c t i v i t y via i n d i c e s to the p o i n t s .
       t r i a n g l e s = array ( [ [ 0 , 1 , 3 ] , [0 ,3 ,2] , [1 ,2 ,3] , [ 0 , 2 , 1 ] ] )
       # C r e a t i n g t h e data o b j e c t .
       mesh = t v t k . PolyData ( )
       mesh . p o i n t s = p o i n t s # t h e p o i n t s
       mesh . p o l y s = t r i a n g l e s # t r i a n g l e s f o r c o n n e c t i v i t y .
       # For l i n e s / v e r t s use : mesh . l i n e s = l i n e s ; mesh . v e r t s = v e r t i c e s
       # Now c r e a t e some p o i n t data .
       t em p e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ )
       mesh . p o i n t _ d a t a . s c a l a r s = t em p e ra t u r e
       mesh . p o i n t _ d a t a . s c a l a r s . name = ’ t em p e ra t u r e ’
       # Some v e c t o r s .
       v e l o c i t y = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ )
       mesh . p o i n t _ d a t a . v e c t o r s = v e l o c i t y
       mesh . p o i n t _ d a t a . v e c t o r s . name = ’ v e l o c i t y ’
       # Thats i t !
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Structured Points: 2D
       # The s c a l a r v a l u e s .
       from numpy import arange , s q r t
       from s c i p y import s p e c i a l
       x = ( arange ( 5 0 . 0 ) − 2 5 ) / 2 . 0
       y = ( arange ( 5 0 . 0 ) − 2 5 ) / 2 . 0
       r = s q r t ( x [ : , None] ∗∗ 2+ y ∗∗ 2)
       z = 5.0 ∗ s p e c i a l . j 0 ( r ) # Bessel f u n c t i o n o f o r d e r 0
       # −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
       # Can ’ t s p e c i f y e x p l i c i t p o i n t s , t h e p o i n t s are i m p l i c i t .
       # The volume i s s p e c i f i e d u s i n g an o r i g i n , spacing and dimensions
       s p o i n t s = t v t k . S t r u c t u r e d P o i n t s ( o r i g i n =( − 12.5 , − 12.5 ,0) ,
                                                                   spacing = ( 0 . 5 , 0 . 5 , 1 ) ,
                                                                   dimensions = ( 5 0 , 5 0 , 1 ) )
       # Transpose t h e a r r a y data due t o VTK ’ s i m p l i c i t o r d e r i n g . VTK
       # assumes an i m p l i c i t o r d e r i n g o f t h e p o i n t s : X co− o r d i n a t e
       # i n c r e a s e s f i r s t , Y n e x t and Z l a s t . We f l a t t e n i t so t h e
       # number o f components i s 1 .
       spoints . point_data . scalars = z . T. f l a t t e n ( )
       s p o i n t s . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r ’

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Structured Points: 3D
       from numpy import a r r a y , o g r i d , s i n , r a v e l
       dims = a r r a y ( ( 1 2 8 , 128 , 1 2 8 ) )
       v o l = a r r a y ( ( − 5 . , 5 , −5, 5 , −5, 5 ) )
       origin = vol [ : : 2 ]
       spacing = ( v o l [ 1 : : 2 ] − o r i g i n ) / ( dims −1)
       xmin , xmax , ymin , ymax , zmin , zmax = v o l
       x , y , z = o g r i d [ xmin : xmax : dims [ 0 ] ∗ 1 j , ymin : ymax : dims [ 1 ] ∗ 1 j ,
                                      zmin : zmax : dims [ 2 ] ∗ 1 j ]
       x , y , z = [ t . astype ( ’ f ’ ) f o r t i n ( x , y , z ) ]
       s c a l a r s = s i n ( x∗y∗z ) / ( x∗y∗z )
       # −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
       s p o i n t s = t v t k . S t r u c t u r e d P o i n t s ( o r i g i n = o r i g i n , spacing =spacing ,
                                                                   dimensions=dims )
       # The copy makes t h e data c o n t i g u o u s and t h e t r a n s p o s e
       # makes i t s u i t a b l e f o r d i s p l a y v i a t v t k .
       s = s c a l a r s . t r a n s po s e ( ) . copy ( )
       spoints . point_data . scalars = ravel ( s )
       s p o i n t s . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r s ’


                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Structured Grid
       r = numpy . l i n s p a c e ( 1 , 10 , 25)
       t h e t a = numpy . l i n s p a c e ( 0 , 2 ∗ numpy . p i , 51)
       z = numpy . l i n s p a c e ( 0 , 5 , 25)
       # C r r e a t e an annulus .
       x_plane = ( cos ( t h e t a ) ∗ r [ : , None ] ) . r a v e l ( )
       y_plane = ( s i n ( t h e t a ) ∗ r [ : , None ] ) . r a v e l ( )
       p t s = empty ( [ l e n ( x_plane ) ∗ l e n ( h e i g h t ) , 3 ] )
       f o r i , z _ v a l i n enumerate ( z ) :
               s t a r t = i ∗ l e n ( x_plane )
               p l a n e _ p o i n t s = p t s [ s t a r t : s t a r t + l e n ( x_plane ) ]
               p l a n e _ p o i n t s [ : , 0 ] = x_plane
               p l a n e _ p o i n t s [ : , 1 ] = y_plane
               plane_points [ : , 2 ] = z_val
       s g r i d = t v t k . S t r u c t u r e d G r i d ( dimensions =(51 , 25 , 2 5 ) )
       sgrid . points = pts
       s = numpy . s q r t ( p t s [ : , 0 ] ∗ ∗ 2 + p t s [ : , 1 ] ∗ ∗ 2 + p t s [ : , 2 ] ∗ ∗ 2 )
       s g r i d . p o i n t _ d a t a . s c a l a r s = numpy . r a v e l ( s . copy ( ) )
       s g r i d . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r s ’


                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Unstructured Grid
       from numpy import a r r a y
       points = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ )
       t e t s = array ( [ [ 0 , 1 , 2 , 3 ] ] )
       t e t _ t y p e = t v t k . T e t r a ( ) . c e l l _ t y p e # VTK_TETRA == 10
       #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
       ug = t v t k . U n s t r u c t u r e d G r i d ( )
       ug . p o i n t s = p o i n t s
       # T h i s s e t s up t h e c e l l s .
       ug . s e t _ c e l l s ( t e t _ t y p e , t e t s )
       # A t t r i b u t e data .
       t em p e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ )
       ug . p o i n t _ d a t a . s c a l a r s = te m p er a t ur e
       ug . p o i n t _ d a t a . s c a l a r s . name = ’ t em p e r at u r e ’
       # Some v e c t o r s .
       v e l o c i t y = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ )
       ug . p o i n t _ d a t a . v e c t o r s = v e l o c i t y
       ug . p o i n t _ d a t a . v e c t o r s . name = ’ v e l o c i t y ’


                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Scene widget, pipeline browser and ivtk



                enthought.pyface.tvtk: scene widget
                         Provides a Pyface tvtk render window interactor
                         Supports VTK widgets
                         Picking, lighting
                enthought.tvtk.pipeline.browser
                         Tree-view of the tvtk pipeline
                enthought.tvtk.tools.ivtk
                         Like MayaVi-1’s ivtk module
                         Convenient, easy to use, viewer for tvtk




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 mlab interface



                enthought.tvtk.tools.mlab
                Provides Matlab like 3d visualization conveniences
                API mirrors that of Octaviz: http://octaviz.sf.net
                Place different Glyphs at points
                3D lines, meshes and surfaces
                Titles, outline




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                      VTK VTK data TVTK Creating Datasets from NumPy


 Envisage plugins




                Envisage: an extensible plugin based application framework
                enthought.tvtk.plugins.scene
                         Embed a TVTK render window
                         Features all goodies in enthought.pyface.tvtk
                enthought.tvtk.plugins.browser




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Features


                MayaVi-2: built atop Traits, TVTK and Envisage
                Focus on building the model right
                Uses traits heavily
                MayaVi-2 is an Envisage plugin
                Workbench plugin for GUI
                tvtk scene plugin for TVTK based rendering
                View/Controller: “free” with traits and Envisage
                MVC
                Uses a simple, persistence engine




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Example view of MayaVi-2

                                                                                                      TVTK
                                                                                                      Scene
Tree
View




Object
Editor



                                                                                                   Python
                                                                                                   shell




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 The big picture

                Mayavi Engine

                         TVTK Scene

                             Source

                               Filter
                               ModuleManager
                                Lookup tables

                                 List of Modules




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Class hierarchy




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Class hierarchy




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Containership relationship




                Engine contains: list of Scene
                Scene contains: list of Source
                Source contains: list of Filter and/or ModuleManager
                ModuleManager contains: list of Module
                Module contains: list of Component



                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Outline
        1    Introduction to visualization
                Introduction
                Quick graphics: visual and mlab
                Graphics primer
                Data and its representation
        2    Visualization libraries
                VTK
                VTK data
                TVTK
                Creating Datasets from NumPy
        3    MayaVi2
               Introduction
               Internals
               Examples

                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Interactively scripting MayaVi-2


                Drag and drop
                The mayavi instance
                >>> mayavi . new_scene ( ) # Create a new scene
                >>> mayavi . s a v e _ v i s u a l i z a t i o n ( ’ f o o . mv2 ’ )

                mayavi.engine:
                >>>       e = mayavi . engine # Get t h e MayaVi engine .
                >>>       e . scenes [ 0 ] # f i r s t scene i n mayavi .
                >>>       e . scenes [ 0 ] . c h i l d r e n [ 0 ]
                >>>       # f i r s t scene ’ s f i r s t source ( v t k f i l e )




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Scripting . . .



                mayavi: instance of
                enthought.mayavi.script.Script
                Traits: application, engine
                Methods (act on current object/scene):
                     new_scene()
                     add_source(source)
                     add_filter(filter)
                     add_module(m2_module)
                     save/load_visualization(fname)




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Scripting example
       from enthought . mayavi . sources . v t k _ f i l e _ r e a d e r import VTKFileReader
       from enthought . mayavi . modules . o u t l i n e import O u t l i n e
       from enthought . mayavi . modules . g r i d _ p l a n e import GridPlane

       from enthought . t v t k . a p i import t v t k
       mayavi . new_scene ( )
       s r c = VTKFileReader ( )
       src . i n i t i a l i z e ( ’ heart . vtk ’ )
       mayavi . add_source ( s r c )
       mayavi . add_module ( O u t l i n e ( ) )
       g = GridPlane ( )
       g . grid_plane . axis = ’ x ’
       mayavi . add_module ( g )
       g = GridPlane ( )
       g . grid_plane . axis = ’ y ’
       mayavi . add_module ( g )
       g = GridPlane ( )
       g . grid_plane . axis = ’ z ’
       mayavi . add_module ( g )
                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 Stand alone scripts



                Two approaches to doing this:
                         Approach 1:
                                 Recommended way: simple interactive script save to a
                                 script.py file
                                 Run it like mayavi2 -x script.py
                                 Advantages: easy to write, can edit from mayavi and rerun
                                 Disadvantages: not a stand-alone Python script
                         Approach 2:
                                 Subclass enthought.mayavi.app.Mayavi
                                 Override the run() method
                                 self.script is a Script instance




                                         Prabhu Ramachandran    TVTK and MayaVi2
Introduction to visualization Visualization libraries MayaVi2
                                                                                   Introduction Internals Examples


 ipython -wthread



       from enthought . mayavi . app import Mayavi
       m = Mayavi ( )
       m. main ( )
       m. s c r i p t . new_scene ( )
       # ‘m. s c r i p t ‘ i s t h e mayavi . s c r i p t . S c r i p t i n s t a n c e
       engine = m. s c r i p t . engine
       # S c r i p t as u s u a l . . .




                                         Prabhu Ramachandran    TVTK and MayaVi2

Weitere ähnliche Inhalte

Was ist angesagt?

Epäsuorat kysymykset ruotsin kielessä
Epäsuorat kysymykset ruotsin kielessäEpäsuorat kysymykset ruotsin kielessä
Epäsuorat kysymykset ruotsin kielessäjomppa68
 
Technical aspect of hrct; normal lung anatomy & hrct findings of lung disease
Technical aspect of hrct; normal lung anatomy & hrct findings of lung diseaseTechnical aspect of hrct; normal lung anatomy & hrct findings of lung disease
Technical aspect of hrct; normal lung anatomy & hrct findings of lung diseaseSarbesh Tiwari
 
Functional magnetic resonance imaging-fMRI
Functional magnetic resonance imaging-fMRIFunctional magnetic resonance imaging-fMRI
Functional magnetic resonance imaging-fMRIREMIX MAHARJAN
 
Radiological anatomy of the brain
Radiological anatomy of the brainRadiological anatomy of the brain
Radiological anatomy of the brainMohamed Shaaban
 
Imaging of Synovitis in OA
Imaging of Synovitis in OAImaging of Synovitis in OA
Imaging of Synovitis in OAOARSI
 
Presentation1, role of mri imaging in pulmonary nodules.
Presentation1, role of mri imaging in pulmonary nodules.Presentation1, role of mri imaging in pulmonary nodules.
Presentation1, role of mri imaging in pulmonary nodules.Abdellah Nazeer
 
Trauma Ultrasound: What you need to know
Trauma Ultrasound: What you need to knowTrauma Ultrasound: What you need to know
Trauma Ultrasound: What you need to knowAdrian Wong
 
Radionucleide imaging of the brain
Radionucleide imaging of the brainRadionucleide imaging of the brain
Radionucleide imaging of the brainYassera Awan
 
Gifted Advocacy - How to be Your Child's Best Advocate
Gifted Advocacy - How to be Your Child's Best AdvocateGifted Advocacy - How to be Your Child's Best Advocate
Gifted Advocacy - How to be Your Child's Best AdvocateGiftedkids.ie
 
Hepato portal doppler ultrasound
Hepato portal doppler ultrasoundHepato portal doppler ultrasound
Hepato portal doppler ultrasoundRavi patel
 
Presentation1 radiological film reading of wrist joint.
Presentation1 radiological film reading of wrist joint.Presentation1 radiological film reading of wrist joint.
Presentation1 radiological film reading of wrist joint.Abdellah Nazeer
 
Imaging in covid 19
Imaging in covid 19Imaging in covid 19
Imaging in covid 19LALIT KARKI
 
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...Dr. Jakab András
 
Ct autopsy 2008 - 02 - 22 stan
Ct autopsy   2008 - 02 - 22 stanCt autopsy   2008 - 02 - 22 stan
Ct autopsy 2008 - 02 - 22 stanAnil Aggrawal
 

Was ist angesagt? (17)

Epäsuorat kysymykset ruotsin kielessä
Epäsuorat kysymykset ruotsin kielessäEpäsuorat kysymykset ruotsin kielessä
Epäsuorat kysymykset ruotsin kielessä
 
Technical aspect of hrct; normal lung anatomy & hrct findings of lung disease
Technical aspect of hrct; normal lung anatomy & hrct findings of lung diseaseTechnical aspect of hrct; normal lung anatomy & hrct findings of lung disease
Technical aspect of hrct; normal lung anatomy & hrct findings of lung disease
 
Functional magnetic resonance imaging-fMRI
Functional magnetic resonance imaging-fMRIFunctional magnetic resonance imaging-fMRI
Functional magnetic resonance imaging-fMRI
 
Radiological anatomy of the brain
Radiological anatomy of the brainRadiological anatomy of the brain
Radiological anatomy of the brain
 
X ray chest
X ray chest X ray chest
X ray chest
 
Imaging of Synovitis in OA
Imaging of Synovitis in OAImaging of Synovitis in OA
Imaging of Synovitis in OA
 
Presentation1, role of mri imaging in pulmonary nodules.
Presentation1, role of mri imaging in pulmonary nodules.Presentation1, role of mri imaging in pulmonary nodules.
Presentation1, role of mri imaging in pulmonary nodules.
 
Trauma Ultrasound: What you need to know
Trauma Ultrasound: What you need to knowTrauma Ultrasound: What you need to know
Trauma Ultrasound: What you need to know
 
Pediatric neuroimaging
Pediatric neuroimagingPediatric neuroimaging
Pediatric neuroimaging
 
Radionucleide imaging of the brain
Radionucleide imaging of the brainRadionucleide imaging of the brain
Radionucleide imaging of the brain
 
Gifted Advocacy - How to be Your Child's Best Advocate
Gifted Advocacy - How to be Your Child's Best AdvocateGifted Advocacy - How to be Your Child's Best Advocate
Gifted Advocacy - How to be Your Child's Best Advocate
 
Hepato portal doppler ultrasound
Hepato portal doppler ultrasoundHepato portal doppler ultrasound
Hepato portal doppler ultrasound
 
Introduction to fMRI
Introduction to fMRIIntroduction to fMRI
Introduction to fMRI
 
Presentation1 radiological film reading of wrist joint.
Presentation1 radiological film reading of wrist joint.Presentation1 radiological film reading of wrist joint.
Presentation1 radiological film reading of wrist joint.
 
Imaging in covid 19
Imaging in covid 19Imaging in covid 19
Imaging in covid 19
 
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...
Week 2. Diffusion magnetic resonance imaging, tractography, mapping the brain...
 
Ct autopsy 2008 - 02 - 22 stan
Ct autopsy   2008 - 02 - 22 stanCt autopsy   2008 - 02 - 22 stan
Ct autopsy 2008 - 02 - 22 stan
 

Ähnlich wie 3D visualization with VTVK and MayaVi2

Introduction to Digital Image Processing Using MATLAB
Introduction to Digital Image Processing Using MATLABIntroduction to Digital Image Processing Using MATLAB
Introduction to Digital Image Processing Using MATLABRay Phan
 
20110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture0220110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture02Computer Science Club
 
Build Your Own 3D Scanner: 3D Scanning with Structured Lighting
Build Your Own 3D Scanner: 3D Scanning with Structured LightingBuild Your Own 3D Scanner: 3D Scanning with Structured Lighting
Build Your Own 3D Scanner: 3D Scanning with Structured LightingDouglas Lanman
 
An approach to empirical Optical Character recognition paradigm using Multi-L...
An approach to empirical Optical Character recognition paradigm using Multi-L...An approach to empirical Optical Character recognition paradigm using Multi-L...
An approach to empirical Optical Character recognition paradigm using Multi-L...Abdullah al Mamun
 
Creating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector GraphicsCreating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector GraphicsDavid Keener
 
Integrating R with the CDK: Enhanced Chemical Data Mining
Integrating R with the CDK: Enhanced Chemical Data MiningIntegrating R with the CDK: Enhanced Chemical Data Mining
Integrating R with the CDK: Enhanced Chemical Data MiningRajarshi Guha
 
Python image processing_Python image processing.pptx
Python image processing_Python image processing.pptxPython image processing_Python image processing.pptx
Python image processing_Python image processing.pptxshashikant484397
 
Image processing for robotics
Image processing for roboticsImage processing for robotics
Image processing for roboticsSALAAMCHAUS
 
Tears for quantum fears
Tears for quantum fearsTears for quantum fears
Tears for quantum fearsMark Carney
 
Digital image processing
Digital image processingDigital image processing
Digital image processingSubha Selvam
 

Ähnlich wie 3D visualization with VTVK and MayaVi2 (12)

Introduction to Digital Image Processing Using MATLAB
Introduction to Digital Image Processing Using MATLABIntroduction to Digital Image Processing Using MATLAB
Introduction to Digital Image Processing Using MATLAB
 
OpenCV+Android.pptx
OpenCV+Android.pptxOpenCV+Android.pptx
OpenCV+Android.pptx
 
20110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture0220110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture02
 
Build Your Own 3D Scanner: 3D Scanning with Structured Lighting
Build Your Own 3D Scanner: 3D Scanning with Structured LightingBuild Your Own 3D Scanner: 3D Scanning with Structured Lighting
Build Your Own 3D Scanner: 3D Scanning with Structured Lighting
 
An approach to empirical Optical Character recognition paradigm using Multi-L...
An approach to empirical Optical Character recognition paradigm using Multi-L...An approach to empirical Optical Character recognition paradigm using Multi-L...
An approach to empirical Optical Character recognition paradigm using Multi-L...
 
Creating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector GraphicsCreating Custom Charts With Ruby Vector Graphics
Creating Custom Charts With Ruby Vector Graphics
 
Integrating R with the CDK: Enhanced Chemical Data Mining
Integrating R with the CDK: Enhanced Chemical Data MiningIntegrating R with the CDK: Enhanced Chemical Data Mining
Integrating R with the CDK: Enhanced Chemical Data Mining
 
Python image processing_Python image processing.pptx
Python image processing_Python image processing.pptxPython image processing_Python image processing.pptx
Python image processing_Python image processing.pptx
 
Image processing for robotics
Image processing for roboticsImage processing for robotics
Image processing for robotics
 
Tears for quantum fears
Tears for quantum fearsTears for quantum fears
Tears for quantum fears
 
Digital image processing
Digital image processingDigital image processing
Digital image processing
 
Ass5
Ass5Ass5
Ass5
 

Mehr von zukun

My lyn tutorial 2009
My lyn tutorial 2009My lyn tutorial 2009
My lyn tutorial 2009zukun
 
ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVzukun
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Informationzukun
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statisticszukun
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibrationzukun
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionzukun
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluationzukun
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-softwarezukun
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptorszukun
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectorszukun
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-introzukun
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video searchzukun
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video searchzukun
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video searchzukun
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learningzukun
 
Advances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer visionAdvances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer visionzukun
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick startzukun
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysiszukun
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structureszukun
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities zukun
 

Mehr von zukun (20)

My lyn tutorial 2009
My lyn tutorial 2009My lyn tutorial 2009
My lyn tutorial 2009
 
ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCV
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Information
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statistics
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibration
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer vision
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluation
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-software
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptors
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectors
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-intro
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video search
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video search
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video search
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learning
 
Advances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer visionAdvances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer vision
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick start
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysis
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structures
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities
 

Kürzlich hochgeladen

call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 

Kürzlich hochgeladen (20)

Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 

3D visualization with VTVK and MayaVi2

  • 1. Introduction to visualization Visualization libraries MayaVi2 3D visualization with TVTK and MayaVi2 Prabhu Ramachandran Department of Aerospace Engineering IIT Bombay 19, July 2007 Prabhu Ramachandran TVTK and MayaVi2
  • 2. Introduction to visualization Visualization libraries MayaVi2 Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 3. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 4. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation What is visualization? Visualize: dictionary meaning (Webster) 1 To make visual, or visible. 2 to see in the imagination; to form a mental image of. Visualization: graphics Making a visible presentation of numerical data, particularly a graphical one. This might include anything from a simple X-Y graph of one dependent variable against one independent variable to a virtual reality which allows you to fly around the data. – from the Free On-line Dictionary of Computing Prabhu Ramachandran TVTK and MayaVi2
  • 5. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Introduction Cross-platform 2D/3D visualization for scientists and engineers Almost all 2D plotting: matplotlib and Chaco More complex 2D/3D visualization Unfortunately, not as easy as 2D (yet) Most scientists: not interested in details of visualization need to get the job done ASAP have enough work as it is! Fair enough: not often do we need to know internals of matplotlib! Prabhu Ramachandran TVTK and MayaVi2
  • 6. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 7. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Introduction to visual from enthought.tvtk.tools import visual visual: based on VPython’s visual but uses VTK Makes it very easy to create simple 3D visualizations API shamelessly stolen fron VPython (and for good reason) Implemented by Raashid Baig Differences from VPython: Slight API differences from VPython Does not require special interpreter Works with ipython -wthread Uses traits Does not rely on special interpreter for looping Much(?) Slower Prabhu Ramachandran TVTK and MayaVi2
  • 8. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Simple visual example Example code from enthought . t v t k . t o o l s import v i s u a l s1 = v i s u a l . sphere ( pos = ( 0 , 0 , 0 ) , radius =0.5 , c o l o r = v i s u a l . c o l o r . red ) s2 = v i s u a l . sphere ( pos = ( 1 , 0 , 0 ) , r a d i u s =0.25 , c o l o r = v i s u a l . c o l o r . green ) b = v i s u a l . box ( pos = ( 0 . 5 , 0 . 5 , 0 . 5 ) , size =(0.5 , 0.5 , 0.5) , representation= ’ s ’ , c o l o r = v i s u a l . c o l o r . blue ) Prabhu Ramachandran TVTK and MayaVi2
  • 9. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation visual: bouncing ball Example code from enthought . t v t k . t o o l s import v i s u a l l w a l l = v i s u a l . box ( pos =( − 4.5 , 0 , 0 ) , size =(0.1 ,2 ,2) , c o l o r = v i s u a l . c o l o r . red ) r w a l l = v i s u a l . box ( pos = ( 4 . 5 , 0 , 0 ) , size =(0.1 ,2 ,2) , c o l o r = v i s u a l . c o l o r . red ) b a l l = v i s u a l . sphere ( pos = ( 0 , 0 , 0 ) , r a d i u s = 0 . 5 , t =0.0 , dt =0.5) b a l l . v = visual . vector (1.0 , 0.0 , 0.0) def anim ( ) : b a l l . t = b a l l . t + b a l l . dt b a l l . pos = b a l l . pos + b a l l . v∗ b a l l . d t i f not ( 4 . 0 > b a l l . x > − 4.0): b a l l . v . x = −b a l l . v . x # I t e r a t e t h e f u n c t i o n w i t h o u t b l o c k i n g t h e GUI # f i r s t arg : t i m e p e r i o d t o w a i t i n m i l l i s e c s i t e r = v i s u a l . i t e r a t e ( 1 0 0 , anim ) # Stop , r e s t a r t i t e r . s t o p _ a n i m a t i o n = True i t e r . s t a r t _ a n i m a t i o n = True Prabhu Ramachandran TVTK and MayaVi2
  • 10. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation visual: a curve Example code from enthought . t v t k . t o o l s import v i s u a l import numpy t = numpy . l i n s p a c e ( 0 , 6∗ p i , 1000) t = numpy . l i n s p a c e ( 0 , 6∗numpy . p i , 1000) p t s = numpy . zeros ( ( 1 0 0 0 , 3 ) ) p t s [ : , 0 ] = 0.1 ∗ t ∗numpy . cos ( t ) p t s [ : , 1 ] = 0.1 ∗ t ∗numpy . s i n ( t ) p t s [ : , 2 ] = 0.25 ∗ t c = v i s u a l . curve ( p o i n t s = pts , c o l o r = ( 1 , 0 , 0 ) , radius =0.05) # Append ( o r extend ) p o i n t s . c . append ( [ 2 , 0 , 0 ] ) # Remove p o i n t s . c . p o i n t s = c . p o i n t s [: − 1] Prabhu Ramachandran TVTK and MayaVi2
  • 11. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation More visual demos More examples available in tvtk/examples/visual directory More demos! Prabhu Ramachandran TVTK and MayaVi2
  • 12. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Introduction to tvtk.tools.mlab enthought.tvtk.tools.mlab Provides Matlab like 3d visualization conveniences Visual OTOH is handy for simpler graphics API mirrors that of Octaviz: http://octaviz.sf.net Place different Glyphs at points 3D lines, meshes and surfaces Titles, outline Prabhu Ramachandran TVTK and MayaVi2
  • 13. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation tvtk.mlab: example Example code from enthought . t v t k . t o o l s import mlab from s c i p y import ∗ def f ( x , y ) : r e t u r n s i n ( x+y ) + s i n (2 ∗ x − y ) + cos (3 ∗ x+4∗ y ) x = l i n s p a c e ( − 5, 5 , 200) y = l i n s p a c e ( − 5, 5 , 200) f i g = mlab . f i g u r e ( ) s = mlab . SurfRegularC ( x , y , f ) f i g . add ( s ) f i g . pop ( ) x = l i n s p a c e ( − 5, 5 , 100) y = l i n s p a c e ( − 5, 5 , 100) s = mlab . SurfRegularC ( x , y , f ) f i g . add ( s ) Prabhu Ramachandran TVTK and MayaVi2
  • 14. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation tvtk.mlab: example Example code from enthought . t v t k . t o o l s import mlab from s c i p y import p i , s i n , cos , mgrid # Make t h e data dphi , d t h e t a = p i / 2 5 0 . 0 , p i / 2 5 0 . 0 [ phi , t h e t a ] = mgrid [ 0 : p i + d p h i ∗ 1 . 5 : dphi , 0:2 ∗ p i + d t h e t a ∗ 1 . 5 : d t h e t a ] m0 = 4 ; m1 = 3 ; m2 = 2 ; m3 = 3 ; m4 = 6 ; m5 = 2 ; m6 = 6 ; m7 = 4 ; r = s i n (m0∗ p h i ) ∗∗m1 + cos (m2∗ p h i ) ∗∗m3 + s i n (m4∗ t h e t a ) ∗∗m5 + cos (m6∗ t h e t a ) ∗∗m7 x = r ∗ s i n ( p h i ) ∗ cos ( t h e t a ) y = r ∗cos ( p h i ) z = r ∗ s i n ( p h i )∗ s i n ( t h e t a ) ; # Plot i t ! f i g = mlab . f i g u r e ( ) s = mlab . S u r f ( x , y , z , z ) f i g . add ( s ) Prabhu Ramachandran TVTK and MayaVi2
  • 15. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation More tvtk.tools.mlab demos More examples available in tvtk/tools/mlab.py source Demos! Prabhu Ramachandran TVTK and MayaVi2
  • 16. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Introduction to mayavi.tools.mlab enthought.mayavi.tools.mlab Provides Matlab like 3d visualization conveniences This one uses MayaVi Makes it more powerful (easier to use and extend) than the tvtk version Current API somewhat similar to tvtk.mlab API still under development: will change for the better Gael Varoquaux helping with current development/design Prabhu Ramachandran TVTK and MayaVi2
  • 17. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation mayavi.tools.mlab example Example code dims = [ 3 2 , 3 2 ] xmin , xmax , ymin , ymax = [ − 5 ,5 , − 5 ,5] x , y = s c i p y . mgrid [ xmin : xmax : dims [ 0 ] ∗ 1 j , ymin : ymax : dims [ 1 ] ∗ 1 j ] x = x . astype ( ’ f ’ ) y = y . astype ( ’ f ’ ) u = cos ( x ) v = sin ( y ) w = scipy . zeros_like ( x ) q u i v e r 3 d ( x , y , w, u , v , w) # Show an o u t l i n e . outline () Prabhu Ramachandran TVTK and MayaVi2
  • 18. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation mayavi.tools.mlab example Example code dims = [ 6 4 , 64 , 6 4 ] xmin , xmax , ymin , ymax , zmin , zmax = [ − 5 ,5 , − 5 ,5 , − 5 ,5] x , y , z = numpy . o g r i d [ xmin : xmax : dims [ 0 ] ∗ 1 j , ymin : ymax : dims [ 1 ] ∗ 1 j , zmin : zmax : dims [ 2 ] ∗ 1 j ] x , y , z = [ t . astype ( ’ f ’ ) f o r t i n ( x , y , z ) ] s c a l a r s = x∗x ∗ 0.5 + y∗y + z∗z ∗ 2.0 # Contour t h e data . contour3d ( s c a l a r s , c o n t o u r s =4 , s h o w _ s l ic e s =True ) # Show an o u t l i n e . outline () Prabhu Ramachandran TVTK and MayaVi2
  • 19. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation More mayavi.tools.mlab demos More examples available in mayavi/tools/mlab.py source Demos! Prabhu Ramachandran TVTK and MayaVi2
  • 20. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 21. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Introduction to graphics Visually represent things Fundamental elements: graphics primitives Two kinds: vector and raster graphics Vector: lines, circles, ellipses, splines, etc. Raster: pixels – dots Rendering: conversion of data into graphics primitives Representation on screen: 3D object on 2D screen Prabhu Ramachandran TVTK and MayaVi2
  • 22. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Graphics primitives Point Line Polygon Polyline Triangle strips Prabhu Ramachandran TVTK and MayaVi2
  • 23. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Physical Vision Objects, their properties (color, opacity, texture etc.) Light source Light rays Eye Brain: interpretation, vision Prabhu Ramachandran TVTK and MayaVi2
  • 24. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Rendering Ray tracing Image-order rendering Slow (done in software) More realistic Object order rendering Faster Hardware support Less realistic but interactive Surface rendering: render surfaces (lines, triangles, polygons) Volume rendering: rendering “volumes” (fog, X-ray intensity, MRI data etc.) Prabhu Ramachandran TVTK and MayaVi2
  • 25. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Lights, camera, action! Colors: RGB (Red-Green-Blue), HSV (Hue-Saturation-Value) Opacity: 0.0 - transparent, 1.0 - opaque Lights: Ambient light: light from surroundings Diffuse lighting: reflection of light from object Specular lighting: direct reflection of light source from shiny object Camera: position, orientation, focal point and clipping plane Projection: Parallel/orthographic: light rays enter parallel to camera Perspective: Rays pass through a point – thus objects farther away appear smaller Homogeneous coordinate systems are used (xh , yh , zh , wh ) Prabhu Ramachandran TVTK and MayaVi2
  • 26. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Practical aspects Bulk of functionality implemented in graphics libraries Various 2D graphics libraries (quite easy) Hardware acceleration for high performance and interactive usage OpenGL: powerful, hardware accelerated, 3D graphics library Prabhu Ramachandran TVTK and MayaVi2
  • 27. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 28. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Scientific data Numbers from experiments and simulation Numbers of different kinds Space (1D, 2D, 3D, . . . , n-D) Surfaces and volumes Topology Geometry: CAD Functions of various dimensions (what are functions?) Scalar, Vector and Tensor fields Prabhu Ramachandran TVTK and MayaVi2
  • 29. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Space Linear vector spaces The notion of dimensionality Not the number of components in a vector of the space! Maximum number of linearly independent vectors Some familiar examples: Point - 0D Line - 1D 2D Surface (embedded in a 3D surface) - 2D Volumes - 3D Prabhu Ramachandran TVTK and MayaVi2
  • 30. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Dimensionality example Points Surface Wireframe Prabhu Ramachandran TVTK and MayaVi2
  • 31. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Topology Topology: mathematics A branch of mathematics which studies the properties of geometrical forms which retain their identity under certain transformations, such as stretching or twisting, which are homeomorphic. – from the Collaborative International Dictionary of English Topology: networking Which hosts are directly connected to which other hosts in a network. Network layer processes need to consider the current network topology to be able to route packets to their final destination reliably and efficiently. – from the free On-line Dictionary of Computing Prabhu Ramachandran TVTK and MayaVi2
  • 32. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Topology and grids Layman definition: how are points of the space connected up to form a line/surface/volume Concept is of direct use in “grids” Grid in scientific computing = points + topology Space is broken into small “pieces” called Cells Elements Data can be associated with the points or cells Prabhu Ramachandran TVTK and MayaVi2
  • 33. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Structured versus unstructured grids Structured grids Implicit topology associated with points Easiest example: a rectangular mesh Non-rectangular mesh certainly possible Prabhu Ramachandran TVTK and MayaVi2
  • 34. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Structured versus unstructured grids Unstructured grids Explicit topology specification Specified via connectivity lists Different number of neighbors, different types of cells Prabhu Ramachandran TVTK and MayaVi2
  • 35. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Different types of cells Prabhu Ramachandran TVTK and MayaVi2
  • 36. Introduction to visualization Visualization libraries MayaVi2 Introduction Quick graphics: visual and mlab Graphics primer Data and its representation Scalar, vector and tensor fields Associate a scalar/vector/tensor with every point of the space Scalar field: f (Rn ) → R Vector field: f (Rn ) → Rm Some examples: Temperature distribution on a rod Pressure distribution in room Velocity field in room Vorticity field in room Stress tensor field on a surface Two aspects of field data, representation and visualization Prabhu Ramachandran TVTK and MayaVi2
  • 37. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 38. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Introduction Open source, BSD style license High level library 3D graphics, imaging and visualization Core implemented in C++ for speed Uses OpenGL for rendering Wrappers for Python, Tcl and Java Cross platform: *nix, Windows, and Mac OSX Around 40 developers worldwide Very powerful with lots of features/functionality Prabhu Ramachandran TVTK and MayaVi2
  • 39. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy VTK: an overview Pipeline architecture Huge with over 900 classes Not trivial to learn Need to get the VTK book Reasonable learning curve Prabhu Ramachandran TVTK and MayaVi2
  • 40. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy VTK / TVTK pipeline Source Generates data Filter Processes data Mapper Graphics primitives Writer Geometry, Texture, Sinks Actor Rendering properties Renderer, RenderWindow, Display Interactors, Camera, Lights Prabhu Ramachandran TVTK and MayaVi2
  • 41. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Example VTK script import v t k # Source o b j e c t . cone = v t k . vtkConeSource ( ) cone . Se t H e i g h t ( 3 . 0 ) cone . SetRadius ( 1 . 0 ) cone . S e t R e s o l u t i o n ( 1 0 ) # The mapper . coneMapper = v t k . vtkPolyDataMapper ( ) coneMapper . S e t I n p u t ( cone . GetOutput ( ) ) # The a c t o r . coneActor = v t k . v t k A c t o r ( ) coneActor . SetMapper ( coneMapper ) # Set i t t o r e n d e r i n w i r e f r a m e coneActor . G e tP r o pe r t y ( ) . SetRepresentationToWireframe ( ) See TVTK example Prabhu Ramachandran TVTK and MayaVi2
  • 42. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 43. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Legacy VTK Data files Detailed documentation on this is available here: http://www.vtk.org/pdf/file-formats.pdf. VTK data files support the following Datasets. 1 Structured points. 2 Rectilinear grid. 3 Structured grid. 4 Unstructured grid. 5 Polygonal data. Binary and ASCII files are supported. Prabhu Ramachandran TVTK and MayaVi2
  • 44. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy General structure # vtk DataFile Version 2.0 A long string describing the file (256 chars) ASCII | BINARY DATASET [type] ... POINT_DATA n ... CELL_DATA n ... Point and cell data can be supplied together. n is the number of points or cells. Prabhu Ramachandran TVTK and MayaVi2
  • 45. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Structured Points # vtk DataFile Version 2.0 Structured points example. ASCII DATASET STRUCTURED_POINTS DIMENSIONS nx ny nz ORIGIN x0 y0 z0 SPACING sx sy sz Important: There is an implicit ordering of points and cells. The X co-ordinate increases first, Y next and Z last. nx ≥ 1, ny ≥ 1, nz ≥ 1 Prabhu Ramachandran TVTK and MayaVi2
  • 46. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Rectilinear Grid # vtk DataFile Version 2.0 Rectilinear grid example. ASCII DATASET RECTILINEAR_GRID DIMENSIONS nx ny nz X_COORDINATES nx [dataType] x0 x1 ... x(nx-1) Y_COORDINATES ny [dataType] y0 y1 ... y(ny-1) Z_COORDINATES nz [dataType] z0 z1 ... z(nz-1) Important: Implicit ordering as in structured points. The X co-ordinate increases first, Y next and Z last. Prabhu Ramachandran TVTK and MayaVi2
  • 47. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Structured Grid # vtk DataFile Version 2.0 Structured grid example. ASCII DATASET STRUCTURED_GRID DIMENSIONS nx ny nz POINTS N [dataType] x0 y0 z0 x1 y0 z0 x0 y1 z0 x1 y1 z0 x0 y0 z1 ... Important: The X co-ordinate increases first, Y next and Z last. N = nx*ny*nz Prabhu Ramachandran TVTK and MayaVi2
  • 48. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Polygonal data [ HEADER ] DATASET POLYDATA POINTS n dataType x0 y0 z0 x1 y1 z1 ... x(n-1) y(n-1) z(n-1) POLYGONS numPolygons size numPoints0 i0 j0 k0 ... numPoints1 i1 j1 k1 ... ... size = total number of connectivity indices. Prabhu Ramachandran TVTK and MayaVi2
  • 49. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Unstructured grids [ HEADER ] DATASET UNSTRUCTURED_GRID POINTS n dataType x0 y0 z0 ... x(n-1) y(n-1) z(n-1) CELLS n size numPoints0 i j k l ... numPoints1 i j k l ... ... CELL_TYPES n type0 type1 ... size = total number of connectivity indices. Prabhu Ramachandran TVTK and MayaVi2
  • 50. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Dataset attributes Associated with each point/cell one may specify an attribute. VTK data files support scalar, vector and tensor attributes. Cell and point data attributes. Multiple attributes per same file. Prabhu Ramachandran TVTK and MayaVi2
  • 51. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Scalar attributes SCALARS dataName dataType numComp LOOKUP_TABLE tableName s0 s1 ... dataName: any string with no whitespace (case sensitive!). dataType: usually float or double. numComp: optional and can be left as empty. tableName: use the value default. Prabhu Ramachandran TVTK and MayaVi2
  • 52. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Vector attributes VECTORS dataName dataType v0x v0y v0z v1x v1y v1z ... dataName: any string with no whitespace (case sensitive!). dataType: usually float or double. Prabhu Ramachandran TVTK and MayaVi2
  • 53. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Simple example # vtk DataFile Version 2.0 Structured points example. ASCII DATASET STRUCTURED_POINTS DIMENSIONS 2 2 1 ORIGIN 0.0 0.0 0.0 SPACING 1.0 1.0 1.0 POINT_DATA 4 SCALARS Temperature float LOOKUP_TABLE default 100 200 300 400 VECTORS velocity float 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 Prabhu Ramachandran TVTK and MayaVi2
  • 54. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 55. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Issues with VTK API is not Pythonic for complex scripts Native array interface Using NumPy arrays with VTK: non-trivial and inelegant Native iterator interface Can’t be pickled GUI editors need to be “hand-made” (> 800 classes!) Prabhu Ramachandran TVTK and MayaVi2
  • 56. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Introduction to TVTK “Traitified” and Pythonic wrapper atop VTK Elementary pickle support Get/SetAttribute() replaced with an attribute trait Handles numpy arrays/Python lists transparently Utility modules: pipeline browser, ivtk, mlab Envisage plugins for tvtk scene and pipeline browser BSD license Linux, Win32 and Mac OS X Unit tested Prabhu Ramachandran TVTK and MayaVi2
  • 57. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Example TVTK script from enthought . t v t k . a p i import t v t k cone = t v t k . ConeSource ( h e i g h t = 3 . 0 , r a d i u s = 1 . 0 , r e s o l u t i o n =10) coneMapper = t v t k . PolyDataMapper ( i n p u t =cone . o u t p u t ) p = t v t k . P r o p e r t y ( r e p r e s e n t a t i o n = ’w ’ ) coneActor = t v t k . A c t o r ( mapper=coneMapper , p r o p e r t y =p ) See VTK example Prabhu Ramachandran TVTK and MayaVi2
  • 58. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy The differences VTK TVTK import vtk from enthought.tvtk.api import tvtk vtk.vtkConeSource tvtk.ConeSource no constructor args traits set on creation cone.GetHeight() cone.height cone.SetRepresentation() cone.representation=’w’ vtk3DWidget → ThreeDWidget Method names: consistent with ETS (lower_case_with_underscores) VTK class properties (Set/Get pairs or Getters): traits Prabhu Ramachandran TVTK and MayaVi2
  • 59. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy TVTK and traits Attributes may be set on object creation Multiple properties may be set via set Handy access to properties Usual trait features (validation/notification) Visualization via automatic GUI tvtk objects have strict traits pickle and cPickle can be used Prabhu Ramachandran TVTK and MayaVi2
  • 60. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Collections behave like sequences >>> ac = t v t k . A c t o r C o l l e c t i o n ( ) >>> p r i n t l e n ( ac ) 0 >>> ac . append ( t v t k . A c t o r ( ) ) >>> p r i n t l e n ( ac ) 1 >>> f o r i i n ac : ... print i ... # [ Snip o u t p u t ] >>> ac [ − 1] = t v t k . A c t o r ( ) >>> del ac [ 0 ] >>> p r i n t l e n ( ac ) 0 Prabhu Ramachandran TVTK and MayaVi2
  • 61. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Array handling All DataArray subclasses behave like Pythonic arrays: support iteration over sequences, append, extend etc. Can set array using vtk_array.from_array(numpy_array) Works with Python lists or a NumPy array Can get the array into a NumPy array via numpy_arr = vtk_array.to_array() Points and IdList: support these CellArray does not provide a sequence like protocol All methods and properties that accept a DataArray, Points etc. transparently accepts a NumPy array or a Python list! Most often these use views of the NumPy array! Prabhu Ramachandran TVTK and MayaVi2
  • 62. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Array example Any method accepting DataArray, Points, IdList or CellArray instances can be passed a numpy array or a Python list! >>> from enthought . t v t k . a p i import t v t k >>> from numpy import a r r a y >>> p o i n t s = a r r a y ( [ [ 0 , 0 , 0 ] , [ 1 , 0 , 0 ] , [ 0 , 1 , 0 ] , [ 0 , 0 , 1 ] ] , ’ f ’ ) >>> t r i a n g l e s = a r r a y ( [ [ 0 , 1 , 3 ] , [ 0 , 3 , 2 ] , [ 1 , 2 , 3 ] , [ 0 , 2 , 1 ] ] ) >>> mesh = t v t k . PolyData ( ) >>> mesh . p o i n t s = p o i n t s >>> mesh . p o l y s = t r i a n g l e s >>> t e mp e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ ) >>> mesh . p o i n t _ d a t a . s c a l a r s = t e m pe r a tu r e >>> import o p e r a t o r # A r r a y ’ s are P y t h o n i c . >>> reduce ( o p e r a t o r . add , mesh . p o i n t _ d a t a . s c a l a r s , 0 . 0 ) 80.0 >>> p t s = t v t k . P o i n t s ( ) # Demo o f f r o m _ a r r a y / t o _ a r r a y >>> p t s . f r o m _ a r r a y ( p o i n t s ) >>> p r i n t p t s . t o _ a r r a y ( ) Prabhu Ramachandran TVTK and MayaVi2
  • 63. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Array example: contrast with VTK VTK and arrays >>> mesh = v t k . v t k P o l y D a t a ( ) >>> # Assume t h a t t h e p o i n t s and t r i a n g l e s are s e t . ... sc = v t k . v t k F l o a t A r r a y ( ) >>> sc . SetNumberOfTuples ( 4 ) >>> sc . SetNumberOfComponents ( 1 ) >>> f o r i , temp i n enumerate ( te m p er a tu r es ) : ... sc . SetValue ( i , temp ) ... >>> mesh . GetPointData ( ) . S e t S c a l a r s ( sc ) Equivalent to (but more inefficient): TVTK and arrays >>> mesh . p o i n t _ d a t a . s c a l a r s = t e m pe r a tu r e TVTK: easier and more efficient! Prabhu Ramachandran TVTK and MayaVi2
  • 64. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Some issues with array handling Details of array handling documented in tvtk/docs/README.txt Views and copies: a copy is made of the array in the following cases: Python list is passed Non-contiguous numpy array Method requiring conversion to a vtkBitArray (rare) Rarely: VTK data array expected and passed numpy array types are different (rare) CellArray always makes a copy on assignment Use CellArray.set_cells() method to avoid copies IdList always makes a copy Warning: Resizing the TVTK array reallocates memory Prabhu Ramachandran TVTK and MayaVi2
  • 65. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Summary of array issues DataArray, Points: don’t make copies usually Can safely delete references to a numpy array Cannot resize numpy array CellArray makes a copy unless set_cells is used Warning: Resizing the TVTK array reallocates memory: leads to a copy Note: not a memory leak Prabhu Ramachandran TVTK and MayaVi2
  • 66. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 67. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Overview An overview of creating datasets with TVTK and NumPy We consider simple examples Very handy when working with NumPy No need to create VTK data files PolyData, StructuredPoints, StructuredGrid, UnstructuredGrid Prabhu Ramachandran TVTK and MayaVi2
  • 68. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy PolyData from enthought . t v t k . a p i import t v t k # The p o i n t s i n 3D . points = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ ) # C o n n e c t i v i t y via i n d i c e s to the p o i n t s . t r i a n g l e s = array ( [ [ 0 , 1 , 3 ] , [0 ,3 ,2] , [1 ,2 ,3] , [ 0 , 2 , 1 ] ] ) # C r e a t i n g t h e data o b j e c t . mesh = t v t k . PolyData ( ) mesh . p o i n t s = p o i n t s # t h e p o i n t s mesh . p o l y s = t r i a n g l e s # t r i a n g l e s f o r c o n n e c t i v i t y . # For l i n e s / v e r t s use : mesh . l i n e s = l i n e s ; mesh . v e r t s = v e r t i c e s # Now c r e a t e some p o i n t data . t em p e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ ) mesh . p o i n t _ d a t a . s c a l a r s = t em p e ra t u r e mesh . p o i n t _ d a t a . s c a l a r s . name = ’ t em p e ra t u r e ’ # Some v e c t o r s . v e l o c i t y = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ ) mesh . p o i n t _ d a t a . v e c t o r s = v e l o c i t y mesh . p o i n t _ d a t a . v e c t o r s . name = ’ v e l o c i t y ’ # Thats i t ! Prabhu Ramachandran TVTK and MayaVi2
  • 69. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Structured Points: 2D # The s c a l a r v a l u e s . from numpy import arange , s q r t from s c i p y import s p e c i a l x = ( arange ( 5 0 . 0 ) − 2 5 ) / 2 . 0 y = ( arange ( 5 0 . 0 ) − 2 5 ) / 2 . 0 r = s q r t ( x [ : , None] ∗∗ 2+ y ∗∗ 2) z = 5.0 ∗ s p e c i a l . j 0 ( r ) # Bessel f u n c t i o n o f o r d e r 0 # −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # Can ’ t s p e c i f y e x p l i c i t p o i n t s , t h e p o i n t s are i m p l i c i t . # The volume i s s p e c i f i e d u s i n g an o r i g i n , spacing and dimensions s p o i n t s = t v t k . S t r u c t u r e d P o i n t s ( o r i g i n =( − 12.5 , − 12.5 ,0) , spacing = ( 0 . 5 , 0 . 5 , 1 ) , dimensions = ( 5 0 , 5 0 , 1 ) ) # Transpose t h e a r r a y data due t o VTK ’ s i m p l i c i t o r d e r i n g . VTK # assumes an i m p l i c i t o r d e r i n g o f t h e p o i n t s : X co− o r d i n a t e # i n c r e a s e s f i r s t , Y n e x t and Z l a s t . We f l a t t e n i t so t h e # number o f components i s 1 . spoints . point_data . scalars = z . T. f l a t t e n ( ) s p o i n t s . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r ’ Prabhu Ramachandran TVTK and MayaVi2
  • 70. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Structured Points: 3D from numpy import a r r a y , o g r i d , s i n , r a v e l dims = a r r a y ( ( 1 2 8 , 128 , 1 2 8 ) ) v o l = a r r a y ( ( − 5 . , 5 , −5, 5 , −5, 5 ) ) origin = vol [ : : 2 ] spacing = ( v o l [ 1 : : 2 ] − o r i g i n ) / ( dims −1) xmin , xmax , ymin , ymax , zmin , zmax = v o l x , y , z = o g r i d [ xmin : xmax : dims [ 0 ] ∗ 1 j , ymin : ymax : dims [ 1 ] ∗ 1 j , zmin : zmax : dims [ 2 ] ∗ 1 j ] x , y , z = [ t . astype ( ’ f ’ ) f o r t i n ( x , y , z ) ] s c a l a r s = s i n ( x∗y∗z ) / ( x∗y∗z ) # −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− s p o i n t s = t v t k . S t r u c t u r e d P o i n t s ( o r i g i n = o r i g i n , spacing =spacing , dimensions=dims ) # The copy makes t h e data c o n t i g u o u s and t h e t r a n s p o s e # makes i t s u i t a b l e f o r d i s p l a y v i a t v t k . s = s c a l a r s . t r a n s po s e ( ) . copy ( ) spoints . point_data . scalars = ravel ( s ) s p o i n t s . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r s ’ Prabhu Ramachandran TVTK and MayaVi2
  • 71. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Structured Grid r = numpy . l i n s p a c e ( 1 , 10 , 25) t h e t a = numpy . l i n s p a c e ( 0 , 2 ∗ numpy . p i , 51) z = numpy . l i n s p a c e ( 0 , 5 , 25) # C r r e a t e an annulus . x_plane = ( cos ( t h e t a ) ∗ r [ : , None ] ) . r a v e l ( ) y_plane = ( s i n ( t h e t a ) ∗ r [ : , None ] ) . r a v e l ( ) p t s = empty ( [ l e n ( x_plane ) ∗ l e n ( h e i g h t ) , 3 ] ) f o r i , z _ v a l i n enumerate ( z ) : s t a r t = i ∗ l e n ( x_plane ) p l a n e _ p o i n t s = p t s [ s t a r t : s t a r t + l e n ( x_plane ) ] p l a n e _ p o i n t s [ : , 0 ] = x_plane p l a n e _ p o i n t s [ : , 1 ] = y_plane plane_points [ : , 2 ] = z_val s g r i d = t v t k . S t r u c t u r e d G r i d ( dimensions =(51 , 25 , 2 5 ) ) sgrid . points = pts s = numpy . s q r t ( p t s [ : , 0 ] ∗ ∗ 2 + p t s [ : , 1 ] ∗ ∗ 2 + p t s [ : , 2 ] ∗ ∗ 2 ) s g r i d . p o i n t _ d a t a . s c a l a r s = numpy . r a v e l ( s . copy ( ) ) s g r i d . p o i n t _ d a t a . s c a l a r s . name = ’ s c a l a r s ’ Prabhu Ramachandran TVTK and MayaVi2
  • 72. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Unstructured Grid from numpy import a r r a y points = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ ) t e t s = array ( [ [ 0 , 1 , 2 , 3 ] ] ) t e t _ t y p e = t v t k . T e t r a ( ) . c e l l _ t y p e # VTK_TETRA == 10 #−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ug = t v t k . U n s t r u c t u r e d G r i d ( ) ug . p o i n t s = p o i n t s # T h i s s e t s up t h e c e l l s . ug . s e t _ c e l l s ( t e t _ t y p e , t e t s ) # A t t r i b u t e data . t em p e r at u r e = a r r a y ( [ 1 0 , 20 , 2 0 , 3 0 ] , ’ f ’ ) ug . p o i n t _ d a t a . s c a l a r s = te m p er a t ur e ug . p o i n t _ d a t a . s c a l a r s . name = ’ t em p e r at u r e ’ # Some v e c t o r s . v e l o c i t y = array ( [ [ 0 , 0 , 0 ] , [1 ,0 ,0] , [0 ,1 ,0] , [ 0 , 0 , 1 ] ] , ’ f ’ ) ug . p o i n t _ d a t a . v e c t o r s = v e l o c i t y ug . p o i n t _ d a t a . v e c t o r s . name = ’ v e l o c i t y ’ Prabhu Ramachandran TVTK and MayaVi2
  • 73. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Scene widget, pipeline browser and ivtk enthought.pyface.tvtk: scene widget Provides a Pyface tvtk render window interactor Supports VTK widgets Picking, lighting enthought.tvtk.pipeline.browser Tree-view of the tvtk pipeline enthought.tvtk.tools.ivtk Like MayaVi-1’s ivtk module Convenient, easy to use, viewer for tvtk Prabhu Ramachandran TVTK and MayaVi2
  • 74. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy mlab interface enthought.tvtk.tools.mlab Provides Matlab like 3d visualization conveniences API mirrors that of Octaviz: http://octaviz.sf.net Place different Glyphs at points 3D lines, meshes and surfaces Titles, outline Prabhu Ramachandran TVTK and MayaVi2
  • 75. Introduction to visualization Visualization libraries MayaVi2 VTK VTK data TVTK Creating Datasets from NumPy Envisage plugins Envisage: an extensible plugin based application framework enthought.tvtk.plugins.scene Embed a TVTK render window Features all goodies in enthought.pyface.tvtk enthought.tvtk.plugins.browser Prabhu Ramachandran TVTK and MayaVi2
  • 76. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 77. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Features MayaVi-2: built atop Traits, TVTK and Envisage Focus on building the model right Uses traits heavily MayaVi-2 is an Envisage plugin Workbench plugin for GUI tvtk scene plugin for TVTK based rendering View/Controller: “free” with traits and Envisage MVC Uses a simple, persistence engine Prabhu Ramachandran TVTK and MayaVi2
  • 78. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Example view of MayaVi-2 TVTK Scene Tree View Object Editor Python shell Prabhu Ramachandran TVTK and MayaVi2
  • 79. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples The big picture Mayavi Engine TVTK Scene Source Filter ModuleManager Lookup tables List of Modules Prabhu Ramachandran TVTK and MayaVi2
  • 80. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 81. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Class hierarchy Prabhu Ramachandran TVTK and MayaVi2
  • 82. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Class hierarchy Prabhu Ramachandran TVTK and MayaVi2
  • 83. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Containership relationship Engine contains: list of Scene Scene contains: list of Source Source contains: list of Filter and/or ModuleManager ModuleManager contains: list of Module Module contains: list of Component Prabhu Ramachandran TVTK and MayaVi2
  • 84. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Outline 1 Introduction to visualization Introduction Quick graphics: visual and mlab Graphics primer Data and its representation 2 Visualization libraries VTK VTK data TVTK Creating Datasets from NumPy 3 MayaVi2 Introduction Internals Examples Prabhu Ramachandran TVTK and MayaVi2
  • 85. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Interactively scripting MayaVi-2 Drag and drop The mayavi instance >>> mayavi . new_scene ( ) # Create a new scene >>> mayavi . s a v e _ v i s u a l i z a t i o n ( ’ f o o . mv2 ’ ) mayavi.engine: >>> e = mayavi . engine # Get t h e MayaVi engine . >>> e . scenes [ 0 ] # f i r s t scene i n mayavi . >>> e . scenes [ 0 ] . c h i l d r e n [ 0 ] >>> # f i r s t scene ’ s f i r s t source ( v t k f i l e ) Prabhu Ramachandran TVTK and MayaVi2
  • 86. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Scripting . . . mayavi: instance of enthought.mayavi.script.Script Traits: application, engine Methods (act on current object/scene): new_scene() add_source(source) add_filter(filter) add_module(m2_module) save/load_visualization(fname) Prabhu Ramachandran TVTK and MayaVi2
  • 87. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Scripting example from enthought . mayavi . sources . v t k _ f i l e _ r e a d e r import VTKFileReader from enthought . mayavi . modules . o u t l i n e import O u t l i n e from enthought . mayavi . modules . g r i d _ p l a n e import GridPlane from enthought . t v t k . a p i import t v t k mayavi . new_scene ( ) s r c = VTKFileReader ( ) src . i n i t i a l i z e ( ’ heart . vtk ’ ) mayavi . add_source ( s r c ) mayavi . add_module ( O u t l i n e ( ) ) g = GridPlane ( ) g . grid_plane . axis = ’ x ’ mayavi . add_module ( g ) g = GridPlane ( ) g . grid_plane . axis = ’ y ’ mayavi . add_module ( g ) g = GridPlane ( ) g . grid_plane . axis = ’ z ’ mayavi . add_module ( g ) Prabhu Ramachandran TVTK and MayaVi2
  • 88. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples Stand alone scripts Two approaches to doing this: Approach 1: Recommended way: simple interactive script save to a script.py file Run it like mayavi2 -x script.py Advantages: easy to write, can edit from mayavi and rerun Disadvantages: not a stand-alone Python script Approach 2: Subclass enthought.mayavi.app.Mayavi Override the run() method self.script is a Script instance Prabhu Ramachandran TVTK and MayaVi2
  • 89. Introduction to visualization Visualization libraries MayaVi2 Introduction Internals Examples ipython -wthread from enthought . mayavi . app import Mayavi m = Mayavi ( ) m. main ( ) m. s c r i p t . new_scene ( ) # ‘m. s c r i p t ‘ i s t h e mayavi . s c r i p t . S c r i p t i n s t a n c e engine = m. s c r i p t . engine # S c r i p t as u s u a l . . . Prabhu Ramachandran TVTK and MayaVi2