在Qt中使用VTK庫

2021-03-02 CppBlock

     在VTK的編譯與安裝一文中介紹了VTK的編譯和安裝過程,本文則繼續探索在Qt中使用開源三維引擎VTK,在VTK安裝完成後,會有以下文件夾

其中dll文件放在bin目錄下,include存放.h文件,lib中存放lib庫文件,plugins文件夾下保存了生成的Qt設計師工具的插件,在VTK的早期版本一直是使用designer插件實現在Qt中顯示VTK窗口的,但是在VTK8.0以後則可以直接使用Qt自帶的QOpenGLWidget控制項顯示VTK窗口,但插件方式暫時還支持,本文使用後者實現VTK窗口的顯示。

    可以使用Qt creator或者VS創建Qt工程(前提是VS安裝了Qt addin插件),創建一個Qt widget application, 創建完成後會自動產生如下文件:

    使用CMake可以比較方便的項目的配置,比如項目的依賴文件。首先創建CMakeLists.txt文件,在項目中使用VTK庫,需要添加一下兩行CMake代碼

find_package( VTK REQUIRED )  include( ${VTK_USE_FILE} )

在CMakeLists.txt文件編輯完成後,使用CMake創建VS項目,然後使用VS打開項目:

//定義renderer、connect以及render window對象vtkSmartPointer<vtkRenderer>  mRenderer;vtkSmartPointer<vtkEventQtSlotConnect> mSlotConnect;vtkSmartPointer<vtkGenericOpenGLRenderWindow> mRenderWindow;
//創建對象mRenderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();mRenderer = vtkSmartPointer<vtkRenderer>::New();mSlotConnect = vtkSmartPointer<vtkEventQtSlotConnect>::New();
//關聯到剛剛添加的opengl widgetui->openGLWidget->SetRenderWindow(mRenderWindow);ui->openGLWidget->GetRenderWindow()->AddRenderer(mRenderer);mSlotConnect->Connect(ui->openGLWidget->GetRenderWindow()->GetInteractor(), vtkCommand::MouseMoveEvent, this, SLOT(updateCoordsSlot(vtkObject *)));

mRenderer->GradientBackgroundOn();mRenderer->SetBackground(0.0, 0.098, 0.188);

//定義坐標系部件vtkSmartPointer<vtkOrientationMarkerWidget> mAxesWidget;vtkSmartPointer<vtkAxesActor> mAxesActor;
//給render添加坐標系部件mAxesWidget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();auto rwi = mRenderer ? mRenderer->GetRenderWindow()->GetInteractor() : nullptr;mAxesWidget->SetDefaultRenderer(mRenderer);mAxesWidget->SetInteractor(rwi);mAxesActor = vtkSmartPointer<vtkAxesActor>::New();mAxesWidget->SetOrientationMarker(mAxesActor);mAxesWidget->SetViewport(0.0, 0.0, 0.2, 0.16);mAxesWidget->SetEnabled(1);mAxesWidget->InteractiveOn();

vtkSmartPointer<vtkPlaneSource> mReferencePlaneSource;vtkSmartPointer<vtkPolyDataMapper> mReferencePlaneMapper;vtkSmartPointer<vtkActor>  mReferencePlaneActor;
mReferencePlaneSource = vtkSmartPointer<vtkPlaneSource>::New();mReferencePlaneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();mReferencePlaneActor = vtkSmartPointer<vtkActor>::New();mReferencePlaneSource->SetXResolution(20);mReferencePlaneSource->SetYResolution(20);mReferencePlaneSource->SetOrigin(-1000.0, -1000.0, 0.0);mReferencePlaneSource->SetPoint1(1000.0, -1000.0, 0.0);mReferencePlaneSource->SetPoint2(-1000.0, 1000.0, 0.0);mReferencePlaneMapper->SetInputConnection(mReferencePlaneSource->GetOutputPort());mReferencePlaneActor->SetMapper(mReferencePlaneMapper);mReferencePlaneActor->GetProperty()->SetRepresentationToWireframe();mReferencePlaneActor->GetProperty()->SetColor(0.5, 1.0, 1.0);mReferencePlaneActor->SetVisibility(true);mRenderer->AddActor(mReferencePlaneActor);

  camera->SetPosition(-1200.0, -1200.0, 1200.0);  camera->SetFocalPoint(0.0, 0.0, 0.0);  camera->SetViewUp(0.0, 0.0, 1.0);  camera->ComputeViewPlaneNormal();  if (mRenderer)  {    mRenderer->SetActiveCamera(camera);    mRenderer->ResetCamera();  }

相關焦點

  • 使用開源工具進行3D數據可視化:使用VTK的教程
    在為碩士論文解決類似問題的過程中,我接觸了Visualization Toolkit或VTK –一個專門用於數據可視化的功能強大的圖形庫。在本教程中,我將快速介紹VTK及其管道體系結構,並繼續討論使用葉輪泵中模擬流體數據得出的真實3D可視化示例。最後,我將列出庫的優點以及遇到的缺點。1.
  • Win10下的PCL1.11.1+VTK8.2+QT5.12.0+Visual Stdio2017/2019開發環境搭建(上)
    一、Visual Stdio2019/2017下載地址:https://visualstudio.microsoft.com/zh-hans/下載community版即可,推薦下載2019版本,因為2019的平臺工具集是v142,與Boost庫的版本匹配,而2017的平臺工具集為v141,會造成與Boost庫不匹配的的問題。
  • VS2017中使用QT Chart圖表
    有關QtChart的介紹在這就不詳談了,想要具體了解的百度就可以,官網和網站大多數都是介紹如何在QtCreator中使用QtChart,而本文主要介紹如何在
  • vtk讀取CT序列mip投影
    當光線束通過一段組織的原始圖像時,圖像中密度最大的像素被保留,並被投影到一個二維平面上,從而形成MIP重建圖像。MIP 能反應相應像素的X線衰減值,較小的密度變化也能在MIP圖像上顯示,能很好地顯示血管的狹窄、擴張、充盈缺損及區分血管壁上的鈣化與血管腔內的對比劑。(來自百度百科)由於MIP 顯示的是一定層厚圖像中CT值最高的體素,所以變化層厚也會對圖像產生影響。
  • window下CMake與VTK安裝
    Vtk是在面向對象原理的基礎上設計和實現的,它的內核是用C++構建的,包含有大約250,000行代碼,2000多個類,還包含有幾個轉換界面,因此也可以自由的通過Java,Tcl/Tk和Python各種語言使用vtk。PCL庫函數中可視化,以及一些設計到CAD的obj格式的點雲的處理都是基礎VTK的所以這個工具,也是十分重要。
  • Python可視化 | VTK——三維圖像處理和可視化利器
    點擊下方公眾號,回復資料,收穫驚喜VTK在Java, Tcl, Python
  • 使用CMake部署Qt應用程式
    Qt應用程式在運行時依賴於動態連結庫以及資源文件,在調試和生成Qt安裝包時都需要進行處理,否則經常出現本地運行可以,而在客戶電腦上不行的場景.這時,保持開發者本地環境和真實運行環境一致是比較好的實踐.即:不使用專門的IDE及插件(例如Qt Visual Studio Tools).
  • QT中的qmake詳解
    使用這個模板的時候,另外的系統變量會加到上面app模板提到的變量,因為app模板是支持VERSION 變量,你應該在pro文件使用這些來制定一些庫的庫的信息使用這個模板的時候,下面的選項可以添加到 CONFIG 變量裡面來決定編譯成何種庫選項        描述dll        編譯成動態庫 (dll or so).plugin      編譯成插件庫,本選項意味著dll也設置了
  • 【Qt】Qt下載教程
    Qt下載概述Qt安裝包很大,有 1GB~3GB,通過官方下載非常慢,相信很多讀者會崩潰,所以建議大家使用國內的鏡像網站(較快),或者使用迅雷下載(很快)。Qt常用有三種下載方式。community_releases社區定製的 Qt 庫,Tizen 版 Qt 以及 Qt 附加源碼包。development_releases開發版,有新的和舊的不穩定版本,在 Qt 開發過程中的非正式版本。learning有學習 Qt 的文檔教程和示範視頻。ministro迷你版,目前是針對 Android 的版本。
  • QT在VS2013中的配置
    當然,如果能在VS2013中使用QT5進行圖形界面開發,那無疑是一件相當享受的事情。此處,提供百度雲網盤中的安裝包、秘鑰以及Visual Assistant(編程助手):   連結:https://pan.baidu.com/s/1b1hf_jX7xElHrVDp6Zx0QQ 密碼:xg6n2.2 Qt5.7.1 安裝包下載   包含相應的QT庫和Qt集成開發環境(即QtCreator)。
  • 【Qt開發】第一個Qt程序Hello World!
    一:說在前頭我的第一份工作是做生產工具,當時用的MFC,IDE是VC6.0,現在想想真是古董級別,10年至今,微軟也一直沒有對MFC進行升級,冥冥中感覺微軟自己都放棄
  • QT安裝
    Qt接受並處理用戶和系統的事件並且把它 //們傳遞給適當的窗口部件。}頭文件有h和沒有h的區別.h的是標準C的頭文件,沒有.h的是標準C++的頭文件,兩種都是頭文件。造成這兩種形式不同的原因,是C++的發展歷史決定的(vs2008和vs2005對標準C++的支持是一樣的)。
  • 學習qt 01gui對比
    qt4是控制項編程.qt5力推qml(開發/維護).qml是界面,底層調用c++,用訪問資料庫、網絡通信、多線程多進程、文件讀寫、圖像處理、音頻視頻處理,qt5添加了許多api.下載地址在此自己找個版本下,教材為5.9.opensource為開源版本.不用擔心下載速度,360極速與迅雷合作的.注意安裝目錄不要有空格中文特殊字符等.mingw必選.一般不用qt開發安卓.tp為預覽.Qt Creator為ide強制安裝.Examples裡面為示例.主要是include/libmingw,windows裡面使用gnu工具.
  • Windows 下 Qt creator安裝和使用
    擴展性強、漂亮好用、跨平臺,推薦web開發者做C++一.qt  creator  QT裡面有一個概念非常重要,主要是構建套件。qt,他裡面有打包好的,全部的都有,然後選擇最新的版本。,其實MinGW就是gcc在windous下的一個封裝,一套工具鏈便來是在Linux下面使用的,後來把這一套整個搬遷到windous上來了。
  • 嵌入式Linux-Qt環境搭建
    1 tslib編譯tslib之前在測試觸控螢幕的時候使用過,這裡再來記錄一下編譯過程。下載tslib庫的源碼:https://github.com/libts/tslib/tags將下載的源碼拷貝到ubuntu虛擬機中,然後解壓:tar xvf tslib-1.21.tar.bz2
  • Qt for MCUs 快速上手實踐
    /QtForMCUs/qtul-quick-starter.htmlQt for MCUs實際項目開發環境搭建該章節主要針對已獲取Qt for MCUs商業授權的用戶,因為針對目標硬體的庫和原始碼目前尚未對開源用戶發布。
  • Qt實用技能6-程序發布指南
    dll其中工具包括qmake.exe 和 windeployqt.exe,windeployqt.exe是我們今天主要討論的工具。這種命令行在啟動時已經設置好了QT的環境變量,可以直接輸入windeployqt.exe也可以用普通的命令行,使用windeployqt.exe時帶上絕對路徑即可。濤哥一般用普通的命令行,因為絕對路徑不易出錯。
  • VLC-Qt 入門指南
    官網地址:https://vlc-qt.tano.si/Github 地址:https://github.com/vlc-qt示例地址:https整個 libVLC 庫被完全封裝到了 C++/Qt 中,它仍然可以同時支持多個實例和/或播放器。還可以訪問 libVLC 對象,以獲得所有包裝的功能。
  • 收集一些Qt學習網站
    Qt 官網https://www.qt.io了解Qt最新資訊開發動態的窗口。Qt 資源下載http://download.qt.io最新Qt安裝程序可以在這裡找到。Qt 博客者聚集地http://planet.qt.io很多Qt大神都在裡面。