[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