1. 程式人生 > >vtk的小總結(1):基礎知識

vtk的小總結(1):基礎知識

       也是因為需要,所以要學一點點vtk。藉此發一點點總結,希望能有一點用。

1、 vtk裡每個類的建構函式都定義為保護成員,所以不能直接類名+例項進行定義物件。要使用智慧指標vtkSmartPointer<vtkRenderWindow>renWin = vtkSmartPointer<vtkRenderWindow>::New();  

如果使用的是*和::new()方法實現的,這裡的new()需要在生命週期結束前使用Delete()刪除。

       2、 vtkCylinderSource::setResolution(10)設定柱面10面;     

              vtkCylinderSource生成的資料型別就是vtkPolyData;      

              vtkPolyDataMapper():vtkMapper該類用於渲染vtkPolyData,就是將輸入的資料轉換成幾何圖進行渲染

              vtkActor:vtkProp 而其中的vtkProp就是資料存在於渲染場景中的形式。其子類vtkActor表達場景中的幾何資料,vtkVolume表達場景中的體資料

              vtkRenderWindow:直接使用來建立作業系統的vtk渲染引擎  其中包含了vtkRender集合、渲染引數。AddRender()方法用於加入vtkRender物件,SetSize()設定視窗。  

              vtkRender:負責管理場景的渲染過程(p24詳細介紹)

              vtkLight:設定位置燈光和方向燈光

              vtkCamera:設定相機

              vtkColor:負責顏色實現工作

              vtkStructureedPointsReader:讀入此型別的vtk檔案

       3、 vtk採用RGB和HSV兩種顏色系統來描述顏色

       4、vtkCoordinate:用來管理座標系之間的變換p46

       5、vtk中的空間變換相關的類:

vtkTransform2D,vtkTransform,vtkPerspectiveTransform,vtkGeneralTransform,vtkTransformFilter,vtkMatrix4x4;

       6、vtkRendering Engine(渲染引擎)和VisualizationPipeline(視覺化管線)

       7、vtkMarchingCubes:移動立方法提取等值面:

vtkSmartPointer<vtkMarchingCubes>marchingCubes=vtkSmartPointer<vtkMarc     hingCubes>:New();

marchingCubes->SetInputConnection(reader->GetOutputPort());

marchingCubes->SetValue(0,500);

類似於vtkMarchingCubes的對資料處理對類稱為Filter

       8、visuallizationpipeline中採用LazyEvaluation(惰性賦值)的方法來控制管線的執行。就是vtkObject中有一個重要的成員變數為Mtime,並且採用的是DemandDriven,即只有在發出請求的時候才控制管線的執行。

       9、upDate()函式會在render()函式執行的時候自動呼叫,如果你要在程式中間顯式地輸入資料,那麼必須手動地呼叫Update()函式。

       10、引用計數功能,就是在程式中有可能有重複的值,將這些資料共享,同時只生成一份資料,並且在引用的物件都被移除的時候,就自動析構。

       11、reader->IsA(“型別”)用來判斷物件是不是這個型別的。

               Reader->GetClassName()用來返回當前物件的型別。

vtk中的資料傳是通過port來實現的,具體而言就是,visuallizationpipeline是通過SetInputConnection()和GetPutputPort()來完成的。並且輸入輸出的資料需要是相同型別的。

BMP是windows下的一種影象格式

在函式返回值中,可以返回智慧指標,並且在函式中被宣告的物件不會被刪除,但是你必須使用智慧指標的引用去接收函式的返回值。不然會導致智慧指標計數變成0,從而返回了懸空指標。