[vtkusers] Does vtk StreamLine/StreamTracer dislike vtkVoxel's?
Peter Schmitt
pschmitt at gmail.com
Tue Jul 19 19:21:30 EDT 2005
Hey vtkusers,
I have an unstructured grid consisting of many adjacent vtkVoxels
(cubes) with 8 vertices with one scalar and one vector corresponding
to every vertex.
In both Paraview and a custom VTK app, I can visualize a vectorfield.
Here's a snapshot of a sampling of the vectors:
http://www-unix.mcs.anl.gov/~pschmitt/reynolds400-steadygeom-pulseinflow0.5/images/reynolds-vectors.jpg
However, I am having problems getting streamlines working in both
paraview and a custom vtk app: vtkStreamTracer and vtkStreamLine
create no streamlines whatsoever.
I can compile my code without errors or warnings, but no streamlines
are displayed to the screen. On execution, I get the following
warning:
Warning: In /software/linux-sles8-ia32/vizdev/vtk-nvgl-mpi-4.4.2-gcc-r1/src/Graphics/vtkRibbonFilter.cxx,
line 93
vtkRibbonFilter (0x8112c28): No input data!
I have tried variations of all the vtkStreamTracer and vtkStreamLine
examples and tests (sometimes using vtkRibbonFilter and sometimes
vtkTubeFilter), but the same thing happens: no streamlines! The
program loads up very quickly (as in it doesn't seem to be doing much
computation as I would expect to create streamlines). Am I having
difficulties because I store my data as voxels of an unstructured
grid? (I don't think so since the vtkStream* classes take vtkDataSet
as input).
//start snip
vtkUnstructuredGrid* ugrid = vtkUnstructuredGrid::New()
//load data into vtkUnstrucutredGrid...
vtkRungeKutta4* integ = vtkRungeKutta4::New();
vtkPointSource* seeds = vtkPointSource::New();
seeds->SetRadius(1.0);
seeds->SetCenter(140.784, 57.6672, -2.98392); //note: this point
is in my dataset!
seeds->SetNumberOfPoints(10);
vtkStreamTracer* streamer = vtkStreamTracer::New();
streamer->SetInput(ugrid);
streamer->SetSource(seeds->GetOutput());
streamer->SetMaximumPropagation(0, 9E8);
//streamer->SetMaximumPropagation(1, 9E8);
streamer->SetMinimumIntegrationStep(1, 0.1);
streamer->SetMaximumIntegrationStep(2, 0.2);
streamer->SetIntegrationDirection(0);
streamer->SetIntegrator(integ);
streamer->SetRotationScale(0.5);
streamer->SetMaximumError(1.0E-8);
streamer->DebugOn();
streamer->Update();
vtkRibbonFilter* rf = vtkRibbonFilter::New();
rf->SetInput(streamer->GetOutput());
rf->SetWidth(1.0);
rf->VaryWidthOff();
vtkPolyDataMapper* mapStream = vtkPolyDataMapper::New();
mapStream->SetInput(rf->GetOutput());
mapStream->SetScalarRange(ugrid->GetScalarRange());
vtkActor* streamActor = vtkActor::New();
streamActor->SetMapper(mapStream);
//stop snip
Thanks!
--
Pete
More information about the vtkusers
mailing list