1. 程式人生 > >VTK面繪制(SR)與體繪制(VR)

VTK面繪制(SR)與體繪制(VR)

VTK面繪制 VTK體繪制 vtkMarchingCubes

面繪制 (Surface Rendering)

VTK中基於面繪制實現三維重建,使用的是經典的Marching Cubes(移動立方體法)算法。
  
  面繪制是采用分割技術對一系列的二維圖像進行輪廓識別、提取等操作,最終還原出被檢測物體的三維模型,並以表面的方式顯示出來。
  面繪制的數據流管道pipeline結構為:
讀取器->提取等值面->數據處理->映射器->實例化角色->繪制器->繪制窗口->交互器->交換方式。
Marching Cubes算法簡介:
首先,假定原始數據是離散的三維空間規則數據場;
其次,給出所求等值面的值;
最後,找出等值面經過的體元位置,求出該體元內的等值面並計算出相關參數(以便由常用的圖形軟件包或圖形硬件提供的面繪制功能繪制等值面)。

VTK提供了兩種提取等值面的類:
(1) vtkContourFilter
(2) vtkMarchingCubes.
VTK通過vtkPolyDataNormals在等值面上產生法向量;通過vtkStripper在等值面上產生紋理或三角面片。

體繪制(Volume Rendering)

VTK中基於體繪制實現三維重建,使用的是光線投射法(Ray-casting)。
體繪制的原理和面繪制完全不相同。面繪制需要生成中間圖元,而體繪制則是直接在原圖上進行繪制,內容需求較面繪制小。每切換一個視角需要重新對所有的像素點進行顏色和透明度計算,需要時間比面繪制長。

VTK面繪制(SR)與體繪制(VR)