Mayavi 提示

日期2015-10-29 (最后修改), 2006-06-13 (创建)

简介

以下是一些关于如何最好地使用 !MayaVi2 的一般性提示。

有效地编写 MayaVi2 脚本

以下是一些提示,展示如何以交互式和有效的方式编写 mayavi2 脚本。

拖放对象

运行 contour.py python 脚本示例,您应该得到

首先,在“视图”菜单中单击“Python”以启用 Python shell。一个 Python shell 应该出现在 !MayaVi2 窗口的底部

然后将左侧树视图中的任何对象拖放到 Python shell 上,您将获得该对象。假设您想获取 Outline 模块

现在,您可以通过两种方式使用您的对象:直接在 Python shell 中键入或使用 explore() 方法。

在 Python shell 中键入

您可以在 Python shell 窗口中创建对象的实例。

请注意,您可以在此 Python shell 中使用“单词补全”,即一个小窗口弹出,让您选择预期对象或方法的名称。

因此,您可以显示轮廓颜色的 RGB 值,例如

但是,找出对象或方法可能并不容易:您可能不知道它们是如何相互依赖的。更简单的方法是使用 explore() 方法。

使用 explore() 方法

只需键入

在 [ ]
explore(_)

在 [ ]
explore(foobar)

如果你之前已经定义过它

然后,你会看到以下窗口

考虑到最后一个例子,关于轮廓模块的颜色,你可以展开“树”,从而获得你需要的的信息

非常强大,不是吗!:-)

你也可以在python shell中工作,创建你的对象等等...

在python shell中工作

在!MayaVi2应用程序的嵌入式Python shell中,名称'mayavi'绑定到!MayaVi脚本接口,它可以用来轻松地编写mayavi脚本,如下所示

在 [ ]
e = mayavi.engine # Get the MayaVi engine.
mayavi.new_scene() # Create a new scene
# [...]
mayavi.save_visualization('foo.mv2')
mayavi.load_visualization('foo.mv2')

请注意,Mayavi引擎允许你以强大的方式编写mayavi脚本。例如

在 [ ]
e = mayavi.engine

这里'e'是正在运行的引擎实例(mayavi/engine.py),它具有与你在mayavi树视图中看到的相同的层次结构。例如

在 [ ]
e.scenes[0]             # --> first scene in mayavi.
e.scenes[0].children[0] # --> first scene's first source (vtkfile)

另一个例子,只需运行examples/contour.py并键入/剪切/粘贴以下内容以获得标量切割平面模块

在 [ ]
e = mayavi.engine
s = e.scenes[0].children[0].children[0].children[-1]
# Think scene.datafile.module_manager.last_module

可以从IPython内部使用Mayavi2并编写脚本。你必须首先使用'-wthread'命令行选项启动IPython。以下是一个例子

在 [ ]
from enthought.mayavi.app import Mayavi
m = Mayavi()
m.main()
m.script.new_scene() # m.script is the mayavi.script.Script instance
engine = m.script.engine

在上面,'m.script'与嵌入式shell上的'mayavi'实例相同。

如果你正在编写一个独立的脚本来可视化某些内容,例如examples/目录中的脚本,请使用任何示例作为模板。

保存快照

在python脚本中保存快照非常容易

在 [ ]
s = script.engine.current_scene
s.scene.save('test.jpg', size=(width,height))

你也可以保存许多其他格式的图像:!PostScript (ps),Encapsuled !PostScript (eps),PDF (pdf),Bitmap (bmp),TIFF (tiff),PNG (png),!OpenInventor (iv),Virtual Reality Markup Language (wrl, vrml),Geomview (oogl),!RenderMan RIB (rib),Wavefront (obj)。

保存快照的明显推论是保存大量快照,以便例如制作电影,而无需为每个记录的快照弹出!MayaVi2窗口。

答案很简单(仅在UN*X盒子下):使用“X虚拟帧缓冲区”。

以下几行提供了技巧。当然,你可以通过在shell、python等中编写脚本来改进它。

* 使用以下命令创建你的X虚拟帧缓冲区:'xvfb :1 -screen 0 1280x1024x24'。 它将使用显示器#1,大小为1280x1024,颜色深度为24位;

* 导出您的显示器:'export DISPLAY=:1' (sh/bash 语法) 或 'setenv DISPLAY :1' (csh/tcsh 语法)

* 像往常一样运行您的 !MayaVi2 脚本;

* 完成后,所有快照都已创建,不要忘记杀死 X 虚拟帧缓冲区并重置您的显示器到其先前值。如果没有,您将无法看到您的电影;-)

在颜色映射中启用 Alpha 透明度

将模块管理器拖动到 Python shell,您将能够通过以下方式在颜色映射中启用 Alpha 透明度

在 [ ]
dragged.scalar_lut_manager.lut.alpha_range=(0,1)

设置 MayaVi2 会话颜色

运行 !MayaVi2,转到“工具”菜单,然后选择“首选项”,然后选择“TVTK 场景”。

假设您要更改背景颜色:单击“背景颜色”标签。

在这里,您可以选择预定义的颜色,或者单击方块以设置您的 RGB 值,例如。

此外,如果您要设置前景颜色,它将应用于所有模块和过滤器,即轮廓颜色、文本颜色、标签轴等等。

您的首选项将保存在 !MayaVi2 配置文件中,因此每次运行 !MayaVi2 会话时,您都会获得这些颜色。

= 使用 TVTK 编写 VTK 数据文件 =

敬请期待...

章节作者:Unknown[6]、GaelVaroquaux、FredericPetit、Pauli Virtanen

附件