[vtk-developers] [VTK 0012154]: vtkStreamer::Integrate() does not return for some points

Mantis Bug Tracker mantis at public.kitware.com
Wed May 4 17:10:33 EDT 2011


The following issue has been SUBMITTED. 
====================================================================== 
http://www.vtk.org/Bug/view.php?id=12154 
====================================================================== 
Reported By:                Raine
Assigned To:                
====================================================================== 
Project:                    VTK
Issue ID:                   12154
Category:                   Development
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2011-05-04 17:10 EDT
Last Modified:              2011-05-04 17:10 EDT
====================================================================== 
Summary:                    vtkStreamer::Integrate() does not return for some
points
Description: 
I was trying to generate dense streamline for the "combq.bin" and "combxyz.bin"
from VTK Data, and the program get stuck at vtkStreamer::Integrate() and never
returns.




Steps to Reproduce: 
//Run this program to reproduce the bug.
//This program is a modified version from VTK example for streamline.
//A copy of this plus the necessary cmake file is attached.

#include <vtkSmartPointer.h>
#include <vtkActor.h>
#include <vtkPLOT3DReader.h>
#include <vtkPlaneSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkStreamLine.h>
#include <vtkTestUtilities.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkStructuredGridOutlineFilter.h>
#include <vtkProperty.h>
 
#include <vtkTesting.h>
 
// The environment variable VTK_DATA_ROOT will be used.
// Make sure it is set accordingly!
 
int main(int argc, char *argv[])
{
  // Locate VTK_DATA_ROOT
  vtkSmartPointer<vtkTesting> testHelper =
    vtkSmartPointer<vtkTesting>::New();
  std::string dataRoot = testHelper->GetDataRoot();
 
  // Start by loading some data.
  std::string xyzFile = dataRoot + "/Data/" + "combxyz.bin";
  std::string qFile = dataRoot + "/Data/" + "combq.bin";
  vtkSmartPointer<vtkPLOT3DReader> pl3d = 
    vtkSmartPointer<vtkPLOT3DReader>::New();
  pl3d->SetXYZFileName(xyzFile.c_str());
  pl3d->SetQFileName(qFile.c_str());
  pl3d->SetScalarFunctionNumber(100);
  pl3d->SetVectorFunctionNumber(202);
  pl3d->Update();
 
  // Streamline itself
  vtkSmartPointer<vtkStreamLine> streamLine = 
    vtkSmartPointer<vtkStreamLine>::New();
  streamLine->SetInputConnection(pl3d->GetOutputPort());
  
  streamLine->SetStartPosition(6.21832, -3.01398, 29.3924);
  
  streamLine->SetMaximumPropagationTime(10);
  streamLine->SetIntegrationStepLength(.2);
  streamLine->SetStepLength(.001);
  streamLine->SetNumberOfThreads(1);
  streamLine->SetIntegrationDirectionToIntegrateBothDirections();
  streamLine->VorticityOn();
  
  vtkSmartPointer<vtkPolyDataMapper> streamLineMapper = 
    vtkSmartPointer<vtkPolyDataMapper>::New();
  streamLineMapper->SetInputConnection(streamLine->GetOutputPort());
  
 
  vtkSmartPointer<vtkActor> streamLineActor = vtkSmartPointer<vtkActor>::New();
  streamLineActor->SetMapper(streamLineMapper);
  streamLineActor->VisibilityOn();
  
  // Outline-Filter for the grid
  vtkSmartPointer<vtkStructuredGridOutlineFilter> outline = 
    vtkSmartPointer<vtkStructuredGridOutlineFilter>::New();
  outline->SetInputConnection(pl3d->GetOutputPort());
 
  vtkSmartPointer<vtkPolyDataMapper> outlineMapper = 
    vtkSmartPointer<vtkPolyDataMapper>::New();
  outlineMapper->SetInputConnection(outline->GetOutputPort());
 
  vtkSmartPointer<vtkActor> outlineActor = 
    vtkSmartPointer<vtkActor>::New();
  outlineActor->SetMapper(outlineMapper);
  outlineActor->GetProperty()->SetColor(1, 1, 1);
 
  // Create the RenderWindow, Renderer and Actors
  vtkSmartPointer<vtkRenderer> renderer = 
    vtkSmartPointer<vtkRenderer>::New();
    
  vtkSmartPointer<vtkRenderWindow> renderWindow = 
    vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->AddRenderer(renderer);
  
 vtkSmartPointer<vtkRenderWindowInteractor> interactor = 
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  interactor->SetRenderWindow(renderWindow);
 
  vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = 
    vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
  interactor->SetInteractorStyle(style);
 
  renderer->AddActor(streamLineActor);
  renderer->AddActor(outlineActor);
  
  // Add the actors to the renderer, set the background and size
  renderer->SetBackground(0.1, 0.2, 0.4);
  renderWindow->SetSize(600, 600);
  interactor->Initialize();
  renderWindow->Render();
 
  interactor->Start();
 
  return EXIT_SUCCESS;
}

Additional Information: 
This only happens for a certain points, and when MaximumPropagationTime is long
enough.
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2011-05-04 17:10 Raine          New Issue                                    
2011-05-04 17:10 Raine          File Added: VTK streamline bug.zip              
     
======================================================================




More information about the vtk-developers mailing list