<div dir="ltr">Hey Gang,<div><br></div><div>For the new VTK website, I came up with this list of some of the more fundamental and/or interesting tools in VTK with pointers to suggested places one might go to get started with them.</div><div><br></div><div>If you have suggestions to improve it, I would love to hear from you. Bonus points if you provide simple examples and/or cool looking images for us to show off (ideally on the vtk wiki example page)</div><div><br></div><div>(Once again kudos to David Doria, Bill Lorensen and everyone else who has contributed to the VTK wiki examples wiki project!)<br><br>thanks<div><br></div><div><div>-- Visualization --</div><div><br></div><div>Scalar (N=1) algorithms</div><div>* color mapping</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/ColoredElevationMap">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/ColoredElevationMap</a></div><div>* carpet plots (warp scalars)</div><div>  <a href="http://www.itk.org/Wiki/VTK/Examples/Cxx/PolyData/WarpScalar">http://www.itk.org/Wiki/VTK/Examples/Cxx/PolyData/WarpScalar</a></div><div>* iso-contouring </div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/IsosurfaceSampling">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/IsosurfaceSampling</a></div><div>* thresholding</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ElevationBandsWithGlyphs">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ElevationBandsWithGlyphs</a></div><div>Vector (N=3) algorithms</div><div>* hedgehogs (and other glyph types) </div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ElevationBandsWithGlyphs">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ElevationBandsWithGlyphs</a></div><div>* streamlines</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/StreamLines">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/StreamLines</a></div><div>* LIC (line integral convolution)</div><div>  <a href="http://www.paraview.org/Wiki/ParaView/Line_Integral_Convolution">http://www.paraview.org/Wiki/ParaView/Line_Integral_Convolution</a></div><div>* displacement plots (warp vectors)</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/WarpVector">http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/WarpVector</a></div><div>Tensor (N=6) algorithms</div><div>* tensor ellipsoids</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkTensorProbeWidget.html">http://www.vtk.org/doc/nightly/html/classvtkTensorProbeWidget.html</a></div><div>* tensor glyphs</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/TensorGlyph">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/TensorGlyph</a></div><div>* hyper-streamlines</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkHyperStreamline.html">http://www.vtk.org/doc/nightly/html/classvtkHyperStreamline.html</a></div><div><br></div><div>-- Modelling --</div><div><br></div><div>* procedural sources that generate simple and complex shapes etc    </div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/GeometricObjects/ParametricObjectsDemo">http://www.vtk.org/Wiki/VTK/Examples/Cxx/GeometricObjects/ParametricObjectsDemo</a></div><div>* implicit modeling</div><div>  <a href="http://www.itk.org/Wiki/VTK/Examples/Cxx/Filtering/ImplicitBoolean">http://www.itk.org/Wiki/VTK/Examples/Cxx/Filtering/ImplicitBoolean</a></div><div>* decimation</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/Decimation">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Meshes/Decimation</a></div><div>* boolean mesh operations</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/BooleanOperationPolyDataFilter">http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/BooleanOperationPolyDataFilter</a></div><div>* cutting and clipping</div><div>* probing</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/RandomProbe">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/RandomProbe</a></div><div>* normal generation</div><div>* connected components</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/ConnectivityFilter">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/ConnectivityFilter</a></div><div>* linear and rotational extrusion</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/LinearExtrusion">http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/LinearExtrusion</a></div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkRotationalExtrusionFilter.html">http://www.vtk.org/doc/nightly/html/classvtkRotationalExtrusionFilter.html</a></div><div>* splatting</div><div>* interactive 3D splines</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/KochanekSpline">http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/KochanekSpline</a></div><div>* appending, merging, cleaning data</div><div>* mesh smoothing</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/SmoothPolyDataFilter">http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/SmoothPolyDataFilter</a></div><div>* 2D & 3D Delaunay triangulation (including alpha shapes)</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Modelling/Delaunay3D">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Modelling/Delaunay3D</a></div><div>* surface reconstruction</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/SurfaceFromUnorganizedPoints">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/SurfaceFromUnorganizedPoints</a></div><div>* vector and scalar mesh warping</div><div><br></div><div>-- Imaging --</div><div><br></div><div>* diffusion filters</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageAnisotropicDiffusion3D.html">http://www.vtk.org/doc/nightly/html/classvtkImageAnisotropicDiffusion3D.html</a></div><div>* Butterworth, low-pass, high-pass filters</div><div>* dilation, erosion, skeleton</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageDilateErode3D">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageDilateErode3D</a></div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageDilateErode3D">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageDilateErode3D</a></div><div>* convolution</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageSeparableConvolution">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/ImageSeparableConvolution</a></div><div>* mathematics: difference, arithmetic, magnitude, divergence, gradient, mean</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageMathematics.html">http://www.vtk.org/doc/nightly/html/classvtkImageMathematics.html</a></div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageGradientMagnitude.html">http://www.vtk.org/doc/nightly/html/classvtkImageGradientMagnitude.html</a></div><div>* distance</div><div>* Fourier (FFT and RFFT), Gaussian, Sobel</div><div>  <a href="http://http//www.vtk.org/doc/nightly/html/classvtkImageFFT.html">http://http//www.vtk.org/doc/nightly/html/classvtkImageFFT.html</a></div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageRFFT.html">http://www.vtk.org/doc/nightly/html/classvtkImageRFFT.html</a></div><div>* histogram</div><div>  <a href="http://www.vtk.org/doc/nightly/html/c2_vtk_t_9.html#c2_vtk_t_vtkImageHistogram">http://www.vtk.org/doc/nightly/html/c2_vtk_t_9.html#c2_vtk_t_vtkImageHistogram</a></div><div>* anisotropic diffusion</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageAnisotropicDiffusion3D.html">http://www.vtk.org/doc/nightly/html/classvtkImageAnisotropicDiffusion3D.html</a></div><div>* flip, permute, resample, reslice, pad</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageReslice.html">http://www.vtk.org/doc/nightly/html/classvtkImageReslice.html</a></div><div>* blending</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/CombineImages">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/CombineImages</a></div><div>* direct volume rendering</div><div>  <a href="http://www.kitware.com/source/home/post/154">http://www.kitware.com/source/home/post/154</a></div><div><br></div><div>-- 3D Graphics --</div><div><br></div><div>Surface Rendering</div><div>* per point, cell or actor level control of explicit color values or color mapping of data values</div><div>* depth peeling based translucency and other multipass techniques</div><div>  <a href="http://www.vtk.org/Wiki/VTK/MultiPass_Rendering">http://www.vtk.org/Wiki/VTK/MultiPass_Rendering</a></div><div>* shadow mapping based shadows</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/Shadows">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/Shadows</a></div><div>Volume Rendering</div><div>* software ray casting implementations</div><div>* texture-based hardware implementations</div><div>* Surface geometry can be intermixed with volume rendering</div><div>Graphics Model</div><div>* Lights illuminate the scene</div><div>* Cameras define viewpoint</div><div>* Actors and mappers that connect surface and volume renderings of data into the scene</div><div>* Manual and automatic generation of level-of-detail in LOD Actors for interactive views of huge models</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/LODProp3D">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/LODProp3D</a></div><div>* Assemblies group actors into arbitrary hierarchies</div><div>* Mappers define geometry/link into visualization pipeline</div><div>* Renderers encapsulate the above into layers and areas within windows</div><div>Annotation</div><div>* 2D and 3D text with loadable fonts and latex math text markup</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkTextRenderer.html">http://www.vtk.org/doc/nightly/html/classvtkTextRenderer.html</a></div><div>* configurable scalar bars</div><div>* x-y plots</div><div>* Flying axes</div><div>* Overlay planes</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/BackgroundImage">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/BackgroundImage</a></div><div>* 3D Widgets with extendable view/render architecture </div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/BackgroundImage">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Images/BackgroundImage</a></div><div>Special Features</div><div>* Multiple windows/viewports</div><div>* Variety of stereo output drivers</div><div>* Motion and focal blur</div><div>Output to raster (png, jpeg, tiff, bmp and ppm) and vector (ps, pdf) formats</div><div><br></div><div>-- 2D Plots and Charts --</div><div><br></div><div>* vtkTable most of the plots and views take in tabular data</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/ConstructTable">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/ConstructTable</a></div><div>* vtkContextScene manages collections of charts and other essentially 2D items on the page</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkContextScene.html">http://www.vtk.org/doc/nightly/html/classvtkContextScene.html</a></div><div>* vtkChart and area in the context scene where a plot will be displayed</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkChart.html">http://www.vtk.org/doc/nightly/html/classvtkChart.html</a></div><div>* vtkPlot several types of plots that can be drawn in the Chart</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkPlot.html">http://www.vtk.org/doc/nightly/html/classvtkPlot.html</a></div><div>* vtkImageItem simply displays vtkImageData in the context scene</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkImageItem.html">http://www.vtk.org/doc/nightly/html/classvtkImageItem.html</a></div><div><br></div><div>-- Interaction and GUI --</div><div><br></div><div>* Integrates seamlessly with a variety of windowing systems including: Qt, FLTK, wxWindows, Tcl/Tk, Python/Tk, Java, X11, Motif, Windows, Cocoa and Carbon.</div><div>  <a href="https://vimeo.com/64823685">https://vimeo.com/64823685</a></div><div>* A variety of interaction styles including trackball and joystick modes for cameras and actors along with customizable derivatives.</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkInteractorStyle.html">http://www.vtk.org/doc/nightly/html/classvtkInteractorStyle.html</a></div><div>  <a href="http://www.itk.org/Wiki/VTK/Examples/Cxx/Images/PickPixel">http://www.itk.org/Wiki/VTK/Examples/Cxx/Images/PickPixel</a></div><div>* An extensive set of 3D widgets including: point, line, spline, plane, box, sphere, scalar bar and image plane widgets who’s appearance and behavior can be independently customized.</div><div>  <a href="http://www.vtk.org/Wiki/VTK_Widget_Examples">http://www.vtk.org/Wiki/VTK_Widget_Examples</a></div><div>* Picking and Selection for on screen mouse directed scene and data inspection.</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/Picking">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/Picking</a></div><div>  <a href="http://www.paraview.org/Wiki/Selection_Implementation_in_VTK_and_ParaView_III">http://www.paraview.org/Wiki/Selection_Implementation_in_VTK_and_ParaView_III</a></div><div>* command/observer event pattern – objects can watch other objects for a particular event and invoke callbacks as appropriate.</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Tutorials/Callbacks">http://www.vtk.org/Wiki/VTK/Tutorials/Callbacks</a></div><div>* Events can be prioritized and aborted for complex event handling</div><div><br></div><div>-- Infovis --</div><div>* vtkTable and vtkGraph classes that most of VTK’s info vis filters operate on</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Graphs/VisualizeDirectedGraph">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Graphs/VisualizeDirectedGraph</a></div><div>* parallel coordinates view</div><div>  <a href="http://www.paraview.org/Wiki/VTK/Examples/Cxx/InfoVis/ParallelCoordinatesView">http://www.paraview.org/Wiki/VTK/Examples/Cxx/InfoVis/ParallelCoordinatesView</a></div><div>* programmable glyphs</div><div>* splatting</div><div>* dimensional reduction</div><div>* abstract view infrastructure including vtkGraphLayoutView</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkGraphLayoutView.html">http://www.vtk.org/doc/nightly/html/classvtkGraphLayoutView.html</a></div><div>* treemaps</div><div>  <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/InfoVis/TreeMapView">http://www.vtk.org/Wiki/VTK/Examples/Cxx/InfoVis/TreeMapView</a></div><div>* hierarchical bundles</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkGraphHierarchicalBundleEdges.html">http://www.vtk.org/doc/nightly/html/classvtkGraphHierarchicalBundleEdges.html</a></div><div>* a variety of graph layout algorithms</div><div>  <a href="http://www.vtk.org/doc/nightly/html/classvtkGraphLayout.html">http://www.vtk.org/doc/nightly/html/classvtkGraphLayout.html</a></div></div><div><br></div><div><div><div><div><div>David E DeMarle<br>Kitware, Inc.<br>R&D Engineer<br>21 Corporate Drive<br>Clifton Park, NY 12065-8662<br>Phone: <a href="tel:518-881-4909" value="+15188814909" target="_blank">518-881-4909</a></div></div>
</div></div></div></div></div>