2009年6月27日星期六

Mayavi2 用户手册3.3——可视化富数据集(rich dataset): 例子数据 fire_ug.vtu

内容来自Mayavi2的中文文档项目。本篇文档的源文件在这里。欢迎感兴趣的朋友加入

类似 heart.vtk,例子数据集 fire_ug.vtu 也可以在目录 examples/data 中找到。此数据集是一个非结构化的网格(unstructured grid),存在一个 VTK XML 文件中,表示一个角落中有火的房间。通过模拟此火焰的流体,将一个特定时刻的结果保存在此文件中。此数据集由 Philip Rubini 博士提供 (当时 Rubini 博士在 Cranfield 大学)。同时提供了一个 VRML 文件,显示火焰被取走的房间情况。

  1. 启动 mayavi2,选择 File->Load data->Open file 来载入数据。再次在左边的树形显示中看到一个节点,但在 TVTK 场景中没有任何显示。此数据集在一个文件中包含了不同的标量和向量数据。如果选择左边的 VTK XML file... 节点,在对象编辑器中将配置读入器(reader)。在其中,可以看到此数据文件中所有标量和向量的下拉列表。任意选择其中一个。

  2. 按照前面所述,使用 Outline 模块建立数据的轮廓。建立 IsoSurface 模块以查看数据的 iso-曲面。也请试试 ScalarCutPlane 模块。

  3. 单击 Colors and legends 节点,选中 Show scalar bar,显示映射颜色的标尺(通过查找表(Look up table)将标量映射为颜色)。试试不同的默认颜色映射。

  4. 现在单击 VTK XML file ... 并选择不同的标量来查看数据如何变化。当标量改变时,图例将自动更新。

  5. 此数据也包括向量。标量数据有 uvw,但没有速度的大小。假设我们希望查看速度大小的 iso-曲面,可以使用 ExtractVectorNorm 过滤器。选择 Visualize->Filters->Extract Vector Norm 菜单可以使用此过滤器。

  6. 如果现在建立 ScalarCutPlane,可以在 ExtractVectorNorm 节点下看到 Colors and legends 节点。这个标量剖面用颜色显示此过滤器生成的速度大小。可以将 iso-曲面模块从另一个 Colors and legends 节点下拖到此 Colors and legends 节点下,使得生成的 Iso-曲面 是关于速度大小的,而不是关于所选的标量。

    注意:左边的显示树表示如下的数据流动管道, source -> filter -> modules。本质上是数据从父节点流到其下的子节点。

    现在如果你想在管道的不同分支进行可视化,例如你想查看温度数据的 iso 曲面,必须单击模块或源对象(VTK XML File ... 节点)本身,然后选择菜单项。当选择了显示树中的一项,此项目成为当前对象,其后选择的菜单项将在当前对象下建立新模块/滤波器。

  7. 可以过滤"已经过滤的数据"。选择 ExtractVectorNorm 节点使其成为当前对象。现在通过 Visualize->Filters->Threshold 建立 Threshold 滤波器。然后在对象编辑器中设置上限和下限,例如 0.5 和 3.0。如果在这里建立 VectorCutPlane 模块,并且移动此剖面,应该能看到箭头,但是只有位于上下限之间的箭头。因此可以使用这样的步骤建立很复杂的可视化管道。

  8. 有几个向量模块:VectorCutPlaneVectorsWarpVectorCutPlaneStreamlines。如果查看流线(streamline),mayavi 将产生数据集中向量的流线。为了查看初始数据集的流线,可以单击原先的 Outline 模块(或数据源),然后选择 Streamline 菜单项。可以使用3D小部件移动屏幕上不同类型的种子(seed)。这些位置的种子点(seed point)用来跟踪流线。球(Sphere)、线和平面源可以用来初始化流线种子。

  9. 选择 File->Open->VRML2 file 菜单项打开 VRML 文件``room_vis.wrl``,可以查看着火的房间。

  10. 建立起复杂的可视化管道后,想将其保存下来以便以后再查看,可以通过 File->Save Visualization 菜单项保存整个可视化。可以使用 File->Load Visualization 菜单项载入保存后的文件。此选项并不是100%鲁棒,仍在实验阶段。后续版本将改善此功能。毕竟,此功能暂时可以使用。

再次说明,此例中的可视化是使用用户界面生成的,但可以完全使用 Python 脚本完成。一个简单的脚本 examples/streamline.py 演示了几个上面的模块。用户可以研究一下此文件。可按照如下方式运行此脚本:

 $ cd examples
$ python streamline.py

或者:

 $ mayavi2 -x streamline.py

从此例可以看到,编写脚本使用 mayavi 进行可视化是很简单的。下面是此脚本生成的图形。


没有评论:

发表评论


相关文章

Widget by Hoctro