版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本節(jié)課內容VTK:ATutorial,介紹VTK的基本內容1WhatisVTK?2VTK圖形模型3VTK可視化模型本節(jié)課內容VTK:ATutorial,介紹VTK的基本13.0VTK安裝在,有vtk5.0版已編譯好的安裝文件:VTK.ZIP
把VTK.ZIP解壓到目錄python25\下。(2)VTK的主站點在
可在該站點上下載最新版的源代碼、特定平臺的二進制代碼、例子、數據和文檔等。
3.0VTK安裝在,2VTK是幾個較為廣泛使用的可視化系統之一。AVS是商用系統,IBM’sDataExplorer(DX)原先為商用系統,目前已轉為開放源代碼系統并改名為OpenDX.其它還有NAGExplorer4andTemplateGraphicsAmira.VTK是一個通用可視化系統,已被許多大學和研究機構采用,作為教學和研究工具。許多公司也在其基礎上開發(fā)了各種可視化系統,包括醫(yī)學可視化,體可視化,石油勘探,聲學系統,流體系統,有限元分析,表面重構等。VTK是幾個較為廣泛使用的可視化系統之一。AVS是商用33.1WhatisVTK?
開放源代碼、可移植(WinTel/Unix)、面向對象的3D計算機圖形,可視化,和圖像處理系統;以C++語言實現,支持Tcl、Python和Java語言;支持復雜應用程序開發(fā),應用程序快速原型開發(fā);支持多種GUI開發(fā)環(huán)境,如Tk、X/Motif、MFC、wxWidgets
。提供數據表達類型,包括無結構點集,多邊形數據,圖像,體元,結構格網,正交格網,以及無結構格網等.
通過readers/import以及writers/export和其它程序交換數據。提供數百個數據處理器處理各種數據,從圖像變換到三角網構建.VTK繪制模式支持2D、多邊形、體元和紋理繪制,以及它們的各種組合。3.1WhatisVTK?43.2VTK結構3.2.1VTK在API訪問接口上包括兩個主要部分:C++實現的核心層自動生成的接口層,包括Tcl、Java和Python.3.2VTK結構5C++實現的核心層:數據結構、算法和對計算時間要求高的系統函數在C++核心層中實現。核心層中采用對象工廠和虛擬函數等提高系統可移植性以及可擴展性。VTK在核心層獨立于任何GUI,不依賴于某一特定的窗口系統。應用程序開發(fā)者能很方便地把VTK插入到自己開發(fā)的系統中。VTK通過抽象的圖像模型實現圖形的可移植性。C++實現的核心層:6
自動生成的接口層:核心層提供速度和效率,接口層提供的是靈活和可擴展能力。例如使用GUI原型開發(fā)工具如Tcl/Tk,Python/Tk,Python/wxPython,或JavaAWT可進行專業(yè)應用程序的快速開發(fā)。自動生成的接口層:73.2.2VTK內部組成VTK內部包括兩個主要的子系統—圖形模型子系統和可視化管道子系統。(1)圖形模型子系統圖形模型是建立在圖形語言(如OPENGL)基礎上的抽象層,提供跨平臺的可移植性。在1993年,不同的計算機平臺有各自的圖形語言:
XGLforSun,StarbaseforHewltt-Packard,glforSiliconGraphics.為了實現圖形的平臺與設備無關,提出了圖形模型.圖形模型中的對象采用電影工業(yè)中的名稱命名。燈光、相機、演員和道具是用戶創(chuàng)建場景所使用的類。通過抽象圖形模型,3D多邊形繪制(lights,cameras,actors)和體繪制以及其它繪制方式就有了一致的訪問接口。3.2.2VTK內部組成8環(huán)境信息可視化-vtk課件9
繪制窗口和繪制器:可視化具體的數據前,必須在計算機屏幕上打開一個繪制窗口。vtkRenderWindow是一個或多個繪制器在其上進行繪制的窗口的抽象基類。直接調用vtkRenderWindow可以自動生成所在平臺上與設備相關的窗口子類。vtkRenderWindow是vtkRenderer對象的容器對象。多個vtkRenderer對象可以平鋪在一個vtkRenderWindow中,從而創(chuàng)建復合的可視化系統。繪制窗口和繪制器:10下面例子把兩個繪制器放在一個繪制窗口中。每一個有不同的背景顏色:fromvtkimport*renWin=vtkRenderWindow()renWin.SetSize(600,300)ren1=vtkRenderer()ren1.SetViewport(0.0,0.0,0.5,1.0)ren1.SetBackground(0.8,0.4,0.2)renWin.AddRenderer(ren1)ren2=vtkRenderer()ren2.SetViewport(0.5,0.0,1.0,1.0)ren2.SetBackground(0.1,0.2,0.4)renWin.AddRenderer(ren2)renWin.Render()運行下面例子把兩個繪制器放在一個繪制窗口中。每一個有不同的背景顏11
交互器:一般,我們使用鼠標控制場景中的相機位置和方向,以及其它道具。vtkRenderWindowInteractor提供交互功能。iren=vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)iren.Initialize()iren.Start()交互器:12
道具,映射器,和特性道具是被加到繪制器中創(chuàng)建場景的對象。vtkProp是所有2D和3D道具的抽象基類,包含可見性、方向、大小和位置信息。道具與映射器及特性對象關聯.映射器引用輸入數據對象并知道如何繪制該輸入對象.特性對象包含繪制參數,如顏色和材質等.
道具,映射器,和特性13
繪制3D幾何數據vtkActor是在場景中繪制3D幾何數據的vtkProp道具類的子類。演員類對象自動創(chuàng)建缺省的vtkProperty對象,但要求用戶自己創(chuàng)建vtkMapper子類。根據幾何特性的不同,從vtkDataSetMapper或vtkPolyDataMapper中選擇一個.如果數據是用vtkPolyData表示的,包含點,線,和多邊形,則使用vtkPolyDataMapper,否則使用vtkDataSetMapper。繪制3D幾何數據14下例創(chuàng)建一個立方體:cubeData=vtkCubeSource()cubeMapper=vtkPolyDataMapper()cubeMapper.SetInput(cubeData.GetOutput())cubeActor=vtkActor()cubeActor.SetMapper(cubeMapper)Ren1.AddProp(cubeActor)Ren1.ResetCamera()renWin.Render()運行由于vtkCubeSource對象是多邊形數據,使用vtkPolyDataMapper繪制數據,ResetCamera()把相機對準數據下例創(chuàng)建一個立方體:15
旋轉與改變顏色:cubeActor.RotateX(30.0)cubeActor.RotateY(20.0)cubeActor.GetProperty().SetColor(1.0,0.7,0.7)renWinRender使用演員的GetProperty()訪問自動創(chuàng)建的特性對象。
運行ch3\cubecolor.py旋轉與改變顏色:163D體數據繪制vtkImageData是vtkDataSet的子類,可表示1D、2D和3D圖像數據。作為vtkDataSet的子類,vtkImageData可用vtkActor表示,并可用vtkDataSetMapper進行繪制。在3D下,vtkImageData數據被看作體元,相應的,它就可用vtkVolume表示,并用vtkVolumeMapper的子類繪制.VTK目前支持三種類型的體繪制—光線跟蹤,2D紋理映射,以及VolumePro圖形卡.3D體數據繪制17下例中,首先讀入一個3D結構數據,然后使用vtkVolumeTextureMapper2D繪制:negReader=vtkSLCReader()negReader.Set(“neghip.slc”)negMapper=vtkVolumeTextureMapper2D()negMapper.SetInput(negReader.GetOutput())體繪制最困難的是定義轉換函數,把標量值轉成顏色和透明度。negOpacity=vtkPiecewiseFunction()negOpacity.AddPoint(0,0.0)negOpacity.AddPoint(255,0.2)negColor=vtkColorTransferFunction()negColor.AddRGBPoint(64,1.0,0.0,0.0)negColor.AddRGBPoint(128,0.0,0.0,1.0)negColor.AddRGBPoint(196,0.0,1.0,0.0)下例中,首先讀入一個3D結構數據,然后使用vtkVolume18
創(chuàng)建體元特性和體元道具:negProperty=vtkVolumeProperty()negProperty.SetColor(negColor)negProperty.SetScalarOpacity(negOpacity)negVolume=vtkVolume()negVolume.SetMapper(negMapper)negVolume.SetProperty(negProperty)ren2.AddProp(negVolume)ren2.ResetCamera()renWin.Render()
運行創(chuàng)建體元特性和體元道具:19
幾何與體元的混合:VTK在一個場景中可以混合多個演員和體元進行繪制。下例,多邊形和體元混合在一起。posReader=vtkPolyDataReader()posReader.Set(“poshipsurface.vtk”)posMapper=vtkPolyDataMapper()posMapper.SetInput(posReader.GetOutput())posActor=vtkActor()posActor.SetMapper(posMapper)ren2.AddProp(posActor)renWin.Render()運行幾何與體元的混合:202D數據繪制除了3D幾何和體元數據,VTK能夠可視化2D數據,如幾何,圖像,和文本。演員,映射器,和特性同樣適用于2D數據。下例把2D數據和3D數據混合繪制。vtkActor2D表示場景中的標題,vtkTextMapper繪制文本數據,vtkActor2D自動創(chuàng)建vtkProperty2D對象。titleMapper=vtkTextMapper()titleMapper.SetInput(“ThisisaPinkCube”)titleMapper.GetTextProperty().SetJustificationToCentered()titleActor=vtkActor2D()titleActor.SetMapper(titleMapper)titleActor.GetProperty().SetColor(1,1,0)pc=titleActor.GetPositionCoordinate()pc.SetCoordinateSystemToNormalizedViewport()Pc.SetValue(0.5,0.92)ren1.AddProp(titleActor)renWin.Render() 運行2D數據繪制212D數據常用于注記,VTK提供了一些對象,能夠把多個2D演員和映射器組合成一個2D演員。例如,vtkScalarBarActor把文本和2D多邊形組合成圖例:scalarBar=vtkScalarBarActor()scalarBar.SetLookupTable(negColor)scalarBar.SetTitle(“Density”)sPC=scalarBar.GetPositionCoordinate()sPC.SetCoordinateSystemToNormalizedViewport()sPC.SetValue(0.8,0.1)ren2.AddProp(scalarBar)renWin.Render()運行2D數據常用于注記,VTK提供了一些對象,能夠把多個2D演22
燈光,相機VTK應用程序不需要顯式創(chuàng)建vtkLight或vtkCamera。如果沒有創(chuàng)建,系統會自動創(chuàng)建。從繪制器可以修改位置、焦點以及視場等。相機包含一些方法,通過它們可調整位置,旋轉等,如Azimuth(),Elevation(),Roll(),Pitch(),andYaw()。cam=ren2.GetActiveCamera()cam.Azimuth(20.0)cam.Elevation(10.0)renWin.Render()運行燈光,相機23燈光缺省是白光,位置和焦點缺省情況下和相機一致。下例加入第二個光源,綠色。light=vtkLight()light.SetFocalPoint(0.0,0.0,0.0)light.SetPosition(1.0,0.0,0.0)light.SetColor(0.0,1.0,0.0)light.SetIntensity(0.5)ren2.AddLight(light)renWin.Render()運行燈光缺省是白光,位置和焦點缺省情況下和相機一致。下例加入第二24(2)VTK可視化管道VTK數據處理管道把數據變換成可由圖形子系統繪制的形式,或變換成其它形式,以待管道的后續(xù)處理。例如,讀入離散點,通過三角化創(chuàng)建多邊形,使用面繪制顯示mesh面等構成一個數據處理管道。管道,也叫做可視化網絡,通過連接處理對象和數據對象構成。數據對象提供對數據的訪問,處理對象操作數據對象。在實現上,連接通過
SetInput()/GetOutput()方法實施:aFilter.SetInput(bFilter.GetOutput())Filters創(chuàng)建與它的輸出類型一致的內部數據對象。只有輸出與輸入類型匹配的連接能夠成立。上例中,bFilter的輸出類型和aFilter的輸入類型必須一致。類型檢查可在編譯時或運行時進行。(2)VTK可視化管道25環(huán)境信息可視化-vtk課件26環(huán)境信息可視化-vtk課件27環(huán)境信息可視化-vtk課件28一旦管道構建起來,Filters則只有在內部狀態(tài)改變了或它的輸入數據改變了才能重新執(zhí)行。VTK采用分布式隱含更新方法控制管道的運行。每個對西那個管理一個內部時間標記,只有過時的對象才能重新運算。一旦管道構建起來,Filters則只有在內部狀態(tài)改變了或它的29
數據對象:VTK一般把數據表示成場數據,數據集是帶有拓撲和幾何結構的數據對象。除了結構,數據集還附帶有屬性數據。屬性數據包括:標量,矢量,張量,法向,紋理坐標,以及場數據。數據對象:30環(huán)境信息可視化-vtk課件31
處理對象:VTK提供了數百個處理對象。其中多數只處理一種數據類型(如圖像處理對象)。一些處理對象如vtkContourFilter接受一種類型的數據輸入,輸出另一種類型的數據。處理對象一般被稱為Filters。VTK把處理對象分為三類:源處理對象,過濾器,和映射器。源處理對象沒有VTK數據輸入,但產生一到多個輸出,如讀入器。過濾器接受一到多個輸入,產生一到多個輸出。映射器是管道的終點,它或者和圖形系統耦合在一起,或者把數據寫到磁盤或另一管道。處理對象:32例子:讀取數字化的多邊形數據,
然后簡化,用Laplacian光滑減少面噪聲,生成面法線,修飾表面:讀多邊形數據:Reader=vtkBYUReader()Reader.SetGeometry(“fran.g”)創(chuàng)建管道,由decimator,smoother,和normalgenerator組成。Deci=vtkDecimatePro()Deci.SetInput(reader.GetOutput())Deci.SetTargetReduction(0.9)Deci.PreserveTopologyOn()Smoother=vtkSmoothPolyDataFilter()Smoother.SetInput(deci.GetOutput())例子:33Normals=vtkPolyDataNormals()Normals.SetInput(smoother.GetOutput())Normals.SetFeatureAngle(60)mapper=vtkPolyDataMapper()Mapper.SetInput(normals.GetOutput())fran=vtkActor()Fran.SetMapper(mapper)Fran.GetProperty().SetColor(1,0.49,0.25)ptMask=vtkMaskPoints()ptMask.SetInput(normals.GetOutput())ptMask.SetOnRatio(10)ptMask.RandomModeOn()cone=vtkConeSource()Cone.SetResolution(6)Normals=vtkPolyDataNormals()34Transform=vtkTransform()Transform.Translate(0.5,0.0,0.0)transformF=vtkTransformPolyDataFilter()transformF.SetInput(cone.GetOutput())transformF.SetTransform(transform)Glyph.vtkGlyph3D()Glyph.SetInput(ptMask.GetOutput())Glyph.SetSource(transformF.GetOutput())Glyph.SetVectorModeToUseNormal()Glyph.SetScaleModeToScaleByVector()Glyph.SetScaleFactor(0.004)spikeMapper=vtkPolyDataMapper()spikeMapper.SetInput(glyph.GetOutput())spikeActor=vtkActor()spikeActor.SetMapper(spikeMapper)spikeActor.GetProperty().SetColor(0,.79,.34)Transform=vtkTransform()35ren3=vtkRenderer()renWin2=vtkRenderWindow()renWin2.AddRenderer(ren3)Iren2=vtkRenderWindowInteractor()Iren2.SetRenderWindow(renWin2)Ren3.AddActor(fran)Ren3.AddActor(spikeActor)renWin2.Render()運行
ren3=vtkRenderer()36環(huán)境信息可視化-vtk課件37環(huán)境信息可視化-vtk課件38環(huán)境信息可視化-vtk課件39環(huán)境信息可視化-vtk課件40第一套作業(yè)要求:一創(chuàng)建交互器和交互窗口
a創(chuàng)建1個交互器vtkRenderWindowInteractor;
b創(chuàng)建1個繪制窗口vtkRenderWindow;
c在上述繪制窗口中,創(chuàng)建3個繪制器vtkRenderer。二繪制內容
1在第一個繪制器中:繪制一個立方體cube和一個標題如“Thisisacube”;
2在第二個繪制器中:在1的基礎上,改變缺省燈光的顏色為綠色,并改變缺省相機的方位角;
3在第三個繪制器中: 繪制一個圖例,顏色由黃色變到藍色,范圍從100到200;三提交方式:
通過email發(fā)到第一套作業(yè)要求:一創(chuàng)建交互器和交互窗口
41下一節(jié)課內容:4.1可視化數據類型
4.2科學數據管理4.3科學數據格式4.4圖形圖像數據格式4.5VTK中的數據對象下一節(jié)課內容:4.1可視化數據類型42網格數據:笛卡兒網格規(guī)整網格矩形網格結構網格非結構網格曲線網格塊結構網格混合結構網格散亂點網格數據:43科學數據格式:HDF格式CDF和NetCDF科學數據格式:44VTK中的數據對象:vtkDataObject
vtkPiecewiseFunction
vtkDataSet
vtkImageData
vtkStructuredPoints
vtkImageCanvasSource2D
vtkPointSet
vtkPolyData
vtkStructuredGrid
vtkUnstructuredGrid
vtkRectilinearGridvtkDataSetAttributes
vtkPointData
vtkCellDatavtkFieldDatavtkAttributeData
VTK中的數據對象:45vtkCell
vtkHexahedron
vtkLine
vtkPixel
vtkPolyLine
vtkPolyVertex
vtkPolygon
vtkQuad
vtkTetra
vtkTriangle
vtkTriangleStrip
vtkVertex
vtkVoxel
vtkWedge
vtkPyramid
vtkCell469、要學生做的事,教職員躬親共做;要學生學的知識,教職員躬親共學;要學生守的規(guī)則,教職員躬親共守。2022/12/22022/12/2Friday,December2,202210、閱讀一切好書如同和過去最杰出的人談話。2022/12/22022/12/22022/12/212/2/20222:31:31AM11、一個好的教師,是一個懂得心理學和教育學的人。2022/12/22022/12/22022/12/2Dec-2202-Dec-2212、要記住,你不僅是教課的教師,也是學生的教育者,生活的導師和道德的引路人。2022/12/22022/12/22022/12/2Friday,December2,202213、Hewhoseizetherightmoment,istherightman.誰把握機遇,誰就心想事成。2022/12/22022/12/22022/12/22022/12/212/2/202214、誰要是自己還沒有發(fā)展培養(yǎng)和教育好,他就不能發(fā)展培養(yǎng)和教育別人。02十二月20222022/12/22022/12/22022/12/215、一年之計,莫如樹谷;十年之計,莫如樹木;終身之計,莫如樹人。十二月222022/12/22022/12/22022/12/212/2/202216、提出一個問題往往比解決一個更重要。因為解決問題也許僅是一個數學上或實驗上的技能而已,而提出新的問題,卻需要有創(chuàng)造性的想像力,而且標志著科學的真正進步。2022/12/22022/12/202December202217、兒童是中心,教育的措施便圍繞他們而組織起來。2022/12/22022/12/22022/12/22022/12/2謝謝觀賞
Youmademyday!我們,還在路上……9、要學生做的事,教職員躬親共做;要學生學的知識,教職員躬親47本節(jié)課內容VTK:ATutorial,介紹VTK的基本內容1WhatisVTK?2VTK圖形模型3VTK可視化模型本節(jié)課內容VTK:ATutorial,介紹VTK的基本483.0VTK安裝在,有vtk5.0版已編譯好的安裝文件:VTK.ZIP
把VTK.ZIP解壓到目錄python25\下。(2)VTK的主站點在
可在該站點上下載最新版的源代碼、特定平臺的二進制代碼、例子、數據和文檔等。
3.0VTK安裝在,49VTK是幾個較為廣泛使用的可視化系統之一。AVS是商用系統,IBM’sDataExplorer(DX)原先為商用系統,目前已轉為開放源代碼系統并改名為OpenDX.其它還有NAGExplorer4andTemplateGraphicsAmira.VTK是一個通用可視化系統,已被許多大學和研究機構采用,作為教學和研究工具。許多公司也在其基礎上開發(fā)了各種可視化系統,包括醫(yī)學可視化,體可視化,石油勘探,聲學系統,流體系統,有限元分析,表面重構等。VTK是幾個較為廣泛使用的可視化系統之一。AVS是商用503.1WhatisVTK?
開放源代碼、可移植(WinTel/Unix)、面向對象的3D計算機圖形,可視化,和圖像處理系統;以C++語言實現,支持Tcl、Python和Java語言;支持復雜應用程序開發(fā),應用程序快速原型開發(fā);支持多種GUI開發(fā)環(huán)境,如Tk、X/Motif、MFC、wxWidgets
。提供數據表達類型,包括無結構點集,多邊形數據,圖像,體元,結構格網,正交格網,以及無結構格網等.
通過readers/import以及writers/export和其它程序交換數據。提供數百個數據處理器處理各種數據,從圖像變換到三角網構建.VTK繪制模式支持2D、多邊形、體元和紋理繪制,以及它們的各種組合。3.1WhatisVTK?513.2VTK結構3.2.1VTK在API訪問接口上包括兩個主要部分:C++實現的核心層自動生成的接口層,包括Tcl、Java和Python.3.2VTK結構52C++實現的核心層:數據結構、算法和對計算時間要求高的系統函數在C++核心層中實現。核心層中采用對象工廠和虛擬函數等提高系統可移植性以及可擴展性。VTK在核心層獨立于任何GUI,不依賴于某一特定的窗口系統。應用程序開發(fā)者能很方便地把VTK插入到自己開發(fā)的系統中。VTK通過抽象的圖像模型實現圖形的可移植性。C++實現的核心層:53
自動生成的接口層:核心層提供速度和效率,接口層提供的是靈活和可擴展能力。例如使用GUI原型開發(fā)工具如Tcl/Tk,Python/Tk,Python/wxPython,或JavaAWT可進行專業(yè)應用程序的快速開發(fā)。自動生成的接口層:543.2.2VTK內部組成VTK內部包括兩個主要的子系統—圖形模型子系統和可視化管道子系統。(1)圖形模型子系統圖形模型是建立在圖形語言(如OPENGL)基礎上的抽象層,提供跨平臺的可移植性。在1993年,不同的計算機平臺有各自的圖形語言:
XGLforSun,StarbaseforHewltt-Packard,glforSiliconGraphics.為了實現圖形的平臺與設備無關,提出了圖形模型.圖形模型中的對象采用電影工業(yè)中的名稱命名。燈光、相機、演員和道具是用戶創(chuàng)建場景所使用的類。通過抽象圖形模型,3D多邊形繪制(lights,cameras,actors)和體繪制以及其它繪制方式就有了一致的訪問接口。3.2.2VTK內部組成55環(huán)境信息可視化-vtk課件56
繪制窗口和繪制器:可視化具體的數據前,必須在計算機屏幕上打開一個繪制窗口。vtkRenderWindow是一個或多個繪制器在其上進行繪制的窗口的抽象基類。直接調用vtkRenderWindow可以自動生成所在平臺上與設備相關的窗口子類。vtkRenderWindow是vtkRenderer對象的容器對象。多個vtkRenderer對象可以平鋪在一個vtkRenderWindow中,從而創(chuàng)建復合的可視化系統。繪制窗口和繪制器:57下面例子把兩個繪制器放在一個繪制窗口中。每一個有不同的背景顏色:fromvtkimport*renWin=vtkRenderWindow()renWin.SetSize(600,300)ren1=vtkRenderer()ren1.SetViewport(0.0,0.0,0.5,1.0)ren1.SetBackground(0.8,0.4,0.2)renWin.AddRenderer(ren1)ren2=vtkRenderer()ren2.SetViewport(0.5,0.0,1.0,1.0)ren2.SetBackground(0.1,0.2,0.4)renWin.AddRenderer(ren2)renWin.Render()運行下面例子把兩個繪制器放在一個繪制窗口中。每一個有不同的背景顏58
交互器:一般,我們使用鼠標控制場景中的相機位置和方向,以及其它道具。vtkRenderWindowInteractor提供交互功能。iren=vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)iren.Initialize()iren.Start()交互器:59
道具,映射器,和特性道具是被加到繪制器中創(chuàng)建場景的對象。vtkProp是所有2D和3D道具的抽象基類,包含可見性、方向、大小和位置信息。道具與映射器及特性對象關聯.映射器引用輸入數據對象并知道如何繪制該輸入對象.特性對象包含繪制參數,如顏色和材質等.
道具,映射器,和特性60
繪制3D幾何數據vtkActor是在場景中繪制3D幾何數據的vtkProp道具類的子類。演員類對象自動創(chuàng)建缺省的vtkProperty對象,但要求用戶自己創(chuàng)建vtkMapper子類。根據幾何特性的不同,從vtkDataSetMapper或vtkPolyDataMapper中選擇一個.如果數據是用vtkPolyData表示的,包含點,線,和多邊形,則使用vtkPolyDataMapper,否則使用vtkDataSetMapper。繪制3D幾何數據61下例創(chuàng)建一個立方體:cubeData=vtkCubeSource()cubeMapper=vtkPolyDataMapper()cubeMapper.SetInput(cubeData.GetOutput())cubeActor=vtkActor()cubeActor.SetMapper(cubeMapper)Ren1.AddProp(cubeActor)Ren1.ResetCamera()renWin.Render()運行由于vtkCubeSource對象是多邊形數據,使用vtkPolyDataMapper繪制數據,ResetCamera()把相機對準數據下例創(chuàng)建一個立方體:62
旋轉與改變顏色:cubeActor.RotateX(30.0)cubeActor.RotateY(20.0)cubeActor.GetProperty().SetColor(1.0,0.7,0.7)renWinRender使用演員的GetProperty()訪問自動創(chuàng)建的特性對象。
運行ch3\cubecolor.py旋轉與改變顏色:633D體數據繪制vtkImageData是vtkDataSet的子類,可表示1D、2D和3D圖像數據。作為vtkDataSet的子類,vtkImageData可用vtkActor表示,并可用vtkDataSetMapper進行繪制。在3D下,vtkImageData數據被看作體元,相應的,它就可用vtkVolume表示,并用vtkVolumeMapper的子類繪制.VTK目前支持三種類型的體繪制—光線跟蹤,2D紋理映射,以及VolumePro圖形卡.3D體數據繪制64下例中,首先讀入一個3D結構數據,然后使用vtkVolumeTextureMapper2D繪制:negReader=vtkSLCReader()negReader.Set(“neghip.slc”)negMapper=vtkVolumeTextureMapper2D()negMapper.SetInput(negReader.GetOutput())體繪制最困難的是定義轉換函數,把標量值轉成顏色和透明度。negOpacity=vtkPiecewiseFunction()negOpacity.AddPoint(0,0.0)negOpacity.AddPoint(255,0.2)negColor=vtkColorTransferFunction()negColor.AddRGBPoint(64,1.0,0.0,0.0)negColor.AddRGBPoint(128,0.0,0.0,1.0)negColor.AddRGBPoint(196,0.0,1.0,0.0)下例中,首先讀入一個3D結構數據,然后使用vtkVolume65
創(chuàng)建體元特性和體元道具:negProperty=vtkVolumeProperty()negProperty.SetColor(negColor)negProperty.SetScalarOpacity(negOpacity)negVolume=vtkVolume()negVolume.SetMapper(negMapper)negVolume.SetProperty(negProperty)ren2.AddProp(negVolume)ren2.ResetCamera()renWin.Render()
運行創(chuàng)建體元特性和體元道具:66
幾何與體元的混合:VTK在一個場景中可以混合多個演員和體元進行繪制。下例,多邊形和體元混合在一起。posReader=vtkPolyDataReader()posReader.Set(“poshipsurface.vtk”)posMapper=vtkPolyDataMapper()posMapper.SetInput(posReader.GetOutput())posActor=vtkActor()posActor.SetMapper(posMapper)ren2.AddProp(posActor)renWin.Render()運行幾何與體元的混合:672D數據繪制除了3D幾何和體元數據,VTK能夠可視化2D數據,如幾何,圖像,和文本。演員,映射器,和特性同樣適用于2D數據。下例把2D數據和3D數據混合繪制。vtkActor2D表示場景中的標題,vtkTextMapper繪制文本數據,vtkActor2D自動創(chuàng)建vtkProperty2D對象。titleMapper=vtkTextMapper()titleMapper.SetInput(“ThisisaPinkCube”)titleMapper.GetTextProperty().SetJustificationToCentered()titleActor=vtkActor2D()titleActor.SetMapper(titleMapper)titleActor.GetProperty().SetColor(1,1,0)pc=titleActor.GetPositionCoordinate()pc.SetCoordinateSystemToNormalizedViewport()Pc.SetValue(0.5,0.92)ren1.AddProp(titleActor)renWin.Render() 運行2D數據繪制682D數據常用于注記,VTK提供了一些對象,能夠把多個2D演員和映射器組合成一個2D演員。例如,vtkScalarBarActor把文本和2D多邊形組合成圖例:scalarBar=vtkScalarBarActor()scalarBar.SetLookupTable(negColor)scalarBar.SetTitle(“Density”)sPC=scalarBar.GetPositionCoordinate()sPC.SetCoordinateSystemToNormalizedViewport()sPC.SetValue(0.8,0.1)ren2.AddProp(scalarBar)renWin.Render()運行2D數據常用于注記,VTK提供了一些對象,能夠把多個2D演69
燈光,相機VTK應用程序不需要顯式創(chuàng)建vtkLight或vtkCamera。如果沒有創(chuàng)建,系統會自動創(chuàng)建。從繪制器可以修改位置、焦點以及視場等。相機包含一些方法,通過它們可調整位置,旋轉等,如Azimuth(),Elevation(),Roll(),Pitch(),andYaw()。cam=ren2.GetActiveCamera()cam.Azimuth(20.0)cam.Elevation(10.0)renWin.Render()運行燈光,相機70燈光缺省是白光,位置和焦點缺省情況下和相機一致。下例加入第二個光源,綠色。light=vtkLight()light.SetFocalPoint(0.0,0.0,0.0)light.SetPosition(1.0,0.0,0.0)light.SetColor(0.0,1.0,0.0)light.SetIntensity(0.5)ren2.AddLight(light)renWin.Render()運行燈光缺省是白光,位置和焦點缺省情況下和相機一致。下例加入第二71(2)VTK可視化管道VTK數據處理管道把數據變換成可由圖形子系統繪制的形式,或變換成其它形式,以待管道的后續(xù)處理。例如,讀入離散點,通過三角化創(chuàng)建多邊形,使用面繪制顯示mesh面等構成一個數據處理管道。管道,也叫做可視化網絡,通過連接處理對象和數據對象構成。數據對象提供對數據的訪問,處理對象操作數據對象。在實現上,連接通過
SetInput()/GetOutput()方法實施:aFilter.SetInput(bFilter.GetOutput())Filters創(chuàng)建與它的輸出類型一致的內部數據對象。只有輸出與輸入類型匹配的連接能夠成立。上例中,bFilter的輸出類型和aFilter的輸入類型必須一致。類型檢查可在編譯時或運行時進行。(2)VTK可視化管道72環(huán)境信息可視化-vtk課件73環(huán)境信息可視化-vtk課件74環(huán)境信息可視化-vtk課件75一旦管道構建起來,Filters則只有在內部狀態(tài)改變了或它的輸入數據改變了才能重新執(zhí)行。VTK采用分布式隱含更新方法控制管道的運行。每個對西那個管理一個內部時間標記,只有過時的對象才能重新運算。一旦管道構建起來,Filters則只有在內部狀態(tài)改變了或它的76
數據對象:VTK一般把數據表示成場數據,數據集是帶有拓撲和幾何結構的數據對象。除了結構,數據集還附帶有屬性數據。屬性數據包括:標量,矢量,張量,法向,紋理坐標,以及場數據。數據對象:77環(huán)境信息可視化-vtk課件78
處理對象:VTK提供了數百個處理對象。其中多數只處理一種數據類型(如圖像處理對象)。一些處理對象如vtkContourFilter接受一種類型的數據輸入,輸出另一種類型的數據。處理對象一般被稱為Filters。VTK把處理對象分為三類:源處理對象,過濾器,和映射器。源處理對象沒有VTK數據輸入,但產生一到多個輸出,如讀入器。過濾器接受一到多個輸入,產生一到多個輸出。映射器是管道的終點,它或者和圖形系統耦合在一起,或者把數據寫到磁盤或另一管道。處理對象:79例子:讀取數字化的多邊形數據,
然后簡化,用Laplacian光滑減少面噪聲,生成面法線,修飾表面:讀多邊形數據:Reader=vtkBYUReader()Reader.SetGeometry(“fran.g”)創(chuàng)建管道,由decimator,smoother,和normalgenerator組成。Deci=vtkDecimatePro()Deci.SetInput(reader.GetOutput())Deci.SetTargetReduction(0.9)Deci.PreserveTopologyOn()Smoother=vtkSmoothPolyDataFilter()Smoother.SetInput(deci.GetOutput())例子:80Normals=vtkPolyDataNormals()Normals.SetInput(smoother.GetOutput())Normals.SetFeatureAngle(60)mapper=vtkPolyDataMapper()Mapper.SetInput(normals.GetOutput())fran=vtkActor()Fran.SetMapper(mapper)Fran.GetProperty().SetColor(1,0.49,0.25)ptMask=vtkMaskPoints()ptMask.SetInput(normals.GetOutput())ptMask.SetOnRatio(10)ptMask.RandomModeOn()cone=vtkConeSource()Cone.SetResolution(6)Normals=vtkPolyDataNormals()81Transform=vtkTransform()Transform.Translate(0.5,0.0,0.0)transformF=vtkTransformPolyDataFilter()transformF.SetInput(cone.GetOutput())transformF.SetTransform(transform)Glyph.vtkGlyph3D()Glyph.SetInput(ptMask.GetOutput())Glyph.SetSource(transformF.GetOutput())Glyph.SetVectorModeToUseNormal()Glyph.SetScaleModeToScaleByVector()Glyph.SetScaleFactor(0.004)spikeMapper=vtkPolyDataMapper()spikeMapper.SetInput(glyph.GetOutput())spikeActor=vtkActor()spikeActor.SetMapper(spikeMapper)spikeActor.GetProperty().SetColor(0,.79,.34)Transform=vtkTransform()82ren3=vtkRenderer()renWin2=vtkRenderWindow()renWin2.AddRenderer(ren3)Iren2=vtkRenderWindowInteractor()Iren2.SetRenderWindow(renWin2)Ren3.AddActor(fran)Ren3.Add
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑幕墻工程金屬幕墻清洗勞務分包合同樣本4篇
- 2025版智慧城市建設履約擔保合同模板4篇
- 2025年度二零二五年度木質包裝材料銷售合同范本4篇
- 2025年度個人意外傷害保險借款合同范本3篇
- 2025版小程序功能開發(fā)授權合同模板3篇
- 2025年分期付款數碼產品購買合同
- 2025年機械設備加工合同
- 2025版外貿出口農產品質量安全合同3篇
- 2025年度環(huán)保認證木制品采購合同范本4篇
- 二零二五年度知識產權留置擔保協議書4篇
- 中國末端執(zhí)行器(靈巧手)行業(yè)市場發(fā)展態(tài)勢及前景戰(zhàn)略研判報告
- 北京離婚協議書(2篇)(2篇)
- 2025中國聯通北京市分公司春季校園招聘高頻重點提升(共500題)附帶答案詳解
- Samsung三星SMARTCAMERANX2000(20-50mm)中文說明書200
- 2024年藥品質量信息管理制度(2篇)
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 廣東省廣州市2024年中考數學真題試卷(含答案)
- 內審檢查表完整版本
- 3級人工智能訓練師(高級)國家職業(yè)技能鑒定考試題及答案
- 孤殘兒童護理員技能鑒定考試題庫(含答案)
- 瑤浴話術資料
評論
0/150
提交評論