使用VTK连接流式传输点
Connect streaming points using VTK
我有一个在循环中调用的函数,每次调用时都会给出一个3D点的(x,y,z)。我试图使用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();
相关文章:
- Qt VTK交互风格的信号到小部件
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- Angelscript从C++传输数组
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 从服务器传输到客户端的消息不会出现
- USB传输的LibUSB C++格式不同
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 将相机数据从服务器实时流式传输到客户端
- 如何禁用VTK的热键
- 加密在 Windows、C++ 和 Java 中传输中的数据
- 如何从网站获取数据并将其传输到数据库?
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 在 OpenCV 中应用公式并传输图像
- QVTKWidget在VTK 8.1中已弃用,并将在未来的版本中删除
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 如何在 vtk Poly 数据上进行布尔运算?
- VTK 图像数据,访问数组中的 1 个图像
- Vulkan 的传输队列系列功能和显卡支持:条件检查是否准确?
- 如何使用CAPL的诊断功能获取CAN传输的数据(256字节)?
- 使用VTK连接流式传输点