簡體   English   中英

使用VTK連接流媒體點

[英]Connect streaming points using VTK

我有一個在循環中調用的函數,每次傳遞時它都會給出(x,y,z)3D點。 我正在嘗試使用VTK實時連接這些點,但無法在每幀后刷新渲染窗口。 如果退出循環,我會看到很多行。

基本上,這就是我在做什么:

// Create a vtkPoints object to store the points in it
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();

vtkSmartPointer<vtkPolyLine> polyLine = vtkSmartPointer<vtkPolyLine>::New();

// Create a cell array to store the lines in   
vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();

// Create a polydata to store everything in
vtkSmartPointer<vtkPolyData> linesPolyData = vtkSmartPointer<vtkPolyData>::New();

// Setup actor and mapper
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);

// Setup render window, renderer, and interactor
vtkSmartPointer<vtkRenderer> renderer =  vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =       vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =   vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderer->AddActor(actor);
renderWindow->Render();
renderer->Render();

int numpoints = 0;

while(some_condition)
{
  call_function(&x,&y,&z);
  double point[3] = {0.0, 0.0, 0.0};
  point[0] = (float)x;
  point[1] = (float)y;
  point[2] = (float)z;

  numpoints++;
  points->InsertNextPoint(point);

  polyLine->GetPointIds()->SetNumberOfIds(numpoints);
  for(unsigned int i = 0; i < num_points; i++)
{
    polyLine->GetPointIds()->SetId(i,i);                        
}

  lines->InsertNextCell(polyLine);

// Add the points to the dataset
linesPolyData->SetPoints(points);

// Add the lines to the dataset
linesPolyData->SetLines(lines);

#if VTK_MAJOR_VERSION <= 5
mapper->SetInput(linesPolyData);
#else
mapper->SetInputData(linesPolyData);
#endif

linesPolyData->Modified();
linesPolyData->Update();

renderWindow->Render();
renderer->Render();

renderWindowInteractor->Enable();

check_loop_exit_condition(); 
}

如果我在循環外執行renderer->Render() ,那么我將得到所有行(或者至少我認為是的)。 有人可以找出我要去哪里嗎?

這些文檔中 ,您似乎不應該直接致電

renderer->Render();

你應該只打電話

renderWindow->Render();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM