VTK草稿2

看完了網(wǎng)上幾篇入門的介紹,我開始閱讀官方提供的標(biāo)準(zhǔn)教程。
VTK這個(gè)組織很有意思,軟件是開源的,社區(qū)也有,但是教程居然是要錢的……在vtk官網(wǎng)上有賣兩本書,一本是<VTK Textbook>,主要是介紹VTK的設(shè)計(jì)思想,VTK這個(gè)工具本身就是這本書的附帶產(chǎn)物;另一本是<VTK User's Guide>,看名稱就知道是介紹如何使用,所以我決定從這本書入手。

這篇文章記錄了我在閱讀這本書前三章時(shí)候的重點(diǎn)內(nèi)容。

Chapter 1 Welcome & 2 Installation

  • VTK的使用要點(diǎn)在于熟悉VTK提供的一系列的object,和這些object的組合方式。
  • 書上提供的內(nèi)容只覆蓋了一部分的類,完整的reference可以在官網(wǎng)找到,是Doxygen生成的Manual

Chapter 3 System Overview

  • VTK系統(tǒng)是由兩個(gè)子系統(tǒng)組成的,核心是C++的類庫(kù),外圍有Tcl、Java、Python的語(yǔ)言解釋層。這樣做的目的是核心高效,外圍易于開發(fā)和擴(kuò)展。當(dāng)然也可以完全用C++開發(fā)。


    VTK系統(tǒng)構(gòu)架
  • 兩個(gè)object model構(gòu)成了VTK,這兩個(gè)部分我在上一篇文章中也做了介紹

    • The Graphics Model -- 由圖形數(shù)據(jù)到圖像顯示 Geometry -> Image
    • The Visualization Model -- 由數(shù)字?jǐn)?shù)據(jù)到圖形數(shù)據(jù) Data -> Geometry

Graphics Model

  • VTK的Graphics Model主要由以下一些object組成:
  • vtkActor, vtkActor2D, vtkVolume
  • vtkLight
  • vtkCamera
  • vtkProperty, vtkProperty2D
  • vtkMapper, vtkMapper2D
  • vtkTransform
  • vtkLookupTable, vtkColorTransferFunction
  • vtkRenderer
  • vtkRenderWindow
  • vtkRenderWindowInteractor
  • Props 代表了我們?cè)趫?chǎng)景中看到的物體。

    • 3D: vtkProp3D -- vtkActor + vtkVolume
    • 2D: vtkActor2D
  • Props并不直接代表圖形數(shù)據(jù),實(shí)際上他們是依賴于Mapper,Mapper才是圖形數(shù)據(jù)的代表。

  • Props也依賴于property object, 屬性對(duì)象的控制著Props的外觀。

  • Actor 和 Volume有內(nèi)在的transformation object(vtkTransform)。這個(gè)類封裝了一個(gè)4*4的變換矩陣(transformation matrix),控制Prop的postion, orientation和 scale。

  • 光照(vtkLight)控制著場(chǎng)景的光照效果,只有在3D中有效。

  • 攝像機(jī)(vtkCamera)控制著3D的Prop怎樣在平面上顯示,也只在3D中有效。

  • vtkMapper是連接visulization popeline 和 graphics pipeline的“介質(zhì)”。

  • vtkRenderer、vtkRenderWindow上一章已經(jīng)介紹過(guò),這些是最終顯示在屏幕上的內(nèi)容。


    Geometry --> Image
  • vtkRenderWindowInteractor是用戶和顯示界面交互的工具,用戶可以用鼠標(biāo)、鍵盤控制顯示。

  • 上述的object都有subclasses來(lái)細(xì)致描述object的行為。

Visualization Model

  • VTK使用數(shù)據(jù)流的方式來(lái)將數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成圖形數(shù)據(jù)。這其中涉及到兩個(gè)基本的類:

    • vtkDataObject - a generic "bolb" of data
    • vtkProcessObject
  • 擁有統(tǒng)一結(jié)構(gòu)的數(shù)據(jù)被稱為dataset(vtkDataSet),VTK支持的dataset有如下幾種:


    dataset supported by VTK
  • Data Object 由兩部分構(gòu)成:

    • geometric and topological structure(points and cells) as illustrated by the figure 即圖形的幾何構(gòu)成
    • attribute data associated with the points and cells 即“點(diǎn)”和“點(diǎn)之間的連接”的屬性數(shù)據(jù)
data attributes associated with points and cells
  • Process Object,也被稱為"filter",操作data object來(lái)產(chǎn)生新的data object,完成了系統(tǒng)中的算法處理。
Visualization Pipeline
  • Visulization pipeline的構(gòu)建涉及到以下幾個(gè)要點(diǎn):
    • pipeline是由類似于以下的語(yǔ)句構(gòu)成:
      aFilter -> SetInput( anotherFilter -> GetOutput() );

VTK中的方法名字是大駝峰命名,即第一個(gè)單詞的首字母是大寫的……
- VTK使用了“懶惰”的計(jì)算流程,即只有當(dāng)數(shù)據(jù)被需要時(shí)才計(jì)算,如果數(shù)據(jù)沒(méi)有更新則不重復(fù)計(jì)算。
- process object 和 data object 的拼接都需要compatible,這個(gè)依靠編程語(yǔ)言的type check輔助。
- 由于VTK處理的dataset通常十分巨大,我們必須選擇是否緩存(cache)或者保留(retain)pipeline執(zhí)行過(guò)程中產(chǎn)生的數(shù)據(jù)。

Pipeline excution

其他一些小注意點(diǎn)

  • Graphics pipeline中也有process,不過(guò)針對(duì)的是image data。即針對(duì)圖形化數(shù)據(jù)的處理,而不是原始的數(shù)字信息。
  • Graphics pipeline中的process幾乎都是多線程的,并且可以自動(dòng)把數(shù)據(jù)切割成片來(lái)處理,以確保內(nèi)存足夠使用。
  • 每個(gè)VTK的類(subclass of vtkObject)都有一個(gè)AddObserver()的方法來(lái)設(shè)置回調(diào)(callback)。
  • VTK的程序編譯流程一般是cmake -> make。cmake是用來(lái)產(chǎn)生Makefile的,里面包含了VTK的include path, link lines 和 dependence。cmake依賴的是名為CMakeList.txt的文件。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天用react開發(fā),準(zhǔn)備引入一個(gè)組件本來(lái)是import Log from Log/index但是我卻寫成了 im...
    鄒小鄒大廚閱讀 376評(píng)論 0 0
  • 今晚又值班,剛才想跟兒子打個(gè)電話問(wèn)問(wèn)情況,被他媽媽否決了,說(shuō)是正在學(xué)習(xí)~~~看來(lái)今天的考試對(duì)他觸動(dòng)不小啊,平常不扎...
    璇戎爸爸閱讀 214評(píng)論 0 0
  • 人們說(shuō)迷茫是因?yàn)槟阕陨淼哪芰εc你的目標(biāo)不相符而產(chǎn)生的一種焦慮心態(tài),我們認(rèn)識(shí)到了自己的不足卻又遲遲不肯改變,因此我們...
    陰mai閱讀 212評(píng)論 0 0
  • 備注讀書筆記: 1、什么是I:這個(gè)片段說(shuō)了什么?有什么用?怎么用?2、如何寫出I:是什么?(解決一個(gè)問(wèn)題,設(shè)置場(chǎng)景...
    墨_石閱讀 201評(píng)論 1 1
  • 圖:雪見繪制 作者介紹: 從0到1,自學(xué)成才的半吊子插畫師 1 丙烯手繪石頭 2 水彩 3 彩鉛 4 油畫 零基礎(chǔ)...
    南溪閱讀 1,277評(píng)論 66 38

友情鏈接更多精彩內(nèi)容