首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ParaView:实时点云可视化插件

ParaView:实时点云可视化插件
EN

Stack Overflow用户
提问于 2019-05-09 01:06:33
回答 1查看 218关注 0票数 0

我正在用C++编写一个ParaView版本5.1.2的插件来可视化由LiDAR传感器产生的点云数据。我注意到Velodyne有一个开源的ParaView定制应用程序来可视化他们的LiDAR数据,叫做Veloview。我调整了他们的一些代码来启动,但我现在卡住了。

到目前为止,我写了一个阅读器,它获取一个pcap文件,并渲染一个可以逐帧回放的点云。我还写了一个UDP源程序,它监听端口并捕获ParaView数据包,捕获后使用阅读器将它们拆分成帧并可视化PC。

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

由于ParaView插件结构的原因,我很难做到这一点。目前,我的阅读器在调用RequestData方法时显示一个框架。我的方法看起来像这样。

代码语言:javascript
复制
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中更新timestep时都会调用RequestData方法。然后将该时间步长中的帧复制到outputVector中。

我不确定如何使用实时数据实现这一点,因为在这种情况下,不会调用RequestData方法,因为没有请求时间步长。我看到有一种方法可以通过以这种方式使用CONTINUE_EXECUTING()来保持RequestData的执行。

代码语言:javascript
复制
request->Set(vtkStreamingDemandDrivenPipeline::CONTINUE_EXECUTING(), 1);

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

就目前而言,我感兴趣的是简单地读取实时数据包,并在帧呈现后立即丢弃它们。有人知道我是如何做到这一点的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 18:15:33

VeloView (基本上是一个捆绑的ParaView+LidarPlugin)的代码中,ParaView的时间步长由主代码更改,而不是由激光雷达插件更改。我们建议您从VeloView代码开始,这更接近您的目标。如果你真的想在ParaView中从头开始,你需要自己递增这个请求的时间步长。

最新版本的VeloView (未发布)使用与ParaView“LiveSource”插件(在5.6+中可用)相同的机制,该插件告诉ParaView设置一个自动递增可用和请求的时间步长的QtTimer。

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

最好的

巴斯蒂安提花

VeloView项目负责人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56045793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档