My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

可视化富数据集(rich dataset): 例子数据 ``fire_ug.vtu`` -------------------------------------------------------

类似 ``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. 此数据也包括向量。标量数据有 `u`\ ,\ `v`\ 和 `w`\ ,但没有速度的大小。假设我们希望查看速度大小的 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. 有几个向量模块:\ `VectorCutPlane`\ ,\ `Vectors`\ ,\ `WarpVectorCutPlane`\ 和\ `Streamlines`\ 。如果查看流线(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 进行可视化是很简单的。下面是此脚本生成的图形。

.. image:: images/streamline.jpg
:alt: ``fire_ug.vtu`` 数据集的可视化例子


Change log

r14 by esnmlt on Jun 27, 2009   Diff
Finished
mayavi/example_using_with_scipy.rst,
mayavi/example_fire.rst
Go to: 
Project members, sign in to write a code review

Older revisions

r13 by esnmlt on Apr 21, 2009   Diff
finished
mayavi/example_using_with_scipy.rst
mayavi/example_heart.rst
mayavi/example_fire.rst
r4 by esnmlt on Feb 10, 2009   Diff
Initialize documents in English
All revisions of this file

File info

Size: 4788 bytes, 44 lines
Powered by Google Project Hosting