18. 3D可视化和动画

[sec:3dvis]

除了创建2D地图,GRASS也能创建3D视图和动画。为此要使用模块NVIZ,它与某些自由软件兼容,如Vis5D和Vis5D+。

18.1. 用NVIZ显示3D地图

[sec:nvizmap]

NVIZ是由模块SG3d发展而来的一个工具,用于显示3维栅格、矢量或站点,同时也能进行3D查询和创建动画。

[H]

image [abb:nviz]

在启动程序之前需要检验正在使用的GRASS的分辨率,因为它决定了NVIZ中最大可能的分辨率。大的范围会降低NVIZ的处理速度,如1000 x 1000 (w,h)。

该模块可以指定需要加载的地图来启动:

也可以用参数来启动。

lp13cm

-q & 快速启动 elevation & (可选的) 用作z值的GRASS栅格地图的名称 vector & (可选的) GRASS矢量地图的名称

在启动NVIZ之后,会打开一个图形窗口和一个控制窗口。从控制窗口中还可以启动其它的菜单窗口(如:颜色选择、背景颜色或创建动画)。

lp13cm

Auto Clear & 如果激活,在表面`surface’出现前图形窗口会被自动清除。 Clear: & 以背景色清空图形窗口。 Surface: & 以当前设置的选项显示加载的栅格表面。 Vectors: & 在表面上显示加载的矢量地图。 Sites: & 在表面上显示加载的站点地图(矢量点)。 Volumes: & 在3维空间中显示立体地图(立体表面)。 Cancel: & 终止显示。 XY position: & 代表观察者的一个点。观察者的位置可以通过鼠标点击来改变。。 Height: & 调节观察者的高度位置。 look here: & 允许用户在表面点击一个点位,该点会保持在中心位置,即使观察者的位置发生了变化。 look cancel: & 取消`look here’功能。 zexag: & 控制表面的垂直维度。x、y和z的值都设置为1.0。如果东向和北向都以米表示,而高程以英尺来表示,那么zexag值为0.305才能够显示正确的表面。由于模型的升高(zexag > 1.0),会产生失真,但可视化的输出会更具代表性。 Perspective: & 显示观察的角度。 Twist: & 显示表面的分布。 Reset: & 所有值重设为默认值。

下面的菜单设置涉及光照条件、表面、背景颜色和更多的内容。此外还能够交互地创建动画短片,或者用程序创建。NVIZ图形界面上的’help’按钮十分有用。

18.2. 显示栅格立体图层(VOXEL)

[sec:nvizvoxel]

除了栅格表面,NVIZ也可以显示立体数据,因此有面板volumes,可以在菜单’Panel’ -> ’Volumes’下找到(见图 [abb:nvizvolume])。

[H]

image1 [abb:nvizvolume]

注意:

这个功能需要在实际地图集中有合适的3D数据。GRASS模块可以使用选项将3D点数据导入为GRASS自有的3D格式。

按钮’Add’可以将不同级别的3维图层显示到表面之上。颜色、透明度、光照等可以用按钮’Isosurface Attributes’分别调整。

基本上控制’多边形分辨率’是很有用的。高分辨率(<3)会在较旧的电脑上导致更长的计算时间,因此应该避免这种情况。

[H]

image2 [abb:nvizvolume2]

本例中的数据集由提供,并且可以在(见)的站点上找到现成的GRASS数据。

18.3. 创建动画

[sec:nvizanim]

除了简单的可视化,NVIZ还可以用来创建和显示动画。在分析一个时期的数据时,这显得十分合理。NVIZ可以通过图形用户界面或专业的基于脚本的界面来创建’简单’(快速)的动画。现在我们要介绍后者。

[H]

image3 [abb:nvizanim]

创建动画的控制窗口可以在菜单”Panel” -> “Animation”中找到(见图 [abb:nvizanim])。首先要指定用于动画的影像的总数。为了得到一个还算流畅的动画,最少需要100幅影像。

现在,定义动画的起始位置。单击按钮’Add’将第一个位置保存下来。然后在时间线’Key Frames’上选择一个新位置,在控制窗口中的地图会显示到一个新位置(见图 [abb:nviz])。第二个位置也用按钮’Add’保存下来。重复此过程直到时间线’满’为止。如果所有设置都已定义和测试,那么可以用按钮’Run and Save’保存结果。存储在单独文件夹中的影像可以用外部程序合并为GIF动画或mpeg电影。