import vtk
def main():
colors = vtk.vtkNamedColors()
# 1. 設置背景顏色
bkg = map(lambda x: x / 255.0, [26, 51, 102, 255])
colors.SetColor("BkgColor", *bkg)
# 2. 創建一個帶有八個圓周面的多邊形圓柱體模型
cylinder = vtk.vtkCylinderSource()
cylinder.SetResolution(8)
# 3. mapper 負責將幾何圖像推入圖形庫,如果定義了標量或其他屬性,它可以進行顏色映射
cylinderMapper = vtk.vtkPolyDataMapper()
cylinderMapper.SetInputConnection(cylinder.GetOutputPort())
# 4. actor 是一種分組機制,除幾何mapper之外,還有屬性,變換矩陣,紋理映射
# 以下設置顏色,並設置旋轉-22.5度
cylinderActor = vtk.vtkActor()
cylinderActor.SetMapper(cylinderMapper)
cylinderActor.GetProperty().SetColor(colors.GetColor3d("Tomato"))
cylinderActor.RotateX(30.0)
cylinderActor.RotateY(-45.0)
# 5. 創建圖形結構。渲染器渲染到渲染窗口中,渲染窗口交互器捕獲鼠標事件,並根據事件的
# 性質執行是適當的camera 或者 actor 操作
ren = vtk.vtkRenderer() # 5.1 創建渲染器
renWin = vtk.vtkRenderWindow() # 5.2 創建渲染器窗口
renWin.AddRenderer(ren) # 5.3 渲染器窗口設置渲染器
iren = vtk.vtkRenderWindowInteractor() # 5.4 創建渲染器窗口交互器
iren.SetRenderWindow(renWin) # 5.5 渲染器窗口交互器設置渲染器窗口
# 6. 添加actors至渲染器,並設置背景和大小
ren.AddActor(cylinderActor) # 6.1 渲染器添加actor
ren.SetBackground(colors.GetColor3d("BkgColor")) # 6.2 渲染器設置背景顏色
renWin.SetSize(300, 300) # 6.3 渲染器窗口設置大小
renWin.SetWindowName('Cylinder') # 6.4 渲染器窗口設置窗口名稱
# 7.渲染器窗口交互器初始化,必須在事件循環之前調用它
iren.Initialize()
# 8. 渲染器通過訪問cammera() 並調用方法Zoom()方法進行放大操作
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)
renWin.Render()
# 9. 啓動事件循環
iren.Start()
if __name__=='__main__':
main()
1. hello vtk
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.