ParviewWeb學習記錄4——模型顏色問題1

問題一:pvw顏色與模型本身定義顏色無關?

pvw,模型的顏色顯示與模型本身定義無關,是由pvw自己設置的顏色,why?不理解爲什麼這麼設計。

測試過程:helper.py文件定義了顏色模式,在registerArray中,對RGBPoints的修改,影響模型的顏色,發現他會根據第1個參數與第5個參數的大小,來決定採用第一組或者第二組RGB值,但又不是簡單的大小比較;

vtk顏色映射是一種標量算法,目的是突出顯示數據集中重要的屬性數據,使用灰度顏色,能提供更好的表現細節,使用彩色顏色能增強對比度。在pvw中,默認的顏色是採用數據的映射,標量計算方法。保存數據的點,再保存數據的面片;創建數據對象;設置每一個頂點的標量值(SetScalars(scalars));設定顏色映射表(在pvw中這個映射表是blue-red,使用HSV的顏色模式);然後進行渲染,會根據標量值從顏色映射表中去選取合適的顏色;


問題二:標量值怎麼得到的?

是根據屬性值來計算的,vtkMapper 的控制哪一種屬性數據 (例如點屬性數據、 單元屬性數據、屬性數據數組)被用於顏色映射。


問題三:

猜測:vtk可以根據模型讀入的顏色去渲染,怎麼去找這種模式?


問題四:vtk的Actor

用來在一場景中表現一個可視化實體,如一些簡單的球形、錐體等,Actor 提供了一組相關的繪製屬性,如物體的表面屬性(反射光、漫反射光、顏色等) 、物體的顯示方式(實體顯示、線框顯示) 、物體的紋理映射、物體的幾何體定義等。

首先創建模型;然後vtkPolyDataMapper創建映射器;然後通過映射器將數據轉入到圖形系統;通過vtkProperty設置模型屬性,例如Actor->GetProperty()->SetColor(1,1,1);然而當被繪製的圖形帶有屬性數據的時候,前面所述的方法不能設置模型的顏色,vtk會使用默認的數據爲模型添加顏色,因此需要使用ScalarVisibilityOff()方法來忽略屬性值,就可以使用物體的材質、物體的環境光、漫反射光、鏡面反射光爲物體繪製顏色,這也就是爲什麼模型顯示的顏色不是模型本身定義的顏色的原因!

vtkPolyDataMapper *pPolyMap= vtkPolyDataMapper::New();
pPoly->SetInput(pPlane->GetOutput());
//忽略屬性數據
pPoly-> ScalarVisibilityOff();
vtkActor *myActor=vtkActor::New();//創建演員對象
myActor->SetMapper(pPoly);//將可視化流水線數據轉入圖形系統
myActor->GetProperty()->SetColor(1,1,1); //設置繪製物體的顏色


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章