李加順
(重慶交通大學(xué),重慶400074)
VTK 的全稱是Visualization Toolkit(可視化工具包),VTK 是一個(gè)開(kāi)源、跨平臺(tái)、自由獲取、支持并處理的圖形應(yīng)用函數(shù)庫(kù)。
VTK 最早出現(xiàn)在《The Visualization Toolkit:An Object-Oriented Approach to 3D Graphics》 一書的附件中,這本書是由Prentice Hall 在1993 年出版的。美國(guó)GE 公司的三位研究人員 Ken Martin、Will Schroeder 和Bill Lorensen 開(kāi)發(fā)了VTK 軟件。
1998 年,VTK 社區(qū)成長(zhǎng)迅速,在學(xué)術(shù)研究及商業(yè)應(yīng)用領(lǐng)域得到了重用(主要都是醫(yī)學(xué)方面的應(yīng)用)[1]。
先新建一個(gè)cpp 文件,再新建一個(gè)MakeLists 文件并寫上相應(yīng)的代碼,然后使用CMake 產(chǎn)生工程文件(.sln),最后進(jìn)行編譯。
MakeLists 文件的編寫示例如下:
VTK 擁有強(qiáng)大的圖形處理能力,但是缺少窗口框架的用戶界面,與Qt 結(jié)合可建立一個(gè)用戶界面。
圖1
Visual Studio 新建一個(gè)項(xiàng)目中,找到Qt 然后創(chuàng)建一個(gè)Qt Widgets Application 項(xiàng)目,在設(shè)計(jì)界面中拖出QVTKWidget 窗口,最后完成界面的實(shí)現(xiàn),如圖1 所示。
橋梁結(jié)構(gòu)界面建立可視化模型需要實(shí)現(xiàn)以下功能:輸入節(jié)點(diǎn)、輸入截面類型以及參數(shù)、輸入單元類型、分析步、計(jì)算結(jié)果、圖像的可視化。在Qt 的設(shè)計(jì)界面中,利用PushButton、ToolButton、Verictical Scroll Bar、Horizontal Scroll Bar 等控件來(lái)實(shí)現(xiàn)一個(gè)界面。
由Qt 框架的窗口接收模型可視化顯示的數(shù)據(jù)參數(shù)并交給VTK 可視化流程最終在窗口上顯示。VTK 的可視化管道數(shù)據(jù)按照如下順序執(zhí)行:Source->Filte->PolyData->PolyDataMapper->Actor->Renderer->RenderWindow->RenderWindowInteractor
在VTK 的編譯安裝過(guò)程中可能會(huì)遇到一些問(wèn)題,通過(guò)CMake 顯示的問(wèn)題的提示來(lái)完成VTK 的編譯,并完成Qt 與VTK 的結(jié)合,使用Qt 建立一個(gè)項(xiàng)目。
創(chuàng)建點(diǎn)的坐標(biāo),先New一個(gè)points 對(duì)象,在用points 去創(chuàng)建幾個(gè)點(diǎn)。
創(chuàng)建一條線,先New幾個(gè)line 對(duì)象,在用line 去創(chuàng)建幾條線。
創(chuàng) 建 一 個(gè)polyData、mapper、actor、renderer、renderWindow、interactor 對(duì)象,再用polyData 來(lái)設(shè)置點(diǎn)、線,將polyData 傳遞給mapper 再傳遞給actor,最終做一個(gè)交互;用Visual Studio 執(zhí)行就可以顯示所創(chuàng)建的圖形。
先在h 文件中定義一個(gè)節(jié)點(diǎn)Create_Node,再利用cpp 文件寫上相應(yīng)的顯示節(jié)點(diǎn)的代碼;然后定義一個(gè)節(jié)點(diǎn)標(biāo)號(hào)Create_Label,利用cpp 文件寫上節(jié)點(diǎn)標(biāo)號(hào)的代碼,最后把節(jié)點(diǎn)及節(jié)點(diǎn)標(biāo)號(hào)傳給actor。部分代碼如下:
vtkSmartPointer
Actor_Line_Label = Create_Label(L_Label, Label, 0, 1, 0);