一、基本概念
體繪制是對一個三維物體數據進行采樣與擬合的過程。
在體繪制中用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();