体绘制学习
一、基本概念
体绘制是对一个三维物体数据进行采样与拟合的过程。
在体绘制中用vtkVolume渲染数据
渲染数据类 | 数据转换类 | |
几何渲染 | vtkActor | vtkPolyDataMapper |
体渲染 | vtkVolume | vtkVolumeRayCastMapper |
体绘制常用算法如下。
光线投射法。
- 优点是可视化结果质量好。
- 缺点是计算量大,渲染速度慢。不利于实时渲染。因此常用gpu进行纹理映射加速。
错切变形法。
- 优点是比光线投射法快,适用于实时交互场景。
- 缺点是错切变换可能会导致体数据的变形,在一定程度上会影响图像的准确性。
移动立方体算法。
- 优点易于实现,生成的等值面模型可以方便地进行后续的几何处理和渲染。
- 缺点在等值面曲率较大的区域可能出现 “阶梯” 状不光滑现象,影响可视化效果;并且对于复杂数据,会生成大量三角面片,增加存储和渲染负担。
移动四面体算法。
-
优点比移动立方体算法更精确,适用复杂的拓扑结构情况。
-
缺点计算量大,算法实现难度大。
二、遇到的bug
书中代码,比如chap07中的例子,有用到vtkVolumeTextureMapper2D,vtkVolumeTextureMapper3D等类。
在vtk9.7中被移除了,应当替换为vtkOpenGLGPUVolumeRayCastMapper
示例
//老版vtkSmartPointer<vtkVolumeTextureMapper2D> volumeMapper = vtkSmartPointer<vtkVolumeTextureMapper2D>::New();
//新版vtkSmartPointer<vtkOpenGLGPUVolumeRayCastMapper> volumeMapper =vtkSmartPointer<vtkOpenGLGPUVolumeRayCastMapper>::New();