VTK學習筆記--2 入門範例1 補充

從VTK User's Guide上面找到更深刻的介紹:算法

構成VTK的有兩種對象模型:緩存

①  圖形對象模型(the Graphics Models) app

②可視化對象模型(the Visualization Models) ide

下面分別介紹:性能

1、圖形對象模型ui

圖形模型包含下列核心對象(這不是無窮對象列表只是咱們經常使用到的):spa

   vtkActor, vtkActor2D, vtkVolume--vtkProp和/或vtkProp3D的子類scala

vtkLight--燈光orm

vtkCamera--鏡頭,照相機對象

vtkProperty, vtkProperty2D--

vtkMapper, vtkMapper2D--vtkAbstractMapper的子類

vtkTransform--

vtkLookupTable, vtkColorTransferFunction--vtkScalarsToColors的子類

vtkRender

vtkRenderWindow

vtkRenderWindowInteractor

能夠經過對上述對象的組合造成場景(Scene)。

Props表明咱們在場景中「看見」的東西3D中(有一個4*4的變換矩陣)被定位和操做的Props就是vtkProp3D,例如vtkActor就是vtkProp3D的一個具體的子類。若是咱們要進行的是體繪製,這個子類就是vtkVolume。在2D中,Props用來定位和表示2D數據(即圖像)的類就是是vtkActor2D),Props不直接表示幾何形狀,它藉助Mappers對象,Mapper負責表達數據。Props也藉助於一個屬性對象(Property ),屬性對象控制着Props的外觀(顏色、漫射光、反射光效果;繪製外觀:線框或面片等)。ActorsVolumes(經過超類vtkProp3D)還有一個內部變換對象(vtkTransform),這個對象封裝了一個4*4矩陣,它依次控制着Prop的位置、朝向和尺度。

整個圖形對象模型主要分爲九類對象:

(1)渲染控制器: 定義與設備無關的座標 計算方法, 建立繪製窗口; 
(2)渲染窗口(RenderWindow):其基類爲vtkRenderWindow, 管理顯示設備上的窗口, 一個或多個繪製方 法可在渲染窗口上建立一個場景。渲染窗口是用戶圖形界面, 其中包括 了設置渲染窗口的大小, 產生立體顯示效果等的方法, 一共控制控制兩個緩存; 
(3)渲染器(Renderer):基類爲vtkRenderer,做用是管理光源、照相機和繪製對象等的位置、屬性等; 提供 世界座標系, 觀察座標系及顯示座標系之間的轉換 。
創建好一個Renderer 後將其加入RenderWindow中便可將場景顯示出來; 
(4)燈光( Light):VTK中的實現類爲vtkLight, 用來表示和操做場景中的光線,光照僅用於3D,2D不須要光照。
(5)照相機(Camera): VTK實現類爲vtkCamera, 相機對象在繪製過程當中,控制如何將3D投影到2D,相機具備定位、定標和定向的幾種方法。此外,相機還控制透視投影和立體視(若開啓),2D圖像不須要相機。
(6)角色(Actor):vtkActor表明渲染場景中的繪製對象實體 ,經過參數的調節能夠設置角色的位置方向, 渲染 特性(Property),引用(renference),紋理影射(Texture)等屬性,並可對Actor進行放縮。角色 的改變是經過一個4*4的變換矩陣實現的; 
(7)屬性(Property):實現類爲vtkProperty。要使三維 物 體具備真實感, 必須說明幾何物體的一些特性,例如 光照特性(泛光,漫反射,鏡面反射,邊緣顏色),反射強度,物體的灰度,物體的繪製樣式(點, 線框, 表面) ,着色模式( flat, Gouraud, Phong)等;VTK 中正是經過屬性模型來對其進行說明的; 
(8)映射(Mapper):vtkMapper指定了
渲染數據圖形庫中基本圖元之間的聯繫。VtkMapper的一些派生類經過LookupTable映射數據並控制圖形庫中相應Actor 圖元的生成。(映射對象vtkMapper與查找表vtkLookUpTable相連,用來變換和繪製幾何圖形,映射提供可視化流水線與圖形對象模型之間的接口)一個或多個Actor可使用相同的Mapper。Mapper有多個參數對其進行控制, 如ScalarVisibility 標誌 能夠設置scalar的數據是否影響相關的Actor 的顏色; ScalarMode 能夠控制Actor的顏 色是scalar point仍是cell的值; 渲染方式能夠經過 (ImmediateModeRenderingOn)和( ImmediateModeRenderingOff) 控制, 前一項表示當即渲染, 後一 項表示將渲染放於渲染列表中, 通常選擇ImmediateModeRenderingOn方式進行, 選擇後者將會佔用較多的系統資源, 影響系統的性能; 
(9)變換(Transform):vtkTransform是一個放置4*4變換矩陣的堆棧, 可對這一堆棧進行各類操做, 如:平 移, 縮放, 旋轉等, 通常在棧的頂部進行。實現過程主要由渲染控制器建立渲染窗口,由渲染器在渲染窗口上繪製場景。場景包括繪製對象、映射、屬性、變換、光 源、照相機等。VTK獲取數據的方式是基於拉技術 , 即在管道的下一對象請 求數據時, 管道對象才進行數據集的相關處理, 所以可減少系統的運算負荷, 這對提 高系統實時性大有好處。 
2、可視化模型(theVisualization Models) 
用VTK進行可視化應用是很是方便的,它包括兩個基本部分。首先,創建適當的目標圖形來演示數據;其次, 創建一個數據流水線(data pipeline)來處理數據, 創建流水線(pipeline)就是將Source、Filters 和Mappers鏈接起來。

VTK的可視化模型主要包括兩類對象: 
(1)數據對象 
(a)多邊形數據(vtkPloyData):表示由頂點、直線、多邊形即三角面片組成的幾何體, 支持多種的原子類 型, 如vtkVertex,vtk-PloyVertex, vtkLine 等。 
(b)結構點數據(vtkStructurePoint):是一包括表面形狀及幾何形狀的幾何體。 
(c)非結構點數據(vtkUnStructurePoint):指定了幾何體的外觀;結構網格( vtkStructureGrid):指定了幾何體的結構。 
(d)非結構網格(vtkUnStructureGrid):能夠爲任意的cell 類型的組合。 
(e)數據對象繼承關係。 
(2)過程對象 
VTK 中定義的過程對象根據其pipeline主要包括了數據源(Source),過濾器(Filters),映射(Mappers),數據流水線(data pipeline),過程如圖所示:

數據源(Source): vtkSource是全部數據源的基類, 其子類定義了許多數據源類型; 
過濾器(Filters):vtkFilter 是各類Filter的基類, 從vtkSource中派生出來, 接收Source 中的數據, 進行種不一樣的Filter處理工做。Filters爲VTK的主要部件, 由其基類派生出了許多子類, 實現了 圖形學算法。將其封裝起來, 用戶只須要編寫簡單程序接口調用就可, 並能夠經過改變 參數來達到想要的效果; 
映射(Mappers) : vtkMapper 是全部Mappers 的基類, 從Filtes接受數據,並把其映射爲圖形庫中的基本圖 
元。根據映射方式的不一樣, 有多個繼承子類。

以上內容部分轉自 http://hi.baidu.com/goywuonpkobdpvr/item/6f5424c5a8357f51ac00ef19

http://www.tuicool.com/articles/yMBbie

部分源於 VTK User's Guide

結合以上分類能夠從新分析一下以前的範例1:

首先,能夠知道vtkConeSource屬於可視化模型中的數據對象,除vtkConeSource以外的,都是過程對象。

vtkActor是3D場景中應用的對象。咱們的這個例子中的Props是一個三維圓錐,它的幾何數據是由vtkConeSource通過vtkPolydataMapper提供的。而其屬性咱們沒有設置,取默認狀況。相機和光線也沒有設置。而後將其放入渲染器中,最後在renderwindow中呈現出來。

(從上面這個分析看,個人邏輯性不是很好,理解的也不夠深刻。但願後面多瞭解VTk後,可以回來完善這個筆記。)

相關文章
相關標籤/搜索