VTK修炼之道69:体绘制讨论_颜色传输函数
生活随笔
收集整理的這篇文章主要介紹了
VTK修炼之道69:体绘制讨论_颜色传输函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.顏色傳輸函數(shù)
顏色傳輸函數(shù)與不透明度傳輸函數(shù)的使用類似,二者的不同之處在于顏色傳輸函數(shù)是將一個標量值映射為顏色值。這個顏色值可以是RGB值,也可以是HSV值。 VTK顏色傳輸函數(shù)采用VTKColorTransferFunction類實現(xiàn),其函數(shù)為: int AddRGBPoint(double x,double r,double g, double b); int AddHSVPoint(double x,double h,double s,double v);這樣就可以實現(xiàn)一個RGB斷點或者HSV斷點的添加,其中x表示像素灰度值,r,g,b為映射的RGB分量,h,s,v為映射的HSV顏色分量。 當然,顏色傳輸函數(shù)也支持添加線段的方法。 void AddRGBSegment(double x1, double r1,double g1,double b1, double x2,double r2,double g2,double b2); void AddHSVSegment(double x1, double h1,double s1,double v1, double x2,double h2,double s2,double v2); 顏色傳輸函數(shù)標準代碼片如下: vtkSmartPointer<vtkColorTransferFunction> color =vtkSmartPointer<vtkColorTransferFunction>::New();color->AddRGBPoint(0, 0, 0, 0);color->AddRGBPoint(64, 1.0, 0.52, 0.3);color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);color->AddRGBPoint(220.0, 0.20, 0.20, 0.20); 由于VTKVolumeProperty接受兩種形式的顏色傳輸函數(shù)(灰度或者RGB),一次在獲取相應(yīng)的顏色傳輸函數(shù)時,需要首先判斷VTKVolumeProperty已經(jīng)設(shè)置的顏色傳輸類型,其函數(shù)為: int GetColorChannels(); 如果返回為1,則說明設(shè)置的是灰度傳輸函數(shù); 如果返回為3,則說明設(shè)置的是彩色RGB傳輸函數(shù)。 根據(jù)不同的類型既可通過如下函數(shù)獲取有效的傳輸函數(shù): VTKColorTransferFunction* GetRGBTransferFunction(); vtkPiecewiseFunction* GetGrayTransferFunction();2.多元數(shù)據(jù)體繪制渲染
前面只要討論了設(shè)置標量圖像體繪制的不透明度傳輸函數(shù)、梯度不透明度傳輸函數(shù)和顏色傳輸函數(shù)。而多元數(shù)據(jù)體繪制渲染時需要根據(jù)數(shù)據(jù)區(qū)別對待。 如果多元數(shù)據(jù)的各個組分是相互獨立的,則可以為每個組分單獨設(shè)置相應(yīng)的不透明度、梯度不透明度、顏色傳輸函數(shù)。 在位VTKVolumeProperty設(shè)置相應(yīng)傳輸函數(shù)時,應(yīng)為多元數(shù)據(jù)組分較多,所以需要在函數(shù)中指定一個索引號,表示當前為那個組分設(shè)置,標準代碼片如下: void SetScalarOpacity(int index, vtkPiecewiseFunction* function); void SetGradientOpacity(int index, vtkPiecewiseFunction* function); void SetColor(int index, vtkPiecewiseFunction* function); void SetColor(int index, vtkColorTransferFunction* function);多元數(shù)據(jù)的組分可能是非獨立的,例如,RGB圖像中每個像素的顏色值是由R.G.B三個顏色組分共同定義的。vtkVolumeMapper支持兩種類型的非獨立多元數(shù)據(jù)。- 第一種是二元數(shù)據(jù)。第一元數(shù)據(jù)用于定義顏色傳輸函數(shù),第二元數(shù)據(jù)用于定義不透明度傳輸函數(shù);
- 第二種是四元數(shù)據(jù)。前三元數(shù)據(jù)作為一個R.G.B顏色定義顏色傳輸函數(shù),第四元數(shù)據(jù)用于定義不同明度傳輸函數(shù)。
3.參看資料
1.《C++ primer》2.《The VTK User’s Guide – 11thEdition》
3. ?張曉東, 羅火靈. VTK圖形圖像開發(fā)進階[M]. 機械工業(yè)出版社, 2015. 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的VTK修炼之道69:体绘制讨论_颜色传输函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VTK修炼之道68:体绘制讨论_梯度不透
- 下一篇: VTK修炼之道70:体绘制讨论_光照阴影