1. hello vtk

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()
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章