在VTK (Visualization Toolkit)中,如果需要创建二维文字标签可以使用vtkTextActor很方便的实现,但是二维文字标签使用窗口上相对的二维坐标,是独立于显示三维模型窗口的。 那么想要同三维模型一起显示在窗口内,共同使用三维坐标系,就要考虑使用三维文字标签,VTK提供了几种方式来实现三维场景中的文字标签功能。 1. vtk…
使用vtkVolume对只有一层(第三维度为1)的vtkImageData数据进行体渲染时,可能会导致渲染出来的图像没有厚度甚至渲染失败。 当vtkImageData只有一层时,它实际上是一个二维图像,而不是一个三维体积,而vtkSmartVolumeMapper通常用于三维体积渲染。因此在处理二维数据时可能会导致VTK默认认为该二维数据的厚度为零…
1.前言 这两者的区别大家应该都知道,至于为什么我想写这一篇小记,主要是以前几乎不用vtkNew,最近想用一用,然后在不经意间出现了如下报错: error: C2280: “vtkNew<vtkImageData>::vtkNew(const vtkNew<vtkImageData> &)”: 尝试引用已删除的函数 …
1. 使用vtk提供的格式转换方法 以XML格式为例: vtk库中支持多种格式的读写转换,比如利用XML格式,可以将vtkPolyData格式序列化为string类型,直接使用vtk库中的 vtkXMLPolyDataWriter 方法进行序列化 ,以及 vtkXMLPolyDataReader 方法解序列化。 示例: // 读vtkPolyDat…
使用QT中QVTKOpenGLNativeWidget搭配VTK中vtkGenericOpenGLRenderWindow是目前(VTK版本在9.0之上)最简单最好用的方法 QVTKOpenGLNativeWidget可以理解为QT中单独为VTK设计的载体控件,但只适用于VTK9.0及以上版本,QVTKOpenGLNativeWidget继承于QO…
1. VTK更新数据但窗口不更新 问题:在对窗口内的数据进行更新后,VTK窗口不会立即更新,需要鼠标等交互后才会更新。 解决办法:对数据更新后,对VTK窗口也要使用Render()渲染更新。 2. vtkRenderWindow渲染窗口报错 问题:在对vtkRenderWindow对象使用Render()渲染更新时会出现程序假死、或报内存溢出等错误…
最近自己重配VTK环境时,才发现在缺少初始化语句时会导致在VTK环境和代码正确的情况下,不能正常输出,即不显示窗口、模型等,就如同代码被跳过了一样。 在包含头文件处添加以下代码: #include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2) VTK_MODULE_IN…
点云下采样是通过一定规则对原点云数据进行再采样,减少点云个数,降低点云稀疏程度,减小点云数据大小。 1. 体素下采样(Voxel Down Sample) std::shared_ptr<PointCloud> VoxelDownSample (double voxel_size) const; voxel_size为体素(体积元素)的…