[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