QT傳輸函式控制項設計2 體渲染和VTK

2021-09-29 06:54:10 字數 1833 閱讀 2527

程式我就先直接放這裡:

我們不需要都清楚細節,只需要知道這麼幾點

1. std::string strfolder = "data";  這個函式是用來記錄存放醫學影像檔案組的資料夾的。

2. 這段程式

// 1d transfer functions

colortf->addrgbpoint(-200, 0.0, 0.0, 0.0);

colortf->addrgbpoint(150, 0.1, 0.1, 0.7);

colortf->addrgbpoint(350, 0.2, 0.2, 0.4);

colortf->addrgbpoint(512, 1.0, 1.0, 1.0);

colortf->addrgbpoint(range[1], 0.9, 0.1, 0.1);

scalartf->addpoint(-200, 0.00);

scalartf->addpoint(150, 0.20);

scalartf->addpoint(350, 0.30);

scalartf->addpoint(512, 0.5);

scalartf->addpoint(range[1], 0.4);

gradienttf->addpoint(-200, 0.0);

gradienttf->addpoint(150, 0.1);

gradienttf->addpoint(350, 0.1);

gradienttf->addpoint(512, 0.6);

gradienttf->addpoint(range[1] / 4.0, 1.0);

這些函式是用來設定傳輸函式的,大家可以看到其實就是一堆斷點,相當於之前我們設計的xml解析程式裡面的各個node。

大家注意到我們在這裡故意設定每組傳輸函式(例如 colortf 和 scalartf 和 gradienttf)它們對應的第乙個引數值都是相同的,所以我們可以用乙個node來同時記錄這些資料,第乙個引數是表示intensity,程式裡(還記得嗎)我們設定的是normalizedintensity,即單位化的intensity。

3. 把設定的斷點加進來

volumeproperty->setscalaropacity(scalartf);

volumeproperty->setgradientopacity(gradienttf);

volumeproperty->setcolor(colortf);

這三句話是把屬性設定到我們的渲染框架裡

4.後面關於interactor之類的函式是來設定互動方式的,這我們暫時先不用管,注意你們要配置的vtk庫一定是要在cmake中選擇支援qt,然後相關配置查其他部落格就好了。弄好以後,會生成qvtkwidget,作為vtk渲染資料的顯示區。

我們到時候要在視窗裡放置乙個qvtkwidget,然後直接用vtk自己帶的互動功能就好了(旋轉三維物體等)。

關於傳輸函式如果不會的話就看這篇部落格:

vtk修煉之道 不透明度傳輸函式

常用 API 函式 控制項與訊息函式

adjustwindowrect 給定一種視窗樣式,計算獲得目標客戶區矩形所需的視窗大小 anypopup 判斷螢幕上是否存在任何彈出式視窗 arrangeiconicwindows 排列乙個父視窗的最小化子視窗 attachthreadinput 連線線程輸入函式 begindeferwindow...

qt自定義控制項 2

環境 qtcreator 4.0.2 qt5.7.0 msvc 2013,32bit 步驟 1 在上篇文章的基礎上,我們在demo1自定義控制項類中新增如下 q enums m id q property qstring m id read get id write set id private q...

Qt設計師 控制項公共屬性

objectname 控制項名 geometry 幾何屬性 x y 控制項座標 寬度 高度 控制項大小 sizepolicy 控制項在布局管理中的縮放方式 fixed 控制項不能放大或者縮小,控制項的大小就是它的sizehint minimum 控制項的sizehint為控制項的最小尺寸。控制項不能...