一:主要的知识点
1、说明
本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①vtkGlyph3D的使用
二:代码及注释
import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersSources import vtkConeSource, vtkSphereSource from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor from vtkmodules.vtkFiltersCore import vtkGlyph3D from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() sphere = vtkSphereSource() sphere.SetPhiResolution(7) sphere.SetThetaResolution(7) sphereMapper = vtkPolyDataMapper() sphereMapper.SetInputConnection(sphere.GetOutputPort()) sphereActor = vtkActor() sphereActor.SetMapper(sphereMapper) sphereActor2 = vtkActor() sphereActor2.SetMapper(sphereMapper) cone = vtkConeSource() cone.SetResolution(5) glyph = vtkGlyph3D() glyph.SetInputConnection(sphere.GetOutputPort()) # 这里输入点击或网格数据(要放置glyph的点) glyph.SetSourceConnection(cone.GetOutputPort()) # 用于复制的形状 """ SetVectorModeToUseNormal 使用法向量决定每个glyph的方向,而不是用点数据中的向量 """ glyph.SetVectorModeToUseNormal() """ SetScaleModeToScaleByVector glyph 的缩放比例由点的向量大小(magnitude)决定 """ glyph.SetScaleModeToScaleByVector() glyph.SetScaleFactor(0.25) # 全局控制glyph的总体大小 spikeMapper = vtkPolyDataMapper() spikeMapper.SetInputConnection(glyph.GetOutputPort()) spikeActor = vtkActor() spikeActor.SetMapper(spikeMapper) spikeActor2 = vtkActor() spikeActor2.SetMapper(spikeMapper) spikeActor.SetPosition(0, 0.7, 0) sphereActor.SetPosition(0, 0.7, 0) spikeActor2.SetPosition(0, -1.0, -10) sphereActor2.SetPosition(0, -1.0, -10) spikeActor2.SetScale(1.5, 1.5, 1.5) sphereActor2.SetScale(1.5, 1.5, 1.5) ren1 = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren1) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) ren1.AddActor(sphereActor) ren1.AddActor(spikeActor) ren1.AddActor(sphereActor2) ren1.AddActor(spikeActor2) ren1.SetBackground(colors.GetColor3d('Bkg')) renWin.SetSize(300, 300) renWin.SetWindowName('CameraBlur') # Do the first render and then zoom in a little. renWin.Render() ren1.GetActiveCamera().SetFocalPoint(0, 0, 0.0) ren1.GetActiveCamera().Zoom(1.8) ren1.GetActiveCamera().SetFocalDisk(0.05) renWin.Render() iren.Start() if __name__ == '__main__': main()