scientific visualization using vtk robert putnam [email protected] scientific visualization with vtk –...

69
Scientific Scientific Visualization using VTK Visualization using VTK Robert Putnam [email protected] Scientific Visualization with VTK – Fall 2010

Post on 21-Dec-2015

233 views

Category:

Documents


7 download

TRANSCRIPT

Scientific Visualization using VTKScientific Visualization using VTK

Robert Putnam

[email protected]

Scientific Visualization with VTK – Fall 2010

OutlineOutline

• Introduction• VTK overview• VTK data geometry/topology• Case study• Interactive session

Scientific Visualization with VTK – Fall 2010

IntroductionIntroduction

Scientific Visualization with VTK – Fall 2010

*Adapted from The ParaView Tutorial, Moreland

• 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).

VTKVTK

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 pipelineGeneric visualization pipeline

Scientific Visualization with VTK – Fall 2010

Source(s) Filters(s) Output - - - - - - - - - - - - - - - - - - - - -

data/geometry/topology graphics

VTK terminology/modelVTK terminology/model

Scientific Visualization with VTK – Fall 2010

Source Filter Renderer

- - - - - - - - - - - - - - - - - - - - -

data/geometry/topology graphics

Mapper

VTK terminology/modelVTK terminology/model

Scientific Visualization with VTK – Fall 2010

Source/ Reader

Filter Renderer

- - - - - - - - - - - - - - - - - - - - -

data/geometry/topology graphics

Mapper

“Scene"

Lights, Camera

DataObject ProcessObject

Actor

RenderWindow

Pipeline -> Sample CodePipeline -> Sample CodevtkStructuredGridReader reader

reader SetFileName "density.vtk"

reader Update

vtkContourFilter iso

iso SetInputConnection [reader GetOutputPort]

iso SetValue 0 .26

vtkPolyDataMapper isoMapper

isoMapper SetInputConnection [iso GetOutputPort]

vtkActor isoActor

isoActor SetMapper isoMapper

vtkRenderer ren1

ren1 AddActor isoActor

vtkRenderWindow renWin

renWin AddRenderer ren1

renWin SetSize 500 500

renWin Render

Scientific Visualization with VTK – Fall 2010

Reader

Filter

Mapper

Actor

Renderer

RenderWindow

TCL v. C++TCL v. C++

• TCL

• C++

Scientific Visualization with VTK – Fall 2010

vtkStructuredGridReader reader

reader SetFileName "density.vtk"

reader Update

vtkContourFilter iso

iso SetInputConnection [reader GetOutputPort]

iso SetValue 0 .26

vtkStructuredGridReader *reader = vtkStructuredGridReader::New();reader->SetFileName("density.vtk");reader->Update();

vtkContourFilter *iso = vtkCountourFilter::New();iso->SetInputConnection(reader->GetOutputPort());iso->SetValue(0, .26);

Coding tip of the day!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. TopologyVTK – Geometry v. Topology

Geometry of a dataset ~= points

Scientific Visualization with VTK – Fall 2010

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?

VTK – Geometry v. TopologyVTK – Geometry v. Topology

Scientific Visualization with VTK – Fall 2010

0,1 1,1 2,1 3,1

0,0 1,0 2,0 3,0

VTK – Geometry v. TopologyVTK – Geometry v. Topology

Scientific Visualization with VTK – Fall 2010

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

VTK – Geometry v. TopologyVTK – Geometry v. Topology

Scientific Visualization with VTK – Fall 2010

or

0,1 1,1 2,1 3,1

0,0 1,0 2,0 3,0

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

VTK – Geometry v. TopologyVTK – Geometry v. Topology

Scientific Visualization with VTK – Fall 2010

or

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

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

Geometry/Topology StructureGeometry/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 DataCharacteristics 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

Scientific Visualization with VTK – Fall 2010

Data is discrete– Interpolation functions generate data values in between known points

Examples of Dataset TypesExamples 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)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 TypesExamples of Cell Types

Scientific Visualization with VTK – Fall 2010

Data AttributesData 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 PointsFile Format – Structured Points

Scientific Visualization with VTK – Fall 2010

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

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

File Format – Structured PointsFile Format – Structured Points

Scientific Visualization with VTK – Fall 2010

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

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

File Format – Structured PointsFile Format – Structured Points

Scientific Visualization with VTK – Fall 2010

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

0 0 1 1 0 0

0 0 1 1 0 0

0 0 1 1 0 0

0 0 1 1 0 0

File Format – Structured PointsFile Format – Structured Points

Scientific Visualization with VTK – Fall 2010

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

0 0 1 1 0 0

0 0 1 1 0 0

0 0 1 1 0 0

0 0 1 1 0 0

Structured Points – Tcl codeStructured Points – Tcl code

Scientific Visualization with VTK – Fall 2010

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

Structured Points – Tcl code (cont.)Structured Points – Tcl code (cont.)

Scientific Visualization with VTK – Fall 2010

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 .

Work flow – Case StudyWork flow – Case Study

BU Space Physics simulation Meteor trails in the ionosphere Data wrangling:

Consolidate datafiles (from parallel code), create single binary datafile

Add VTK header:

Scientific Visualization with VTK – Fall 2010

# vtk DataFile Version 3.0output of reassemble.cBINARYDATASET STRUCTURED_POINTSORIGIN 0.0 0.0 0.0SPACING 1.0 1.0 1.0DIMENSIONS 512 64 128POINT_DATA 4194304SCALARS plasma floatLOOKUP_TABLE default

Work flow – Case StudyWork flow – Case Study

Use Tcl for fast development/testing:

Scientific Visualization with VTK – Fall 2010

vtkStructuredPointsReader reader reader SetFileName "opp.vtk" reader Update

vtkContourFilter iso iso SetInputConnection \[reader GetOutputPort] iso SetValue 0 0.1

. . .

Work flow – Case StudyWork flow – Case Study

Add gaussian filter :

Scientific Visualization with VTK – Fall 2010

vtkImageGaussianSmooth gaussian gaussian SetInputConnection [reader GetOutputPort] gaussian SetDimensionality 3 gaussian SetRadiusFactor 1 vtkContourFilter iso iso SetInputConnection \ [gaussian GetOutputPort] iso SetValue 0 0.1

. . .

Work flow – Case StudyWork flow – Case Study

Add more isosurfaces :

Scientific Visualization with VTK – Fall 2010

vtkContourFilter iso iso SetInputConnection [gaussian GetOutputPort] iso SetValue 0 1.0 iso SetValue 1 0.5 iso SetValue 2 0.1

Work flow – Case StudyWork flow – Case Study

Port to C++, add cutplane, transparency :

Scientific Visualization with VTK – Fall 2010

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);

Work flow – Case StudyWork 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 - UIVTK – Getting Started - UI

Scientific Visualization with VTK – Fall 2010

Unix Shell:

katana:% cd ~/materials

katana:% vtk cone2.tcl

Keyboard shortcutsKeyboard shortcuts

Scientific Visualization with VTK – Fall 2010

j – joystick (continuous) modet – trackball mode

c –camera move modea –actor move mode

left mouse – rotate x,yctrl - left mouse – rotate zmiddle mouse –panright mouse –zoom

r –reset cameras/w –surface/wireframeu –command windowe –exit

Code – cone2.tclCode – cone2.tcl

Scientific Visualization with VTK – Fall 2010

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

ExerciseExercise

Scientific Visualization with VTK – Fall 2010

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

Code – ExerciseCode – Exercise

Scientific Visualization with VTK – Fall 2010

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

. . .

VTK - ReadersVTK - 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 - ReadersVTK - 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 GridFile Format – Structured Grid

Scientific Visualization with VTK – Fall 2010

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

. . .

Clipping, Cutting, SubsamplingClipping, 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 – ClippingCode – Clipping

Scientific Visualization with VTK – Fall 2010

Editor: clipping.tclvtkStructuredGridReader 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

Code – Cutplane/SlicingCode – Cutplane/Slicing

Scientific Visualization with VTK – Fall 2010

Editor: cutplane.tclvtkStructuredGridReader 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

Code – ExtractGridCode – ExtractGrid

Scientific Visualization with VTK – Fall 2010

Editor: extract.tclvtkStructuredGridReader 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

Color MappingColor 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 MappingCode – Color Mapping

Scientific Visualization with VTK – Fall 2010

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

. . .

ExerciseExercise

Scientific Visualization with VTK – Fall 2010

* Change the number of colors in colormap

* Reverse the Hue Range

* Change the Scalar Range

mapper SetScalarRange 0.0 0.7

ContouringContouring

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)Code – Contour (isoline)

Scientific Visualization with VTK – Fall 2010

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

. . .

Code – Contour (isosurface)Code – Contour (isosurface)

Scientific Visualization with VTK – Fall 2010

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

. . .

Scalar GenerationScalar 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 GenerationCode – Scalar Generation

Scientific Visualization with VTK – Fall 2010

Editor: hawaii.color.tclvtkPolyDataReader 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

Scalar generation – Color MapScalar generation – Color Map

Scientific Visualization with VTK – Fall 2010

Editor: hawaii.color2.tclvtkLookupTable 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

HedgehogsHedgehogs

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 – HedgeHogsCode – HedgeHogs

Scientific Visualization with VTK – Fall 2010

Editor: hedgehog.tclvtkStructuredGridReader 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

Oriented GlyphsOriented 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 GlyphsCode – Oriented Glyphs

Scientific Visualization with VTK – Fall 2010

Editor: glyph.tclvtkArrowSource 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]

Field LinesField 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 LinesField LinesStreamlines

• 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 – StreamlinesCode – Streamlines

Scientific Visualization with VTK – Fall 2010

Editor: streamLines.tclvtkPointSource 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

Code – StreamtubesCode – Streamtubes

Scientific Visualization with VTK – Fall 2010

Editor: streamTubes.varyRadius.tclvtkPointSource 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

AnnotationAnnotation

Annotation– used for annotating visualization

– VTK• vtkScalarBarActor

• vtkTextMapper

• vtkScaledTextActor

Scientific Visualization with VTK – Fall 2010

Code – colorBarCode – colorBar

Scientific Visualization with VTK – Fall 2010

Editor: colorBar.tclvtkStructuredGridReader 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

VTK - WritersVTK - 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 ImagesSaving Images

Saving Images– common formats:

• jpeg (lossy)

• png (lossless)

• postscript

• tiff (lossless)

– VTK•vtkWindowToImageFilter

•vtkRenderLargeImage

Scientific Visualization with VTK – Fall 2010

Code – Saving ImagesCode – Saving Images

Scientific Visualization with VTK – Fall 2010

Editor: output.tclrenWin 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

VTK - ResourcesVTK - Resources

Scientific Visualization with VTK – Fall 2010

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

Questions?Questions?

Tutorial survey:

- http://scv.bu.edu/survey/fall10tut_survey.html

Scientific Visualization with VTK – Fall 2010