Paraview:Live Point Cloud可视化插件

ParaView: Live point cloud visualization plugin

本文关键字:可视化 插件 Cloud Point Live Paraview      更新时间:2023-10-16

我正在编写C 中的Paraview版本5.1.2插件,以可视化激光雷达传感器产生的点云数据。我注意到Velodyne有一个开源Paraview自定义应用程序,可以可视化其LIDAR数据,称为Veloview。我对他们的一些代码进行了调整,但现在被卡住了。

到目前为止,我写了一个读者,该读者拿了一个PCAP文件,并呈现一个可以逐帧播放的点云。我还写了一个映射源,该轨道源在端口上听并捕获UDP数据包,然后捕获了UDP数据包,使用读取器将它们分为帧并可视化PC。

现在,我想在每个帧完成时实时实时UDP数据包,并实时渲染点云。

由于paraview插件结构,我很难完成此操作。当前,当调用方法requestData时,我的读者会显示一个框架。我的方法看起来像这样。

int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector){
vtkPolyData* output = vtkPolyData::GetData(outputVector);
  vtkInformation* info = outputVector->GetInformationObject(0);
  int timestep = 0;
  if (info->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP()))
  {
    double timeRequest = info->Get(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP());
    int length = info->Length(vtkStreamingDemandDrivenPipeline::TIME_STEPS());
    timestep = static_cast<int>(floor(timeRequest + 0.5));
  }
  this->Open();
  // GetFrame returns a vtkSmartPointer<vtkPolyData> that is the frame
  output->ShallowCopy(this->GetFrame(timestep));
  this->Close();
  return 1;
}

每次在Paraview GUI中更新时间段时,请求Data方法都会调用。然后将该时间步的帧复制到输出向量中。

我不确定如何使用实时数据实现此功能,因为在这种情况下,请求数据方法未调用,因为没有要求时间段。我看到有一种方法可以通过以这种方式使用contine_executing((来保持requestData执行。

request->Set(vtkStreamingDemandDrivenPipeline::CONTINUE_EXECUTING(), 1);

,但我不知道是否应该用来可视化实时数据。

目前,我有兴趣简单地阅读实时数据包并在框架渲染后立即将其扔掉。有人知道我如何实现这一目标吗?

在veloview的代码(基本上是捆绑的paraview lidarplugin(中,paraview的时间段由主代码更改,而不是激光插件。我们建议您从Veloview代码开始,该代码更接近您的目标。如果您真的想在Paraview中从头开始,则需要自己增加此请求的时间段。

最新版本的Veloview(未发行(使用与Paraview" Livesource"插件(可在5.6 中使用(相同的机制,该插件告诉Paraview设置QTTimer,将自动增加可用的时间段和请求的时间段。

。 。

request->Set(vtkStreamingDemandDrivenPipeline::CONTINUE_EXECUTING(), 1);与将多次运行请求数据的另一种机制有关,但不会考虑更新请求的时间段。

最好,

Bastien Jacquet

Veloview项目负责人