Python版本VTK官方文档教程学习(五)

Tutorial Step5:

教程描述:

这个例子将交互的概念引入了python环境(vtkrenderinteractor),即鼠标或键盘与渲染窗口中模型的交互。比如通过鼠标进行移动、旋转、缩放等操作。该示例定义了一种与默认样式(vtkInteractorStyle)不同的交互样式:vtkInteractorStyleTrackballCamera。默认风格中,按键j和t可以切换joystic(位置感应)和trackball(运动感应)风格,在joystic风格中只要鼠标按键就会发生连续的运动。在tracball风格中鼠标按键并挪动指针才会发生运动。按键c和a在相机模式和actor模式中切换,相机模式下鼠标事件会影响相机的位置和焦点,actor模式下鼠标事件影响位于鼠标指针下的actor。其余鼠标、键盘的响应在下方链接中可自行观看:​​​​​​VTK: vtkInteractorStyle Class Referenceicon-default.png?t=LBL2https://vtk.org/doc/nightly/html/classvtkInteractorStyle.html#detailsvtkInteractorStyleTrackballCamera的交互风格通过交互实现操纵场景中的相机、场景的视点。在trackball交互中,鼠标运动的幅度与鼠标绑定相关的camera运动成正比。例如,按住左键进行小幅度运动会导致相机在焦点周围的旋转发生细微的变化。对于三键鼠标,左键用于旋转,右键用于缩放,中键用于平移,ctrl+左键用于旋转,shift+右键用于快速旋转,shift+右键用于环境旋转(鼠标按键较少时,shift+左键用于平移)。还有很多交互风格可以在官网中进行了解。

step5链接如下:

https://kitware.github.io/vtk-examples/site/Python/Tutorial/Tutorial_Step5/https://kitware.github.io/vtk-examples/site/Python/Tutorial/Tutorial_Step5/ 代码:

import vtkmodules.vtkRenderingOpenGL2  
from vtkmodules.vtkCommonColor import vtkNamedColors  
from vtkmodules.vtkFiltersSources import vtkConeSource  
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera  
from vtkmodules.vtkRenderingCore import (  
	    vtkActor,  
	    vtkPolyDataMapper,  
	    vtkRenderWindow,  
	    vtkRenderWindowInteractor,  
	    vtkRenderer  
	)  
	  
	  
def main(argv):  
    colors = vtkNamedColors()  
    cone = vtkConeSource()  
    cone.SetHeight(3.0)  
    cone.SetRadius(1.0)  
    cone.SetResolution(10)    
    coneMapper = vtkPolyDataMapper()  
    coneMapper.SetInputConnection(cone.GetOutputPort())  	 	    
    coneActor = vtkActor()  
    coneActor.SetMapper(coneMapper)  
    coneActor.GetProperty().SetColor(colors.GetColor3d('Bisque'))  	  
    ren1 = vtkRenderer()  
    ren1.AddActor(coneActor)  
    ren1.SetBackground(colors.GetColor3d('MidnightBlue'))  	  
    renWin = vtkRenderWindow()  
    renWin.AddRenderer(ren1)  
    renWin.SetSize(300, 300)  
    renWin.SetWindowName('Tutorial_Step5')  	  
    #  
    # vtkRenderWindowInteractor类在vtkRenderWindow中观察events(比如键盘按键或者鼠标)这些events被译成VTK可以理解的事件调用中。然后这些VTK events的observers可以适当地进行处理
    iren = vtkRenderWindowInteractor()  
    iren.SetRenderWindow(renWin)  
    #  
    # 默认地,vtkRenderWindowInteractor实例化一个vtkInteractorStyle实例。vtkInteractorStyle将它观察到的一组events转换成与vtkRenerWindowInteractor关联的vtkRenderWindow里相机、actors和/或属性上的操作。
    # 这里我们特殊说明一个特殊的交互风格:vtkInteractorStyleTrackballCamera
    style = vtkInteractorStyleTrackballCamera()  
    iren.SetInteractorStyle(style)  	  
    #  
    # 不像之前的脚本我们执行一些操作并退出,这里我们保留一个运行的事件循环。用户可以使用鼠标和键盘在屏幕中根据当前的交互风格执行操作。当用户按下e,默认情况下vtkRenderWindowInteractor会调用一个exitevent。该调用会被捕获并退出事件循环(循环由start()触发)。
    #  
    iren.Initialize()  
    iren.Start()  
    #  
    # 最终注意:回顾observers可以观察特殊events并且采取合适的action。在渲染窗口中按下u会使vtkRenderWindowInteractor调用一个userevent。这个可以被捕获以弹出一个GUI等等。查看 Tcl Cone5.tcl 例子有关如何工作。
if __name__ == '__main__':  
    import sys    
	    main(sys.argv)  

效果: 

 

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值