使用iPython笔记本,我能够通过以下代码在地球上呈现出一个地球仪:
from mayavi import mlab
from mayavi.sources.builtin_surface import BuiltinSurface
ocean_blue = (0.4, 0.5, 1.0)
r = 6371 # km
sphere = mlab.points3d(0, 0, 0, name='Globe',
scale_mode='none', scale_factor=r * 2.0,
color=ocean_blue, resolution=50)
sphere.actor.property.specular = 0.20
sphere.actor.property.specular_power = 10
continents_src = BuiltinSurface(source='earth', name='Continents')
continents_src.data_source.on_ratio = 1 # detail level
continents_src.data_source.radius = r
continents = mlab.pipeline.surface(continents_src, color=(0, 0, 0))
但当我使用鼠标与生成的3D窗口交互时,很难保持它正面朝上,因为UI将鼠标向左或向右拖动解释为围绕窗口当前垂直轴线旋转场景(或相机?),而不是通过地球本身的轴线。
是否有任何方法可以限制用户交互代码,使左或右鼠标拖动始终围绕地球轴线旋转,无论轴线是否指向直上直下,是否通过设置一些Mayavi参数,或者通过获取一些Python代码注册为鼠标拖动的UI事件处理程序来实现?