4.7 Using Texture
材質(zhì)貼圖的本質(zhì)是一個2D的圖像可以渲染過程中被貼在物體的表面,來創(chuàng)造出更豐富的渲染效果。材質(zhì)貼圖需要兩個信息:
- texture map,即2D的圖像,在VTK中以
vtkImageData
的dataset來表示眨攘。 - texture coordinate,控制貼圖在物體表面的位置嚣州。
下面是示例代碼和實現(xiàn)效果:
# Load in the texture map. A texture is any unsigned char image. If it
# is not of this type, you will have to map it through a lookup table
# or by using vtkImageShiftScale.
bmpReader = vtk.vtkBMPReader()
bmpReader.SetFileName("/Volumes/Data/VTK/VTK-6.2.0/.ExternalData/MD5/8aa8fa634bb80a41256b2fd0e01819af")
atext = vtk.vtkTexture()
atext.SetInputConnection(bmpReader.GetOutputPort())
atext.InterpolateOn()
# Create a plane source and actor. The vtkPlanesSource generates
# texture coordinates.
plane = vtk.vtkPlaneSource()
planeMapper = vtk.vtkPolyDataMapper()
planeMapper.SetInputConnection(plane.GetOutputPort())
planeActor = vtk.vtkActor()
planeActor.SetMapper(planeMapper)
planeActor.SetTexture(atext)
注:這里貼圖的坐標就是plane的坐標鲫售,vtkPlaneSource
會自動生成這個坐標。
4.8 Picking
pick是一個可視化中很常見的任務(wù)该肴,選定一個點作為pick的起始位置情竹,執(zhí)行vtkAbstractPicker
的Pick()
方法,根據(jù)pick的類型匀哄,返回選取點的信息秦效,最簡單的信息是三維的坐標(x-y-z global coordinate),或者包括cell id, point id等拱雏。pick的語法如下:
Pick(selectionX, selectionY, selectionZ, Renderer)
4.9 vtkCoordinate and Coordinate Systems
VTK支持多種坐標系棉安,vtkCoordinate
這個類負責坐標系之間的轉(zhuǎn)換底扳。支持的坐標系如下:
-
DISPLAY: 窗口(
vtkWindow
)中的x-y坐標铸抑,以像素為單。以窗口的左下方為原點衷模。 - NORMALIZED DISPLAY: 歸一化的DISPLAY鹊汛,[0,1]范圍蒲赂。
- VIEWPOINT: viewpoint(即一個renderer)內(nèi)的x-y坐標,以像素為單位刁憋。
- NORMALIZED VIEWPOINT: 歸一化的VIEWPOINT滥嘴。
- VIEW: x-y-z(-1, 1) 以camera為視角的坐標系,z是深度至耻。
- WORLD: x-y-z全局坐標
- USERDEFINED: 用戶自定義的空間若皱,用戶必須相應的坐標系轉(zhuǎn)換方法。
4.10 Controlling vtkActor2D
vtkActor2D
類似于vtkActor
尘颓,不同之處在于它是繪制在一個平面上的走触,沒有一個4*4的轉(zhuǎn)換矩陣。它也有mapper:vtkMapper2D
和property:vtkProperty2D
疤苹,最難處理的部分在于它的位置處理互广。要做到這一點,必須要使用上文提到的vtkCoordinate
卧土。
4.11 Annotation
VTK提供了兩種方式來標注圖像:
- 2D annotation: 文字可以被覆蓋在3D圖像的上方(overlay plane)惫皱,即在頂層的圖層上標注。
- 3D annotation: 文字也被渲染成3D的多邊形數(shù)據(jù)尤莺,就像其他3D圖形一樣旅敷。
2D annotation
3D annotation and vtkFollower
3D的標注一般使用vtkVectorText
來創(chuàng)建字符串的多邊形表示,然后把它放在合適的位置上颤霎。一個用于放置3D標注的類是vtkFollower
扫皱,這是個actor
,能確保被渲染的actor始終正對著camera捷绑,所以不管圖像怎么旋轉(zhuǎn)位移韩脑,字符始終能夠看清。
這張圖是一個坐標系的圖示粹污,不管坐標系怎么旋轉(zhuǎn)移動段多,指示原點的"Origin"標識始終正對著鏡頭
4.12 Special Plotting Classes
VTK提供了幾種復雜的繪圖操作:
- Scalar Bar
-
vtkScalarBar
用來創(chuàng)建顏色和數(shù)值之間的對應關(guān)系,scalar bar有三個組成部分:一個長方形的色彩帶壮吩;指示數(shù)值的label进苍;ScalarBar的名字。 - Scalar Bar的使用有以下幾點:
- 指向一個
vtkLookupTable
鸭叙,它定義了顏色和數(shù)值之間的對應關(guān)系觉啊。 - 設(shè)定Scalar Bar的位置和朝向(水平/垂直)
- 可選擇Scalar Bar的顏色、標簽的數(shù)字沈贝、題目的文字等杠人。
- 指向一個