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,從而返回了懸空指標。