一:主要的知识点
1、说明
本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程------逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①模型的旋转
二:代码及注释
python
import vtkmodules.vtkRenderingOpenGL2
import vtkmodules.vtkInteractionStyle
from vtkmodules.vtkFiltersSources import vtkArrowSource
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkCommonTransforms import vtkTransform
from vtkmodules.vtkFiltersGeneral import vtkTransformPolyDataFilter
from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, \
vtkRenderer
def main():
colors = vtkNamedColors()
source = vtkArrowSource() # 原始方向(0,0,1)
transform = vtkTransform()
"""
RotateWXYZ 可自行定义所绕的轴以及绕的角度
"""
transform.RotateWXYZ(45, 0, 0, 1)
transformFilter = vtkTransformPolyDataFilter()
transformFilter.SetInputConnection(source.GetOutputPort())
transformFilter.SetTransform(transform)
transformFilter.Update() # 旋转之后与X轴的夹角呈45°
coneMapper1 = vtkPolyDataMapper()
coneMapper1.SetInputConnection(source.GetOutputPort())
actor1 = vtkActor()
actor1.SetMapper(coneMapper1)
coneMapper2 = vtkPolyDataMapper()
coneMapper2.SetInputConnection(transformFilter.GetOutputPort())
actor2 = vtkActor()
actor2.SetMapper(coneMapper2)
actor1.GetProperty().SetColor(colors.GetColor3d("LightCoral"))
actor2.GetProperty().SetColor(colors.GetColor3d("PaleTurquoise"))
render = vtkRenderer()
render.AddActor(actor1)
render.AddActor(actor2)
render.SetBackground(colors.GetColor3d("SlateGray"))
renWin = vtkRenderWindow()
renWin.AddRenderer(render)
renWin.SetSize(600, 480)
renWin.SetWindowName("RotationAroundLine")
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
iren.Initialize()
renWin.Render()
iren.Start()
if __name__ == '__main__':
main()