VTKOverview

Information about VTKOverview

Published on November 5, 2007

Author: Elodie

Source: authorstream.com

Content

The Visualization Toolkit (VTK):  The Visualization Toolkit (VTK) Overview The Visualization Toolkit An Overview:  The Visualization Toolkit An Overview William J. Schroeder Kitware, Inc. Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process Visualization:  Visualization A definition for visualization Map data or information into images or other sensory input (touch, sound, smell, taste) Engages human perception system Simple, effective powerful Complex data Voluminous data Related Fields:  Related Fields Mapping 3D Graphics Volume Rendering Haptics (touch) Gaming / Entertainment 3D GUI’s Virtual Reality Visualization - Scientific - Information - Financial - Data - Multivariate Image Processing 2D Graphics Statistical Graphics Example Applications:  Example Applications Scientific, medical, financial, information, ... Simulation Medical CT / MRI / Ultrasound Business Modeling Example Applications:  Example Applications Geophysical / Mapping Trends:  Trends The 3D Graphics Market is Exploding Gaming driving the hardware VRML, Web applications Virtual Reality Graphics standards (OpenGL, Direct3D) Digital / 3D Data Data is overwhelming users Visualization is a proven solution Open Source systems are credible Even respectable Textbook:  Textbook Now in Second Edition The Visualization Toolkit An Object-Oriented Approach To 3D Graphics Will Schroeder, Ken Martin, Bill Lorensen ISBN 0-13-954694-4 Prentice Hall Work on first edition began in 1994 What Is VTK?:  What Is VTK? A visualization toolkit Designed and implemented using object-oriented principles C++ class library (250,000 LOC, <100,000 executable lines) Automated Java, TCL, Python bindings Portable across Unix, Windows9x/NT Supports 3D/2D graphics, visualization, image processing, volume rendering Other Features:  Other Features Reference Counting Abstract / Virtual Method Access data stored in native type (byte, short, int, etc.) data accessed in native type (with templates) or using generic interface (float) Data In Memory some objects read pieces (vtkSliceCubes) data pipeline can stream pieces based on memory limitations (more later) VTK Is Not a System:  VTK Is Not a System Embeddable Plays with other software Separable Can pull out “pieces” Adaptable Not dependent on GUI Not dependent on rendering library VTK Architecture:  VTK Architecture Hybrid approach compiled C++ (faster algorithms) interpreted applications (rapid development) (Java, Tcl, Python) A toolkit C++ core Interpreter Interpreted layer generated automatically Interpreters:  Interpreters Tcl Java Python Interpreters provide faster turn-around; suffer from slower execution Tcl Interpreter:  Tcl Interpreter source vtkInt.tcl (define interpreter GUI) Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process Graphics Model:  Graphics Model Instances of render window (vtkRenderWindow) Actor instances (vtkActor) Renderer instances (vtkRenderer) Graphics Model:  Graphics Model RenderWindow - contains final image Renderer - draws into render window Actor - combines properties / geometry Lights - illuminate actors Camera - renders scene Mappers - represent geometry Transformations - position actors In Context: The Scene Graph:  In Context: The Scene Graph Group Coords Shape Property Transform Separator Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process What Is The Visualization Pipeline?:  What Is The Visualization Pipeline? A sequence of process objects that operate on data objects to generate geometry that can be rendered by the graphics engine Data Filter Data to graphics system Data Data Filter Actor Actor Visualization Model:  Visualization Model Data Objects represent data provide access to data compute information particular to data (e.g., bounding box, derivatives) Process Objects Ingest, transform, and output data objects represent visualization algorithms Data Objects:  Data Objects Represent a “blob” of data contain instance of vtkFieldData an array of arrays no geometric/topological structure typically not used in pipelines (but its subclasses such as vtkDataSet are) Can be converted to vtkDataSet vtkDataObjectToDataSetFilter advanced topic (see financialField.tcl) Data Objects / Data Sets:  Data Objects / Data Sets vtkDataObject is a “blob” of data Contains an instance of vtkFieldData vtkDataSet is data with geometric & topological structure; and with attribute data Geometry & Topology Data Set Attributes Points & Cells Point Data Cell Data Dataset Model:  Dataset Model A dataset is a data object with structure Structure consists of cells (e.g., polygons, lines, voxels) points (x-y-z coordinates) cells defined by connectivity list referring to points implicit representations explicit representations Cell Points Dataset Types:  Dataset Types vtkPolyData vtkStructuredPoints vtkStructuredGrid vtkUnstructuredGrid vtkRectilinearGrid Data Set Attributes:  Data Set Attributes Scalars - 1-4 values (vtkScalars) single value ranging to RGBA color Vectors - 3-vector (vtkVectors) Tensors - 3x3 symmetric matrix (vtkTensors) Normals - unit vector (vtkNormals) Texture Coordinates 1-3D (vtkTCoords) Field Data (an array of arrays) (vtkFieldData) Process Objects:  Process Objects Source Mapper Filter 1 or more outputs 1 or more outputs 1 or more inputs 1 or more inputs Pipeline Execution Model:  Pipeline Execution Model direction of update (via Update()) Source Data Filter Data Mapper Render() direction of data flow (via Execute()) Creating Pipeline Topology:  Creating Pipeline Topology aFilter->SetInput( bFilter->GetOutput()); The Role of Type-Checking SetInput() accepts dataset type or subclass C++ compile-time checking Interpreter run-time checking Example Pipeline:  Decimation, smoothing, normals Implemented in C++ Example Pipeline Note: data objects are not shown -> they are implied from the output type of the filter Create Reader & Decimator:  Create Reader & Decimator vtkCyberReader *cyber = vtkCyberReader::New(); cyber->SetFileName("../../vtkdata/fran_cut”); vtkDecimatePro *deci = vtkDecimatePro::New(); deci->SetInput( cyber->GetOutput() ); deci->SetTargetReduction( 0.9 ); deci->PreserveTopologyOn(); deci->SetMaximumError( 0.0002 ); Smoother & Graphics Objects:  Smoother & Graphics Objects vtkSmoothPolyDataFilter *smooth = vtkSmoothPolyDataFilter::New(); smooth->SetInput(deci->GetOutput()); smooth->SetNumberOfIterations( 20 ); smooth->SetRelaxationFactor( 0.05 ); vtkPolyDataNormals *normals = vtkPolyDataNormals::New(); normals->SetInput( smooth->GetOutput() ); vtkPolyDataMapper *cyberMapper = vtkPolyDataMapper::New(); cyberMapper->SetInput( normals->GetOutput() ); vtkActor *cyberActor = vtkActor::New(); cyberActor->SetMapper (cyberMapper); cyberActor->GetProperty()->SetColor ( 1.0, 0.49, 0.25 ); cyberActor->GetProperty()->SetRepresentationToWireframe(); More Graphics Objects:  More Graphics Objects vtkRenderer *ren1 = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor ::New(); iren->SetRenderWindow( renWin ); ren1->AddActor( cyberActor ); ren1->SetBackground( 1, 1, 1 ); renWin->SetSize( 500, 500 ); iren->Start(); Results:  Results Filter Overview: Sources:  Filter Overview: Sources Readers vtkOBJReader vtkBYUReader vtkCyberReader vtkDataSetReader vtkMCubesReader vtkPLOT3DReader vtkPolyDataReader vtkRectilinearGridReader vtkSLCReader vtkSTLReader vtkStructuredGridReader vtkStructuredPointsReader vtkUnstructuredGridReader vtkVolume16Reader vtkFieldDataReader vtkBMPReader vtkPNMReader vtkTIFFReader Sources:  Sources Procedural Sources vtkEarthSource vtkConeSource vtkCylinderSource vtkDiskSource vtkLineSource vtkOutlineSource vtkPlaneSource vtkPointSource vtkTextSource vtkVectorText vtkSphereSource vtkTexturedSphereSource vtkAxes vtkCursor3D vtkProgrammableSource vtkPointLoad Filters:  Filters vtkAppendFilter vtkAppendPolyData vtkBooleanTexture vtkBrownianPoints vtkCastToConcrete vtkCellCenters vtkCellDataToPointData vtkCullVisiblePoints vtkCleanPolyData vtkClipPolyData vtkClipVolume vtkConnectivityFilter vtkContourFilter vtkCutter vtkDashedStreamLine vtkDecimate vtkDecimatePro vtkDelaunay2D vtkDelaunay3D vtkDicers Filters (2):  Filters (2) vtkEdgePoints vtkElevationFilter vtkExtractEdges vtkExtractGeometry vtkExtractGrid vtkExtractTensorComponents vtkExtractUnstructuredGrid vtkExtractVOI vtkExtractVectorComponents vtkFeatureEdges vtkGaussianSplatter vtkGeometryFilter vtkGlyph3D vtkHedgeHog vtkHyperStreamline vtkIdFilter vtkLinearExtrusionFilter vtkMaskPolyData vtkOutlineFilter vtkPointDataToCellData Filters (3):  Filters (3) vtkMaskPoints vtkMaskPolyData vtkMergeFilter vtkMergePoints vtkPolyDataNormals vtkProbeFilter vtkProgrammableAttributeDataFilter vtkSelectVisiblePoints vtkSpatialRepresentationFilter vtkStreamLine vtkProgrammableFilter vtkProjectedTexture vtkRecursiveDividingCubes vtkReverseSense vtkRibbonFilter vtkRotationalExtrusionFilter vtkShepardMethod vtkShrinkFilter vtkShrinkPolyData vtkSmoothPolyDataFilter Filters (4):  Filters (4) vtkStreamPoints vtkStripper vtkStructuredGridGeometryFilter vtkStructuredGridOutlineFilter vtkStructuredPointsGeometryFilter vtkTensorGlyph vtkTextureMapToBox vtkTextureMapToCylinder vtkTextureMapToPlane vtkTextureMapToSphere vtkTexturedSphereSource vtkThreshold vtkThresholdPoints vtkThresholdTextureCoords vtkTransformFilter vtkTransformPolyDataFilter vtkTransformTextureCoords vtkTriangleFilter vtkTriangularTCoords vtkTriangularTexture Filters (5):  Filters (5) vtkTubeFilter vtkVectorDot vtkVectorNorm vtkVectorTopology vtkVoxelModeller vtkWarpScalar vtkWarpTo vtkWarpVector Mappers:  Mappers Writers vtkIVWriter vtkBYUWriter vtkSTLWriter vtkMCubesWriter vtkPolyDataWriter vtkRectilinearGridWriter vtkStructuredGridWriter vtkStructuredPointsWriter vtkUnstructuredGridWriter vtkFieldDataWriter vtkBMPWriter vtkPNMWriter vtkTIFFWriter Graphics Mappers vtkPolyDataMapper vtkDataSetMapper (volume mappers - later) (image mappers - later) Data Management:  Data Management Why Data Management is Critical - Size Medical imaging (512x512x100x2 = 50Meg) Scientific visualization Video data (fluoroscope, ultrasound) Digital X-ray Satellite imagery Data Management:  Data Management Flow Computation: Robert Meakin Visualization: David Kenwright and David Lane Numerical Aerodynamic Simulation Division at NASA Ames Research Center Bell-Boeing V-2 2 tiltrotor 140 Gbytes Examples:  Examples Modeling turbulence (Ken Jansen RPI) 8.5 million tetrahedra, 200 time steps 150 million tetrahedra, 2000 time steps (soon) Reference Counting:  Reference Counting Data Reader Elevation Filter Rendering System - Scalar Values - 3D points - 3D normals - New Scalar Values - 3D points - 3D normals Reference Counting Memory Hierarchy:  Memory Hierarchy Access Time 0.5 Clock 1 Clock 5 Clock 10-50 Clock 105 Clock 107 Clock Memory Hierarchy:  Memory Hierarchy Depending on disk and tape is to be avoided A lot of instructions can be carried out in the time a single disk access occurs Better through-put occurs when data is kept in high-levels of memory hierarchy Enter (The) Streaming Pipeline:  Enter (The) Streaming Pipeline Read data from disk/tape in pieces Process piece through series of filters (supports a data flow architecture) Only when processing is complete is data written back to disk/tape Control piece size to make best use of memory hierarchy (e.g., avoid swapping) Streaming Data:  Streaming Data Data is broken into pieces, and pieces processed one at a time Piece size based on memory limits Can avoid system swap Supports parallel processing Issues How to create pieces Mapping output from input Results invariance Multi-Threading:  Multi-Threading Piece Sub-Piece Entire Data Numerical Experimants:  Numerical Experimants The Effect of Cache Size:  The Effect of Cache Size Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process The Volume Data Structure:  The Volume Data Structure 3D Regular Rectilinear Grid vtkStructuredPoints: Dimensions = (Dx, Dy, Dz) Spacing = (Sx, Sy, Sz) Volume Rendering Strategies:  Volume Rendering Strategies Image-Order Approach: Traverse the image pixel-by-pixel and sample the volume via ray-casting. Ray Casting Volume Rendering Strategies:  Volume Rendering Strategies Object-Order Approach: Traverse the volume, and project to the image plane. Splatting cell-by-cell Texture Mapping plane-by-plane Transfer Functions :  Transfer Functions Transfer functions are the key to volume renderings Ray Casting Process:  Ray Casting Process Ray Cast Functions:  Ray Cast Functions A Ray Function examines the scalar values encountered along a ray, and produces a final pixel value according to the volume properties, and the specific transfer function. Scalar Value Interpolation:  Scalar Value Interpolation v = (1-x)(1-y)(1-z)S(0,0,0) + (x)(1-y)(1-z)S(1,0,0) + (1-x)(y)(1-z)S(0,1,0) + (x)(y)(1-z)S(1,1,0) + (1-x)(1-y)(z)S(0,0,1) + (x)(1-y)(z)S(1,0,1) + (1-x)(y)(z)S(0,1,1) + (x)(y)(z)S(1,1,1) x y z (0,0,0) (1,1,1) v = S(rnd(x), rnd(y), rnd(z)) Nearest Neighbor Trilinear Scalar Value Interpolation:  Scalar Value Interpolation Nearest Neighbor Interpolation Trilinear Interpolation Maximum Intensity Function:  Maximum Intensity Function Ray Distance Scalar Value Scalar Value Opacity Maximize Scalar Value Maximum Value Gradient Magnitude Opacity Composite Function:  Composite Function Ray Distance Scalar Value Scalar Value Opacity Use a-blending along the ray to produce final RGBA value for each pixel. Gradient Magnitude Opacity Isosurface Function:  Isosurface Function Isosurface Value Stop ray traversal at isosurface value. Use cubic equation solver if interpolation is trilinear. Sampling Distance:  Sampling Distance 0.1 Unit Step Size 1.0 Unit Step Size 2.0 Unit Step Size Intermixing Geometry:  Intermixing Geometry Render the geometry (opaque, then translucent) using the graphics hardware Capture the hardware color and depth buffers Cast the rays, stopping at the captured depth value for that pixel Blend the ray RGBA value into the color image and draw to the hardware color buffer Intermixed Geometry:  Intermixed Geometry High potential iron protein CT scan of the visible woman's knee Speed / Accuracy Trade-Off:  Speed / Accuracy Trade-Off 1x1 Sampling 2x2 Sampling 4x4 Sampling Combined approached: vtkLODProp3D can be used to hold mappers of various types. A volume can be represented at multiple levels-of-detail using a geometric isosurface, texture mapping, and ray casting. A decision between levels-of-detail is made based on allocated render time. Multi-resolution ray casting: Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process Why Open Source?:  Why Open Source? Fun form communities engage in a hobby / learning experience Profitable - successful business models Red Hat, Inc. (Linux Support) Cygnus Solutions Use Value versus Sale Value (service-oriented business model) Altruism - serve the planet Why Open Source?:  Why Open Source? Kick M$’s Butt Intellectual freedom Ideas are property The territory is being claimed Freedom of expression is being controlled by others Don’t give up your freedom! Why Open Source? :  Why Open Source? Scalable Software Development Eric Raymond The Cathedral & The Bazaar “open-source peer review is the only scalable method for achieving high reliability and quality.” Microsoft Halloween Documents www.opensource.org Agenda:  Agenda VTK Technology Background The Graphics Model The Visualization Model Volume Rendering VTK Process Open Source Development Process Development Process:  Development Process Standard C++ Style / Methodology Documentation embedded in code (use Doxygen to generated HTML) Use CVS source code control system Allows simultaneous edits Merges files, flags conflicts Automatic wrapper generator (look at SWIG) Daily regression testing Testing Process (Nightly):  Testing Process (Nightly) Regression test ~500 examples Check style Check PrintSelf() Check memory problems (Purify) Read/write beyond memory bounds Memory leaks Check Coverage Running around 75% If it ain’t covered, it don’t work Regression Testing:  Regression Testing Compare generated image against standard “correct” image pixel-by-pixel comparison can use a threshold metric adjusted for effects like dithering OpenGL is rather loose about image quality VTK Quality Dashboard:  VTK Quality Dashboard Why Test Daily?:  Why Test Daily? Large code base too large for any single developer to understand Developers distributed around the world Identify problems as they occur Insure that object API remains unchanged Provide feedback to developers as they experiment with new implementations Resources:  Resources VTK www.kitware.com/vtk.html vtkusers mailing list other resources (Sebastien Barre’s web pages) Eric Raymond The Cathedral and the Bazaar CVS Documentation www.opensource.org

Related presentations


Other presentations created by Elodie

microwave ovens
06. 11. 2007
0 views

microwave ovens

shrek friendship
25. 12. 2007
0 views

shrek friendship

Collections Strategic Planning
01. 10. 2007
0 views

Collections Strategic Planning

CIMMYT 02
04. 10. 2007
0 views

CIMMYT 02

Oceania PowerPoint Presentation
09. 10. 2007
0 views

Oceania PowerPoint Presentation

20010412Merit
02. 11. 2007
0 views

20010412Merit

Large Datasets in Flex
28. 11. 2007
0 views

Large Datasets in Flex

Belk
05. 11. 2007
0 views

Belk

hazmat
07. 11. 2007
0 views

hazmat

BlastomycosisinDogs
16. 11. 2007
0 views

BlastomycosisinDogs

romanticismo
21. 11. 2007
0 views

romanticismo

section 4 eating out of home
30. 12. 2007
0 views

section 4 eating out of home

label flower parts
31. 12. 2007
0 views

label flower parts

Identifying Variables
01. 01. 2008
0 views

Identifying Variables

A Winfield
07. 01. 2008
0 views

A Winfield

fullyear03
04. 12. 2007
0 views

fullyear03

regionsofvagrade4par tA
03. 10. 2007
0 views

regionsofvagrade4par tA

borghys
15. 11. 2007
0 views

borghys

TEQdesign
26. 11. 2007
0 views

TEQdesign

ONR Workshop 6 4 02
24. 12. 2007
0 views

ONR Workshop 6 4 02

CH12 R
24. 02. 2008
0 views

CH12 R

fomac intro
26. 02. 2008
0 views

fomac intro

buy used fire trucks
28. 02. 2008
0 views

buy used fire trucks

LangeNFAIS07
19. 02. 2008
0 views

LangeNFAIS07

ma
11. 03. 2008
0 views

ma

Geographic Mapping of SARS
12. 03. 2008
0 views

Geographic Mapping of SARS

goodwin
14. 03. 2008
0 views

goodwin

Strat Hu Res Manag in Eu
18. 03. 2008
0 views

Strat Hu Res Manag in Eu

ImportTeleSeminarPP
27. 03. 2008
0 views

ImportTeleSeminarPP

LM EIP presentation
17. 12. 2007
0 views

LM EIP presentation

Module3
30. 03. 2008
0 views

Module3

CCGS
13. 04. 2008
0 views

CCGS

d01 005i
01. 12. 2007
0 views

d01 005i

fo
27. 09. 2007
0 views

fo

earl miller
19. 11. 2007
0 views

earl miller

Lect01
12. 12. 2007
0 views

Lect01

carol peters
18. 12. 2007
0 views

carol peters

cit
28. 12. 2007
0 views

cit

YLACL62
20. 11. 2007
0 views

YLACL62

GTC Products Presentation
03. 01. 2008
0 views

GTC Products Presentation

Perth summary
01. 01. 2008
0 views

Perth summary

chapter 12 powerpoint i
12. 11. 2007
0 views

chapter 12 powerpoint i

You found a WHAT
08. 11. 2007
0 views

You found a WHAT

Hughes
05. 11. 2007
0 views

Hughes

Luncheon Keynote Address Kenyon
03. 01. 2008
0 views

Luncheon Keynote Address Kenyon