Scientific Visualization using VTK Robert Putnam [email protected] Scientific Visualization with VTK – Fall 2010
Download ReportTranscript Scientific Visualization using VTK Robert Putnam [email protected] Scientific Visualization with VTK – Fall 2010
Scientific Visualization using VTK Robert Putnam [email protected] Scientific Visualization with VTK – Fall 2010 Outline • Introduction • VTK overview • VTK data geometry/topology • Case study • Interactive session Scientific Visualization with VTK – Fall 2010 Introduction • Visualization: converting raw data to a form that is viewable and understandable to humans. • Scientific visualization: specifically concerned with data that has a well-defined representation in 2D or 3D space (e.g., from simulation mesh or scanner). *Adapted from The ParaView Tutorial, Moreland Scientific Visualization with VTK – Fall 2010 VTK Visualization Toolkit – Open source – Set of object-oriented class libraries for visualization and data analysis – Several language interfaces • • • • – – – – C++ Tcl Java Python Portable (MS Windows, Linux, OSX) Active developer community Good documentation available, free and otherwise Professional support services available from Kitware Scientific Visualization with VTK – Fall 2010 Generic visualization pipeline Filters(s) data/geometry/topology Scientific Visualization with VTK – Fall 2010 --------------------- Source(s) Output graphics VTK terminology/model Filter data/geometry/topology Scientific Visualization with VTK – Fall 2010 --------------------- Source Mapper Renderer graphics VTK terminology/model “Scene" Filter DataObject ProcessObject data/geometry/topology Scientific Visualization with VTK – Fall 2010 --------------------- Source/ Reader Lights, Camera Actor Mapper Renderer RenderWindow graphics Pipeline -> Sample Code vtkStructuredGridReader reader reader SetFileName "density.vtk" Reader reader Update vtkContourFilter iso iso SetInputConnection [reader GetOutputPort] Filter iso SetValue 0 .26 vtkPolyDataMapper isoMapper isoMapper SetInputConnection [iso GetOutputPort] vtkActor isoActor isoActor SetMapper isoMapper vtkRenderer ren1 Mapper Actor Renderer ren1 AddActor isoActor vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 renWin Render Scientific Visualization with VTK – Fall 2010 RenderWindow TCL v. C++ • TCL vtkStructuredGridReader reader reader SetFileName "density.vtk" reader Update vtkContourFilter iso iso SetInputConnection [reader GetOutputPort] iso SetValue 0 .26 • C++ vtkStructuredGridReader *reader = vtkStructuredGridReader::New(); reader->SetFileName("density.vtk"); reader->Update(); vtkContourFilter *iso = vtkCountourFilter::New(); iso->SetInputConnection(reader->GetOutputPort()); iso->SetValue(0, .26); Scientific Visualization with VTK – Fall 2010 Coding tip of the day! • • Google “VTK class list”, or Go to: http://www.vtk.org/doc/nightly/html/annotated.html Scientific Visualization with VTK – Fall 2010 VTK – Geometry v. Topology Geometry of a dataset ~= points 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 Topology ~= connections among points, which define cells So, what’s the topology here? Scientific Visualization with VTK – Fall 2010 VTK – Geometry v. Topology 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 Scientific Visualization with VTK – Fall 2010 VTK – Geometry v. Topology 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 or 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 Scientific Visualization with VTK – Fall 2010 VTK – Geometry v. Topology or 0,1 1,1 2,1 3,1 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 0,0 1,0 2,0 3,0 or 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 Scientific Visualization with VTK – Fall 2010 VTK – Geometry v. Topology or 0,1 1,1 2,1 3,1 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 0,0 1,0 2,0 3,0 or or 0,1 1,1 2,1 3,1 0,1 1,1 2,1 3,1 0,0 1,0 2,0 3,0 0,0 1,0 2,0 3,0 Scientific Visualization with VTK – Fall 2010 Geometry/Topology Structure Structure may be regular or irregular – Regular (structured) • need to store only beginning position, spacing, number of points • smaller memory footprint per cell (topology can be generated on the fly) • examples: image data, rectilinear grid, structured grid – Irregular (unstructured) • information can be represented more densely where it changes quickly • higher memory footprint (topology must be explicitly written) but more freedom • examples: polygonal data, unstructured grid Scientific Visualization with VTK – Fall 2010 Characteristics of Data Data is organized into datasets for visualization – Datasets consist of two pieces • organizing structure – points (geometry) – cells (topology) • data attributes associated with the structure – File format derived from organizing structure Data is discrete – Interpolation functions generate data values in between known points Scientific Visualization with VTK – Fall 2010 Examples of Dataset Types Structured Points (Image Data) – regular in both topology and geometry – examples: lines, pixels, voxels – applications: imaging CT, MRI Rectilinear Grid – regular topology but geometry only partially regular – examples: pixels, voxels Structured Grid (Curvilinear) – regular topology and irregular geometry – examples: quadrilaterals, hexahedron – applications: fluid flow, heat transfer Scientific Visualization with VTK – Fall 2010 Examples of Dataset Types (cont) Polygonal Data – irregular in both topology and geometry – examples: vertices, polyvertices, lines, polylines, polygons, triangle strips Unstructured Grid – irregular in both topology and geometry – examples: any combination of cells – applications: finite element analysis, structural design, vibration Scientific Visualization with VTK – Fall 2010 Examples of Cell Types Scientific Visualization with VTK – Fall 2010 Data Attributes Data attributes associated with the organizing structure – Scalars • single valued • examples: temperature, pressure, density, elevation – Vectors • magnitude and direction • examples: velocity, momentum – Normals • direction vectors (magnitude of 1) used for shading – Texture Coordinates • used to map a point in Cartesian space into 1, 2, or 3D texture space • used for texture mapping – Tensors • 3x3 only • examples: stress, strain Scientific Visualization with VTK – Fall 2010 File Format – Structured Points Editor structured-points.vtk: # vtk DataFile Version 3.0 first dataset ASCII DATASET STRUCTURED_POINTS DIMENSIONS 3 4 5 ORIGIN 0 0 0 SPACING 1 1 2 POINT_DATA 60 SCALARS temp-point float LOOKUP_TABLE default 000111111000 000111111000 000111111000 000111111000 000111111000 Scientific Visualization with VTK – Fall 2010 File Format – Structured Points Editor structured-points.vtk: # vtk DataFile Version 3.0 first dataset ASCII DATASET STRUCTURED_POINTS DIMENSIONS 3 4 5 ORIGIN 0 0 0 SPACING 1 1 2 POINT_DATA 60 SCALARS temp-point float LOOKUP_TABLE default 000111111000 000111111000 000111111000 000111111000 000111111000 Scientific Visualization with VTK – Fall 2010 File Format – Structured Points Editor structured-points2.vtk: # vtk DataFile Version 3.0 first dataset ASCII DATASET STRUCTURED_POINTS DIMENSIONS 3 4 5 ORIGIN 0 0 0 SPACING 1 1 2 CELL_DATA 24 SCALARS temp-cell float LOOKUP_TABLE default 001100 001100 001100 001100 Scientific Visualization with VTK – Fall 2010 File Format – Structured Points Editor structured-points2.vtk: # vtk DataFile Version 3.0 first dataset ASCII DATASET STRUCTURED_POINTS DIMENSIONS 3 4 5 ORIGIN 0 0 0 SPACING 1 1 2 CELL_DATA 24 SCALARS temp-cell float LOOKUP_TABLE default 001100 001100 001100 001100 Scientific Visualization with VTK – Fall 2010 Structured Points – Tcl code Editor structured-points.tcl: vtkStructuredPointsReader reader reader SetFileName "structured-points.vtk" reader Update vtkLookupTable lut lut SetNumberOfColors 2 lut SetTableValue 0 0.0 0.0 1.0 1 lut SetTableValue 1 1.0 0.0 0.0 1 vtkDataSetMapper mapper mapper SetInputConnection [reader GetOutputPort] mapper SetLookupTable lut vtkActor actor actor SetMapper mapper [actor GetProperty] EdgeVisibilityOn [actor GetProperty] SetLineWidth 2 Scientific Visualization with VTK – Fall 2010 Structured Points – Tcl code (cont.) Editor structured-points.tcl: vtkRenderer ren1 ren1 AddActor actor ren1 SetBackground 0.5 0.5 0.5 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize wm withdraw . Scientific Visualization with VTK – Fall 2010 Work flow – Case Study BU Space Physics simulation Meteor trails in the ionosphere Data wrangling: Consolidate datafiles (from parallel code), create single binary datafile # vtk DataFile Version 3.0 Add VTK header: output of reassemble.c BINARY DATASET STRUCTURED_POINTS ORIGIN 0.0 0.0 0.0 SPACING 1.0 1.0 1.0 DIMENSIONS 512 64 128 POINT_DATA 4194304 SCALARS plasma float LOOKUP_TABLE default Scientific Visualization with VTK – Fall 2010 Work flow – Case Study Use Tcl for fast development/testing: vtkStructuredPointsReader reader reader SetFileName "opp.vtk" reader Update vtkContourFilter iso iso SetInputConnection \ [reader GetOutputPort] iso SetValue 0 0.1 . . . Scientific Visualization with VTK – Fall 2010 Work flow – Case Study Add gaussian filter : vtkImageGaussianSmooth gaussian gaussian SetInputConnection [reader GetOutputPort] gaussian SetDimensionality 3 gaussian SetRadiusFactor 1 vtkContourFilter iso iso SetInputConnection \ [gaussian GetOutputPort] iso SetValue 0 0.1 . . . Scientific Visualization with VTK – Fall 2010 Work flow – Case Study Add more isosurfaces : vtkContourFilter iso iso SetInputConnection [gaussian GetOutputPort] iso SetValue 0 1.0 iso SetValue 1 0.5 iso SetValue 2 0.1 Scientific Visualization with VTK – Fall 2010 Work flow – Case Study Port to C++, add cutplane, transparency : vtkPlane *plane = vtkPlane::New(); plane->SetOrigin(256,2,63.5); plane->SetNormal(0,1,0); vtkCutter *planeCut = vtkCutter::New(); planeCut->SetInputConnection(reader->GetOutputPort()); planeCut->SetCutFunction(plane); Scientific Visualization with VTK – Fall 2010 Work flow – Case Study Change color map, use script to loop over *.vtk, generate multiple jpegs, read into Adobe Premiere, produce animation: Scientific Visualization with VTK – Fall 2010 VTK – Getting Started - UI Unix Shell: katana:% cd ~/materials katana:% vtk cone2.tcl Scientific Visualization with VTK – Fall 2010 Keyboard shortcuts j – joystick (continuous) mode t – trackball mode c –camera move mode a –actor move mode left mouse – rotate x,y ctrl - left mouse – rotate z middle mouse –pan right mouse –zoom r –reset camera s/w –surface/wireframe u –command window e –exit Scientific Visualization with VTK – Fall 2010 Code – cone2.tcl Editor cone2.tcl: vtkConeSource cone cone SetResolution 100 vtkPolyDataMapper coneMapper coneMapper SetInput [cone GetOutput] vtkActor coneActor coneActor SetMapper coneMapper [coneActor GetProperty] SetColor 1.0 0.0 0.0 vtkRenderer ren1 ren1 SetBackground 0.0 0.0 0.0 ren1 AddActor coneActor vtkRenderWindow renWin renWin SetSize 500 500 renWin AddRenderer ren1 vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Scientific Visualization with VTK – Fall 2010 Exercise Editor: cone3.tcl Add coneActor2, and color it green. (Copy coneActor, and make appropriate changes. Remember to add the new actor to the render window [near the end of the “pipeline”].) Optional: to rotate, scale and set the position away from the origin, use the following: coneActor2 RotateZ 90 coneActor2 SetScale 0.5 0.5 0.5 coneActor2 SetPosition -1.0 0.0 0.0 Scientific Visualization with VTK – Fall 2010 Code – Exercise Editor: cone3.tcl ... vtkActor coneActor2 coneActor2 SetMapper coneMapper [coneActor2 GetProperty] SetColor 0.0 1.0 0.0 coneActor2 RotateZ 90 coneActor2 SetScale 0.5 0.5 0.5 coneActor2 SetPosition -1.0 0.0 0.0 . . . ren1 AddActor coneActor ren1 AddActor coneActor2 ... Scientific Visualization with VTK – Fall 2010 VTK - Readers Image and Volume Readers – – – – – vtkStructuredPointsReader - read VTK structured points data files vtkSLCReader - read SLC structured points files vtkTIFFReader - read files in TIFF format vtkVolumeReader - read image (volume) files vtkVolume16Reader - read 16-bit image (volume) files Structured Grid Readers – vtkStructuredGridReader - read VTK structured grid data files – vtkPLOT3DReader - read structured grid PLOT3D files Rectilinear Grid Readers – vtkRectilinearGridReader - read VTK rectilinear grid data files Unstructured Grid Readers – vtkUnstructuredGridReader - read VTK unstructured grid data files Scientific Visualization with VTK – Fall 2010 VTK - Readers Polygonal Data Readers – – – – – – – vtkPolyDataReader - read VTK polygonal data files vtkBYUReader - read MOVIE.BYU files vtkMCubesReader - read binary marching cubes files vtkOBJReader - read Wavefront (Maya) .obj files vtkPLYReader - read Stanford University PLY polygonal data files vtkSTLReader - read stereo-lithography files vtkUGFacetReader - read EDS Unigraphic facet files Image and Volume Readers (add’l) – – – – – – vtkBMPReader - read PC bitmap files vtkDEMReader - read digital elevation model files vtkJPEGReader - read JPEG files vtkImageReader - read various image files vtkPNMReader - read PNM (ppm, pgm, pbm) files vtkPNGRReader - read Portable Network Graphic files Scientific Visualization with VTK – Fall 2010 File Format – Structured Grid Editor density.vtk: # vtk DataFile Version 3.0 vtk output ASCII DATASET STRUCTURED_GRID DIMENSIONS 57 33 25 POINTS 47025 float 2.667 -3.77476 23.8329 2.94346 -3.74825 23.6656 3.21986 -3.72175 23.4982 3.50007 -3.70204 23.3738 3.9116 -3.72708 23.5319 4.1656 -3.69529 23.3312 ... POINT_DATA 47025 SCALARS Density float LOOKUP_TABLE default 0.639897 0.239841 0.252319 0.255393 0.252118 0.246661 0.240134 0.234116 0.229199 0.225886 0.224268 0.224647 0.231496 0.246895 0.26417 0.27585 0.278987 0.274621 ... VECTORS Momentum float 0 0 0 13.753 -5.32483 -19.964 42.3106 -15.57 -43.0034 64.2447 -13.3958 -46.2281 73.7861 -4.83205 -36.3829 88.3374 6.23797 -22.8846 ... Scientific Visualization with VTK – Fall 2010 Clipping, Cutting, Subsampling Selection Algorithms - Clipping • can reveal internal details of surface • VTK - vtkClipDataSet - Cutting/Slicing • cutting through a dataset with a surface • VTK - vtkCutter - Subsampling • reduces data size by selecting a subset of the original data • VTK - vtkExtractGrid Scientific Visualization with VTK – Fall 2010 Code – Clipping Editor: clipping.tcl vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkPlane plane eval plane SetOrigin [[reader GetOutput] GetCenter] plane SetNormal -0.287 0 0.9579 vtkClipDataSet clip clip SetInputConnection [reader GetOutputPort] clip SetClipFunction plane clip InsideOutOn vtkDataSetMapper clipMapper clipMapper SetInputConnection [clip GetOutputPort] eval clipMapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor clipActor clipActor SetMapper clipMapper Scientific Visualization with VTK – Fall 2010 Code – Cutplane/Slicing Editor: cutplane.tcl vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkPlane plane eval plane SetOrigin [[reader GetOutput] GetCenter] plane SetNormal -0.287 0 0.9579 vtkCutter planeCut planeCut SetInputConnection [reader GetOutputPort] planeCut SetCutFunction plane vtkPolyDataMapper cutMapper cutMapper SetInputConnection [planeCut GetOutputPort] eval cutMapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor cutActor cutActor SetMapper cutMapper Scientific Visualization with VTK – Fall 2010 Code – ExtractGrid Editor: extract.tcl vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkExtractGrid extract extract SetInputConnection [reader GetOutputPort] extract SetVOI -1000 1000 -1000 1000 7 10 extract SetSampleRate 1 1 1 extract IncludeBoundaryOn vtkDataSetMapper mapper mapper SetInputConnection [extract GetOutputPort] eval mapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor extractActor extractActor mapper Scientific Visualization with VTK – Fall 2010 Color Mapping Scalar Algorithms – Color Mapping • maps scalar data to colors • implemented by using scalar values as an index into a color lookup table • specify a HSVA (Hue-Saturation-Value-Alpha) ramp and then generate the colors in the table by using linear interpolation into the HSVA space. – VTK • vtkLookupTable • vtkDataSetMapper Scientific Visualization with VTK – Fall 2010 Code – Color Mapping Editor: colormap.numcolors.tcl ... vtkLookupTable lut lut SetNumberofColors 16 lut SetHueRange 0.0 0.667 lut Build vtkStructuredGridReader reader reader SetFileName “subset.vtk” reader Update vtkDataSetMapper mapper mapper SetInputConnection [reader GetOutputPort] mapper SetLookupTable lut eval mapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor actor actor SetMapper mapper ... Scientific Visualization with VTK – Fall 2010 Exercise * Change the number of colors in colormap * Reverse the Hue Range * Change the Scalar Range mapper SetScalarRange 0.0 0.7 Scientific Visualization with VTK – Fall 2010 Contouring Scalar Algorithms (cont) – Contouring • construct a boundary between distinct regions, two steps: – explore space to find points near contour – connect points into contour (2D) or surface (3D) • 2D contour map (isoline): – applications: elevation contours from topography, pressure contours (weather maps) from meteorology3D isosurface: • 3D isosurface: – applications: tissue surfaces from tomography, constant pressure or temperature in fluid flow, implicit surfaces from math and CAD – VTK • vtkContourFilter Scientific Visualization with VTK – Fall 2010 Code – Contour (isoline) Editor: contour.single.tcl ... vtkStructuredGridReader reader reader SetFileName “subset.vtk” reader Update vtkContourFilter contour contour SetInputConnection [reader GetOutputPort] contour SetValue 0 0.26 vtkPolyDataMapper contourMapper contourMapper SetInputConnection [contour GetOutputPort] eval contourMapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor contourActor contourActor SetMapper contourMapper ... Scientific Visualization with VTK – Fall 2010 Code – Contour (isosurface) Editor: isosurface.tcl ... vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkContourFilter iso iso SetInputConnection [reader GetOutputPort] iso SetValue 0 0.26 vtkPolyDataMapper isoMapper isoMapper SetInputConnection [iso GetOutputPort] eval isoMapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor isoActor isoActor SetMapper isoMapper ... Scientific Visualization with VTK – Fall 2010 Scalar Generation Scalar Algorithms (cont) – Scalar Generation • extract scalars from part of data • example: extracting z coordinate (elevation) from terrain data to create scalar values – VTK • vtkElevationFilter Scientific Visualization with VTK – Fall 2010 Code – Scalar Generation Editor: hawaii.color.tcl vtkPolyDataReader hawaii hawaii SetFileName "honolulu.vtk" hawaii Update vtkElevationFilter elevation elevation SetInput [hawaii GetOutput] elevation SetLowPoint 0 0 0 elevation SetHighPoint 0 0 1000 elevation SetScalarRange 0 1000 vtkLookupTable lut lut SetHueRange 0.7 0 vtkDataSetMapper hawaiiMapper hawaiiMapper SetInput [elevation GetOutput] hawaiiMapper SetScalarRange 0 1000 hawaiiMapper SetLookupTable lut vtkActor hawaiiActor hawaiiActor SetMapper hawaiiMapper Scientific Visualization with VTK – Fall 2010 Scalar generation – Color Map Editor: hawaii.color2.tcl vtkLookupTable lut lut SetNumberOfColors 9 lut SetTableValue 0 0 0.4 0.8 1 lut SetTableValue 1 0.0 0.75 0.2 1 lut SetTableValue 2 0.25 0.625 0.5 1 lut SetTableValue 3 0.0 0.5 0.25 1 lut SetTableValue 4 0.5 0.365 0.0 1 lut SetTableValue 5 0.75 0.625 0.25 1 lut SetTableValue 6 1.0 0.75 0.625 1 lut SetTableValue 7 1.0 0.75 0.5 1 lut SetTableValue 8 1.0 1 1 1 Scientific Visualization with VTK – Fall 2010 Hedgehogs Vector Algorithms – Hedgehogs • oriented scaled line for each vector • scale indicates magnitude • color indicates magnitude, pressure, temperature, or any variable – VTK • vtkHedgeHog Scientific Visualization with VTK – Fall 2010 Code – HedgeHogs Editor: hedgehog.tcl vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkHedgeHog hhog hhog SetInput [reader GetOutput] hhog SetScaleFactor 0.001 vtkPolyDataMapper hhogMapper hhogMapper SetInput [hhog GetOutput] hhogMapper SetLookupTable lut eval hhogMapper SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor hhogActor hhogActor SetMapper hhogMapper Scientific Visualization with VTK – Fall 2010 Oriented Glyphs Vector Algorithms (cont) – Oriented Glyphs • orientation indicates direction • scale indicates magnitude • color indicates magnitude, pressure, temperature, or any variable – VTK • vtkGlyph3D Scientific Visualization with VTK – Fall 2010 Code – Oriented Glyphs Editor: glyph.tcl vtkArrowSource arrow arrow SetTipResolution 6 arrow SetTipRadius 0.1 arrow SetTipLength 0.35 arrow SetShaftResolution 6 arrow SetShaftRadius 0.03 vtkGlyph3D glyph glyph SetInput [reader GetOutputPort] glyph SetSource [arrow GetOutputPort] glyph SetVectorModeToUseVector glyph SetColorModeToColorByScalar glyph SetScaleModeToDataScalingOff glyph OrientOn glyph SetScaleFactor 0.2 vtkPolyDataMapper glyphMapper glyphMapper SetInput [glyph GetOutput] glyphMapper SetLookupTable lut glyphMapper ScalarVisibilityOn eval glyphMapper SetScalarRange [[reader GetOutput] GetScalarRange] Scientific Visualization with VTK – Fall 2010 Field Lines Vector Algorithms (cont) – Field Lines • Fluid flow is described by a vector field in three dimensions for steady (fixed time) flows or four dimensions for unsteady (time varying) flows • Three techniques for determining flow – Pathline (Trace) • tracks particle through unsteady (time-varying) flow • shows particle trajectories over time • rake releases particles from multiple positions at the same time instant • reveals compression, vorticity – Streamline • tracks particle through steady (fixed-time) flow • holds flow steady at a fixed time • snapshot of flow at a given time instant – Streakline • particles released from the same position over a time interval (time-varying) • snapshot of the variation of flow over time • example: dye steadily injected into fluid at a fixed point Scientific Visualization with VTK – Fall 2010 Field Lines Streamlines • Lines show particle flow • VTK – vtkStreamTracer Streamlets • half way between streamlines and glyphs • VTK - vtkStreamTracer, vtkGlyph3D Streamribbon • rake of two particles to create a ribbon • VTK - vtkStreamTracer, vtkRuledSurfaceFilter Streamtube • circular rake of particles to create a tube • VTK - vtkStreamTracer, vtkTubeFilter Scientific Visualization with VTK – Fall 2010 Code – Streamlines Editor: streamLines.tcl vtkPointSource seeds seeds SetRadius 3.0 eval seeds SetCenter [[reader GetOutput] GetCenter] seeds SetNumberOfPoints 100 vtkRungeKutta4 integ vtkStreamTracer streamer streamer SetInputConnection [reader GetOutputPort] streamer SetSourceConnection [seeds GetOutputPort] streamer SetMaximumPropagation 100 streamer SetMaximumPropagationUnitToTimeUnit streamer SetInitialIntegrationStepUnitToCellLengthUnit streamer SetInitialIntegrationStep 0.1 streamer SetIntegrationDirectionToBoth streamer SetIntegrator integ vtkPolyDataMapper mapStreamLines mapStreamLines SetInputConnection [streamer GetOutputPort] eval mapStreamLines SetScalarRange [[reader GetOutput] GetScalarRange] vtkActor streamLineActor streamLineActor SetMapper mapStreamLines Scientific Visualization with VTK – Fall 2010 Code – Streamtubes Editor: streamTubes.varyRadius.tcl vtkPointSource seeds seeds SetRadius 1.0 seeds SetNumberOfPoints 50 vtkRungeKutta4 integ vtkStreamTracer streamer streamer SetInputConnection [reader GetOutputPort] streamer SetSourceConnection [seeds GetOutputPort] ... vtkTubeFilter streamTube streamTube SetInputConnection [streamer GetOutputPort] streamTube SetRadius 0.01 streamTube SetNumberOfSides 6 # streamTube SetVaryRadiusToVaryRadiusOff streamTube SetVaryRadiusToVaryRadiusByScalar vtkPolyDataMapper mapStreamTube mapStreamTube SetInputConnection [streamTube GetOutputPort] mapStreamTube SetLookupTable lut eval mapStreamTube SetScalarRange [[[[reader GetOutput] GetPointData] GetScalars] GetRange] vtkActor streamTubeActor streamTubeActor SetMapper mapStreamTube [streamTubeActor GetProperty] BackfaceCullingOn Scientific Visualization with VTK – Fall 2010 Annotation Annotation – used for annotating visualization – VTK • vtkScalarBarActor • vtkTextMapper • vtkScaledTextActor Scientific Visualization with VTK – Fall 2010 Code – colorBar Editor: colorBar.tcl vtkStructuredGridReader reader reader SetFileName “density.vtk” reader Update vtkScalarBarActor scalarBar scalarBar SetLookupTable lut scalarBar SetTitle "Combustor Density Magnitude" scalarBar SetNumberOfLabels 2 [scalarBar GetPositionCoordinate] SetValue 0.1 0.01 scalarBar SetOrientationToHorizontal scalarBar SetWidth 0.8 scalarBar SetHeight 0.09 vtkRenderer ren1 vtkRenderWindow renWin renWin AddRenderer ren1 vtkRenderWindowInteractor iren iren SetRenderWindow renWin ren1 AddActor streamTubeActor ren1 AddActor outlineActor ren1 AddActor scalarBar ren1 SetBackground 0.5 0.5 0.5 Scientific Visualization with VTK – Fall 2010 VTK - Writers Polygonal Data Writers – – – – – – – vtkBYUWriter - write MOVIE.BYU files vtkCGMWriter - write 2D polygonal data as a CGM file vtkIVWriter - write Inventor files vtkMCubesWriter - write triangles in marching cubes format vtkPolyDataWriter - write VTK polygonal data files vtkPLYWriter - write Standford University PLY polygonal data files vtkSTLWriter - write stereo-lithography files Image and Volume writers – – – – – – – vtkBMPwriter - write PC bitmap files vtkJPEGwriter - write images in JPEG format vtkPostscriptWriter – write image files in Postscript format vtkPNMwriter - write PNM (ppm, pgm, pbm) image files vtkPNGwriter - write image file in Portable Network Graphic format vtkTIFFWriter – write image files in TIFF format vtkStructuredPointsWriter – write a vtkStructuredPoints file Scientific Visualization with VTK – Fall 2010 Saving Images Saving Images – common formats: • jpeg (lossy) • png (lossless) • postscript • tiff (lossless) – VTK •vtkWindowToImageFilter •vtkRenderLargeImage Scientific Visualization with VTK – Fall 2010 Code – Saving Images Editor: output.tcl renWin Render vtkWindowToImageFilter w2if w2if SetInput renWin w2if Update vtkRenderLargeImage renderLarge renderLarge SetInput ren1 renderLarge SetMagnification 4 #vtkJPEGWriter writer # writer SetInputConnection [w2if GetOutputPort] # writer SetFileName "image.jpg" # writer SetQuality 100 # writer Write #vtkPNGWriter writer # writer SetInputConnection [w2if GetOutputPort] # writer SetFileName "image.png" # writer Write #vtkPostScriptWriter writer # writer SetInputConnection [w2if GetOutputPort] # writer SetFileName "image.ps" # writer Write #vtkTIFFWriter writer # writer SetInputConnection [w2if GetOutputPort] # writer SetFileName "image.tif" # writer Write vtkTIFFWriter lwriter lwriter SetInputConnection [renderLarge GetOutputPort] lwriter SetFileName "largeimage.tif" lwriter Write Scientific Visualization with VTK – Fall 2010 VTK - Resources IS&T tutorials – Scientific Visualization with VTK www.bu.edu/tech/research/training/tutorials/vtk/ – VTK Examples www.bu.edu/tech/research/training/scv-software-packages/vtk/vtk_examples/ Texts – The Visualization Toolkit, 4th Edition, Kitware, Inc, 2006. – The VTK User’s Guide, 5th Edition, Kitware, Inc, 2006. Websites – www.vtk.org – www.kitware.com – www.vtk.org/doc/release/5.4/html/classes.html Wiki – www.vtk.org/Wiki/VTK Mailing Lists – www.vtk.org/VTK/help/mailing.html Scientific Visualization with VTK – Fall 2010 Questions? Tutorial survey: - http://scv.bu.edu/survey/fall10tut_survey.html Scientific Visualization with VTK – Fall 2010