Visualization History Visual Programming Visualization History Visual Programming • Visualization libraries Visualization libraries • Haberli’s Haberli’s landmark landmark ConMan ConMan paper paper - -1985? 1985? • • – Embed into simulation code Embed into simulation code – • Extension of Unix pipes. Extension of Unix pipes. • – Outputs images (plots) during run Outputs images (plots) during run- -time. time. – • Take a small specialized program • Take a small specialized program • Post Post- -process of restart dumps process of restart dumps • – – Provide wrapper for remote procedure and Provide wrapper for remote procedure and – Custom tools for custom data formats Custom tools for custom data formats – shared memory shared memory – Custom derived data, data Custom derived data, data mappers mappers – – – Provide GUI for parameters ( Provide GUI for parameters (args args) of the ) of the program. program. Early Visual Prog Prog. . Env Env. . Great concepts Early Visual Great concepts • Data Push models Data Push models • Very similar to Very similar to Corba Corba support support • • – aPe – aPe - - Ohio State / OSC Ohio State / OSC – – provides the shared memory communication provides the shared memory communication – AVS – AVS - - Advanced Visualization System Advanced Visualization System – each “module” is it’s own process – each “module” is it’s own process • Stellar Computer • Can reside on it’s own CPU – Khoros Khoros - - Univ. of New Mexico? Univ. of New Mexico? • Can reside across the network – – Iris Explorer Iris Explorer – – SGI / NAG SGI / NAG – • Tools to automatically convert a C, C++ or Tools to automatically convert a C, C++ or • Fortran program to a module. Fortran program to a module. • Data Flow model • Data Flow model
Problems Execution Model Problems Execution Model • Data pushed to module A Data pushed to module A • Each module has a set of parameters or Each module has a set of parameters or • • state that controls its output. state that controls its output. • Data modified by A (a “ Data modified by A (a “mapper mapper”) and ”) and • pushed to both modules B and C. • A change to Module B’s parameters only A change to Module B’s parameters only pushed to both modules B and C. • requires re- -executing B. executing B. requires re • Four copies of the data now exist • Four copies of the data now exist • A change to Module A’s parameters, will re • A change to Module A’s parameters, will re- - execute A and send new data execute A and send new data Read Read to both B and C. to both B and C. A A B C B C Data Push vs vs Data Pull Data Pull Early Visual Prog Prog. . Env Env. . Data Push Early Visual • Data Pull Models Data Pull Models • • Data Push Data Push • – Data Explorer ( – Data Explorer (Dx Dx) ) - - IBM IBM – Push data when changed Push data when changed – • Data centric • Data Pull Data Pull • – AVS/Express AVS/Express – – – Only request data when needed Only request data when needed – Image Vision Image Vision - - SGI SGI – – Break the data into chunks, and only request Break the data into chunks, and only request – – Java Advanced Imaging Java Advanced Imaging – small chunks at a time. small chunks at a time. – Vtk Vtk – • Multiple windows (paths) Multiple windows (paths) • • Memory requirements reduced • Memory requirements reduced – – Much more complicate, Much more flexible Much more complicate, Much more flexible
Themes Themes • Overview • Overview VTK VTK • Architecture • Architecture The Visualization Toolkit The Visualization Toolkit • • Graphic Subsystem Graphic Subsystem • • Visualization Pipeline Visualization Pipeline William J. Schroeder William J. Schroeder President, Kitware, Inc. President, Kitware, Inc. Rensselaer SCOREC Research Associate • • Interaction Interaction Rensselaer SCOREC Research Associate www.kitware.com www.kitware.com • • Software Process Software Process www.vtk.org www.vtk.org Modified by Roger Crawfis • • Conclusion Conclusion will.schroeder@kitware.com will.schroeder@kitware.com Taxonomy of Visualization Taxonomy of Visualization What Is VTK? What Is VTK? Systems Systems A visualization toolkit A visualization toolkit A visualization toolkit • Toolkits / Libraries • Toolkits / Libraries – – Designed and implemented using object Designed and implemented using object- -oriented principles oriented principles – Designed and implemented using object-oriented principles – Components Components – – – C++ class library (~700+ classes; ~425,000 LOC; <225,000 C++ class library (~700+ classes; ~425,000 LOC; <225,000 – C++ class library (~700+ classes; ~425,000 LOC; <225,000 – Little or no GUI – Little or no GUI executable lines) executable lines) executable lines) – Meant to be integrated with other systems/toolkits – Meant to be integrated with other systems/toolkits – Automated Java, TCL, Python bindings – – Automated Java, TCL, Python bindings Automated Java, TCL, Python bindings – Programming required Programming required – – – – Portable across Unix, Windows, Mac OSX Portable across Unix, Windows, Mac OSX Portable across Unix, Windows, Mac OSX • Development Environments Development Environments • – – Supports 3D/2D graphics, visualization, image processing, volume Supports 3D/2D graphics, visualization, image processing, volume – Supports 3D/2D graphics, visualization, image processing, volume rendering rendering rendering – Components – Components – – Focused on scientific visualization, some support for higher- Focused on scientific visualization, some support for higher - – Focused on scientific visualization, some support for higher- – GUI – GUI- -assisted (visual) programming assisted (visual) programming dimensional visualization dimensional visualization dimensional visualization • Applications • Applications – Open- -source (BSD source (BSD- -style, not GPL) style, not GPL) – – Open Open-source (BSD-style, not GPL) – Turn Turn- -key key – – – www.vtk.org www.vtk.org – www.vtk.org – Minimal programming – Minimal programming
VTK Is A Toolkit, Not a VTK Is A Toolkit, Not a History History System System • Precursor: GE Legacy System LYMB (circa 1983) Precursor: GE Legacy System LYMB (circa 1983) • Embeddable Embeddable • • – Plays with other software – Plays with other software • Proprietary software issues led to Proprietary software issues led to • open- open -source VTK project to create: source VTK project to create: • Separable Separable • – Textbook Textbook – – Can pull out “pieces” – Can pull out “pieces” – Sample code Sample code – • Adaptable • Adaptable • December ‘93 work begins on VTK December ‘93 work begins on VTK • – Not dependent on GUI Not dependent on GUI – text/software text/software • X, Motif, Windows, Mac, Qt, FLTK, Tk, wxWindows, etc. • • June 1998 Kitware forms: June 1998 Kitware forms: – Not dependent on rendering library Not dependent on rendering library – VTK Commercial Support VTK Commercial Support • OpenGL, others Things It Does Things It Does More Things: Image- -Processing Processing More Things: Image
Combined Volume/Surface Combined Volume/Surface Volume Rendering Volume Rendering Rendering Rendering Functionality How To Use It Functionality How To Use It • • Graphics / Modeling Graphics / Modeling • Choose programming language Choose programming language • – Smoothing, decimation, extrusion, – Smoothing, decimation, extrusion, Delaunay Delaunay triangulation triangulation – C++ – C++ (2D/3D), etc. (2D/3D), etc. – Tcl – Tcl • Image Processing • Image Processing – 100’s of filters – 100’s of filters – Python Python – – Integrated 2D / 3D – Integrated 2D / 3D – Java Java – • Visualization Visualization • – Scalar, vector, tensor fields (100’s of filters) – Scalar, vector, tensor fields (100’s of filters) • Assemble components to build applications Assemble components to build applications • – Probing, cutting, clipping, extraction – Probing, cutting, clipping, extraction – Volume rendering – Volume rendering • • Multi Multi- -dimensional dimensional – Projection, Projection, resampling resampling –
Recommend
More recommend