Hi all,
i want to plot streamline on surface
I have tried with this method
void CGLModelViewCtrl::CreateSurfaceStreamlinesPlot()
{
if (m_pUnstructuredGridModel == NULL)
{
return;
}
// convert from unstructuredGrid to PolyData
vtkSmartPointer<vtkGeometryFilter> extract = vtkSmartPointer<vtkGeometryFilter>::New();
extract->SetInputConnection(m_pUnstructuredGridModel->GetOutputPort());
vtkSmartPointer<vtkDepthSortPolyData> depthSort = CreateDepthSortVTkForPolyData(extract);
// ======================== create gray model
CreateGrayModelActor(depthSort);
if (m_pFillGrayModelActor != NULL)
m_pFillGrayModelActor->GetProperty()->SetOpacity(0.1);
#if VTK_MAJOR_VERSION >= 7
m_pUnstructuredGridModel->GetOutput()->SetGlobalReleaseDataFlag(1);
#else
m_pUnstructuredGridModel->GetOutput()->ReleaseDataFlagOn();
#endif
m_bShowWireframe = TRUE;
//================================================working streamtracer ==============================================
vtkUnstructuredGrid * pGlobalUGrid = (vtkUnstructuredGrid*)m_pUnstructuredGridModel->GetOutput();
vtkSmartPointer<vtkPolyData> pPolydata = vtkSmartPointer<vtkPolyData>::New();
if (pGlobalUGrid != NULL)
pPolydata->SetPoints(pGlobalUGrid->GetPoints());
m_seeds = vtkSmartPointer<vtkPointSource>::New();
m_seeds->SetRadius(m_iNbrOfStreamLineSeedsRaduis);
m_seeds->SetInput(pPolydata);
m_seeds->SetCenter(pPolydata->GetCenter());
m_seeds->SetNumberOfPoints(m_iNbrOfStreamPoints);
vtkSmartPointer<vtkRungeKutta4> sph_rk4 = vtkSmartPointer<vtkRungeKutta4>::New();
m_streamer = vtkSmartPointer<vtkStreamTracer>::New();
m_streamer->SetInputConnection(m_pUnstructuredGridModel->GetOutputPort());
m_streamer->SetSourceConnection(m_seeds->GetOutputPort());
m_streamer->SetMaximumPropagation(500);
m_streamer->SetIntegrator(sph_rk4);
m_streamer->SetIntegrationDirectionToBoth();//SetIntegrationDirectionToBoth
m_streamer->SetComputeVorticity(false);
m_streamer->Modified();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(m_streamer->GetOutputPort());
mapper->SetScalarRange(m_CurrentMinValue, m_CurrentMaxValue);
mapper->SetLookupTable(m_pColours);
mapper->SetColorModeToMapScalars();
mapper->ImmediateModeRenderingOn();
mapper->InterpolateScalarsBeforeMappingOn();
mapper->SetResolveCoincidentTopologyPolygonOffsetParameters(1, 1);
mapper->ReleaseDataFlagOn();
//vtkSmartPointer<vtkActor> streamLineActor = vtkSmartPointer<vtkActor>::New();
m_streamLineActor = vtkSmartPointer<vtkActor>::New();
m_streamLineActor->SetMapper(mapper);
m_streamLineActor->VisibilityOn();
vtkSmartPointer<vtkRuledSurfaceFilter> asurface = vtkSmartPointer<vtkRuledSurfaceFilter>::New();
asurface->SetInput(m_streamer->GetOutput());
asurface->SetOffset(0);
asurface->SetOnRatio(4);
//asurface->PassLinesOn();
asurface->SetRuledModeToPointWalk();
asurface->SetDistanceFactor(0);
AddActorToViewProp(m_streamLineActor);
}
but it give me wrong results
I would be grateful if anyone can help me
Thanks!