论文部分内容阅读
摘要:空间地形数据三维可视化进程的关键在于适合3D模型的构建。本文主要讨论虚拟现实建模语言(VRML)在空间地形数据三维可视化进程中的应用,该语言可以基于Web使客户端/服务器系统远程访问海量地形数据实现交互式3D地形渲染可视化,是一种3D虚拟世界描述的Web标准,同时也阐述了VRML在构建、访问和可视化3D地形模型中的优缺点。
关键词:VRML;3D模型;地形渲染;交互式
1引言
许多应用程序,例如3D地理信息系统(GIS)、天气模拟和飞行模拟等,其演示目标是提供使用客户端/服务器系统远程访问海量地形数据的实时交互式渲染[1]。对于感兴趣区域,可能需要调用非常大存储区域的数据集,但用户可能仅需要完整地形模型的相对较小区域。
为了能够实现远程存储的3D地形模型的实时交互式可视化,可以使用专用渲染服务器和定制客户端程序的方法解决[2]。这样,渲染由服务器程序完成,结果通过网络发送,以便在客户端的用户界面中及时展示。但是,由于服务器需要大量的计算资源,因此只能同时服务于少量独立客户端,因此对于许多应用不可行。
还有另外一种方法可以以专有的3D图形格式创建数据,用于通用3D可视化程序,例如SGI的OpenInventor或者3D GIS程序[3],可以从标准FTP或Web服务器下载数据,然后将其加载到可视化程序中。在这种情况下,渲染在客户端完成,相比服务器端渲染具有更强的可伸缩性。
本文主要探讨后一种方法,但没有使用专有的3D可视化程序和数据格式,而是研究虚拟现实建模语言(VRML)的使用。
2基础知识
2.1 地形模型
通常,三维地形模型由两个基本部分组成:数字高程模型(DEM)和卫星图像、航空照片等地理空间数据。DEM是特定网格包含的高度值矩阵。通过连接DEM中的点,可以生成基于多边形的地形3D。然后在DEM上覆盖2D图像以创建由纹理映射多边形组成的3D地形模型,其中“纹理”指的是对多边形着色的一组像素[4]。
纹理映射的替代方法是将颜色与多边形的每个顶点相关联,然后使用插值算法为多边形着色。但是,纹理映射需要减少要渲染多边形数量的同时保持表面图像的分辨率。为了减少足够的计算资源以实现实时渲染,应该最小化多边形的数量以支持多分辨率地形模型表示,具体为允许渲染引擎使用较低分辨率模型。此外,对于通过广域网访问的地形模型,客户端可以根据实际可用带宽选择不同分辨率。
本文采用数据集选用西洞庭湖附近一个30米分辨率的Landsat卫星图像和一个100米分辨率的DEM,图像数据约为3000x3000像素。由于地形模型覆盖较大区域,因此通常通过平铺将其分块,每个小块足够小以便进行可视化处理。论文主要设计了一种基于小波算法的网格优化算法,以最小化模拟地形的多边形数量。该算法通过对高度值指定误差容限以生成不规则网格,然后使用Delauney三角网创建一组多边形。由此产生的不规则网格DEM更加稀疏,地形更加平坦或者平滑,并且在海拔变化快的区域更加密集。即使在最低分辨率下,渲染图像仍然能够显示地形的主要特征。
2.2 VRML
VRML是一种用于编码3D虚拟世界的Web标准,因此可以使用标准Web服务器和浏览器远程访问,并使用查看器在客户端上以交互方式进行可视化。VRML 1.0标准提供的功能主要包括:(1)基本形状,使用IndexedFaceSet节点对多边形对象进行编码;(2)几何,LOD允許在对象的描述中使用不同级别的细节,其中包含多边形对象的顶点集;(3)材料,可以为每个顶点或多边形分配颜色,可以将纹理粘贴到多边形;(4)网络访问功能,能够访问其他Web资源,可以将超链接嵌入到网页中。
VRML 1.0是一种实现3D模型的便捷方式,但有以下几个缺点:(1)只允许静态定义,与Web趋势不相容,相比之下,Java和Javascript的成功表明了这一点,它们允许更灵活和动态的Web界面。此外,世界的静态定义意味着客户必须存储和处理与整个世界大小成比例的信息,则迫使作者根据客户端机器的有限内存和CPU频率,对使用者可以遍历的VRML世界大小设置上限。另一个问题是VRML对象浪费大量带宽。VRML 1.0专注于3D图形对象的规范,很少考虑最小化下载的时间问题。这两种现象在表示大规模地形模型时尤其突出。
3基于VRML技术的地形3D可视化
实际使用中,VRML浏览器并未针对地形渲染进行优化,因此必须向浏览器提供提示信息,以便在何时何地可以节省渲染工作。精心构建的VRML文件可以增强浏览器的渲染性能,可以通过提供多个细节级别以及何时显示详细程度的说明实现。通过设计的网格优化算法,可以较快生成多分辨率地形模型。因此,基于观看参数,浏览器可以通过最小化地形模型渲染中多边形的数量来提供更好帧速率的高质量图像。那么,地形模型必须首先拆分为可管理的切片,可以将其视为独立的VRML世界。
地形模型的VRML文件具有许多内置VRML功能,例如纹理贴图和细节层次(LOD)。LOD节点用于通过在每个VRML世界中提供额外的内部平铺来进一步细分地形模型。此平铺的目的是允许为每个LOD节点提供不同分辨率的多个数据集就,这样VRML浏览器就可以用适当的分辨率渲染每个LOD节点,使得远离用户的节点以较低的分辨率渲染,从而减少渲染工作量。使用LOD节点的另外一个优点是启动浏览器时只需下载远端LOD节点的较低分辨率数据,从而大大减少启动时间。当用户在地形上移动时,可以根据需要下载更高分辨率的数据。
每个LOD节点包含四个子节点,用于四种不同的地形数据集分辨率。使用用户指定的误差容限A创建第一组,则分别以2A、4A和8A的容错级别计算第二,第三和第四数据集。然后,使用WWWInline节点指定每个LOD节点中四个分辨率级别中的每一个数据,每个节点具有用于特定区域和分辨率的自包含VRML文件的URL。由于使用CGI程序动态生成VRML文件,因此URL不指向VRML文件,而指向CGI程序以检索相应的VRML地形数据,以及有关边界大小和位置的信息,浏览器决定WWWInline节点是否可见。 当VRML浏览器激活其中一个WWWInline节点时,Web服务器会生成一个CGI程序,以动态生成指定的VRML地形数据,地形数据作为小波系数存储在数据库中。CGI程序通过SQL命令访问该数据,并选择小波系数的子集将其传递到重建算法以创建稀疏DEM,生成的多边形信息在VRML文件中进行重新编码,然后生成文件被发送到客户端进行演示。
4实施问题和结果
VRML浏览器旨在为用户提供交互式3D环境。如果浏览器在高端图形工作站上执行,可以始终在屏幕上维护详细且完全纹理映射的地形模型。但是,为了使浏览器在具有较低功能的客户端上渲染复杂场景时保持其交互响应和合理的帧速,则必须使用计算要求较低的技术来渲染图像。例如,为了避免CPU密集型纹理映射,当用户在地形上移动时,浏览器可以通过使用Gouraud着色或者线框表示来渲染图像。当用户停止移动时,将在屏幕上呈现完全纹理映射的模型。但是,除了纹理贴图外,大部分VRML浏览器只能进行单色而不是彩色Gouraud着色,除非在VRML文件中提供彩色顶点,此种现象大约增加VRML文件大小的25%。
另一个问题是虽然VRML规范建议使用GNU压缩工具gzip来减少数据大小,但目前还没有找到一个可以接受来自WWWInline节点内CGI程序的压缩VRML数据浏览器,这是使用CGI程序即时创建VRML数据的一个主要缺点,因为它会导致演示过程中的长时间延迟。如果所有VRML地形模型数据在客户端本地可用,并且客户端具有良好的图形功能,则交互式探索的渲染性能和帧速使用VRML浏览器的地形模型效果良好,其中的关键问题是:当必须通过网络下载数据时是否具有较高的延迟和低带宽。
在VRML 2.0版本中,使用Java脚本可以动态下载VRML世界,从而消除VRML 1.0的静态限制,以适应客户端可用的带宽和计算能力。为了减少VRML世界中多边形的数量,可以只使用用户可见区域的图块以及一些其他用于缓冲的图块,这样可以移除超出一定距离的分块来模拟地球曲率的影响。为了隐藏访问新分块所需的延迟,可以使用缓冲区并尝试预测用户的动作。缓冲区可以降低由前向和后向运动引起的场景图调整频率,使得客户端有时间在用户飞过该区域前准备新的瓦片。通过使用脚本,还可以在客户端动态调整VRML数据,可以克服匹配不同分辨率LOD节点的边缘问题,大大减少需要下载的数据量。
5结论
通过实验表明,仔细选择VRML文件的结构,包括使用倾斜技术分割大数据集、优化不规则网格和纹理映射以减少多边形的数量、LOD和WWWInline节点提供较低分辨率的数据集以及JPEG VRML文件的纹理贴图和gzip压缩的JPEG压缩,都可以使用VRML 标准创建地形模型,可用于适度的地形区域。
VRML 标准还可以为更大区域的地形模型可视化提供更好的性能。使用传感器和Java脚本可以更有效地利用可用带宽,通过更有效的数据预读取来隐藏延迟并动态加载新的地形模型,以便于动态调整数据可视化的分辨率,为用户提供具有不同渲染帧速的网络带宽。
未来工作的另一种可能性是使用Java,特别是用于3D建模的新Java3D类库,优势在于可以使开发人员更自由地控制3D世界,而使用VRML的优势在于观众已经存在。理想情况下,VRML和Java3D的结合将提供可以通过添加Java3D模块实现用户自由定制的查看器。
参考文献:
[1]王梅艳. 虚拟现实技术的历史与未来[J]. 中国现代教育装备, 2007, 1: 108-110.
[2]丁剑, 魏昕等. 基于Web的虚拟现实的研究与应用[J]. 电脑知识与技术, 2009, 5(33): 88-90.
[3]张岩. VRML技术应用于虚拟仿真场景中的研究. 黑龙江科技信息, 2014, 27: 186-187.
[4]王钢. 使用VRML技術构建虚拟现代客厅. 科技信息, 2013, 22: 233-234.
作者简介:赵迪(1980- ) ,男,博士/讲师,研究方向为GIS空间数据库、空间数据三维可视化。
通讯作者:陈哲夫,主要研究方向是地形数据可视化。
关键词:VRML;3D模型;地形渲染;交互式
1引言
许多应用程序,例如3D地理信息系统(GIS)、天气模拟和飞行模拟等,其演示目标是提供使用客户端/服务器系统远程访问海量地形数据的实时交互式渲染[1]。对于感兴趣区域,可能需要调用非常大存储区域的数据集,但用户可能仅需要完整地形模型的相对较小区域。
为了能够实现远程存储的3D地形模型的实时交互式可视化,可以使用专用渲染服务器和定制客户端程序的方法解决[2]。这样,渲染由服务器程序完成,结果通过网络发送,以便在客户端的用户界面中及时展示。但是,由于服务器需要大量的计算资源,因此只能同时服务于少量独立客户端,因此对于许多应用不可行。
还有另外一种方法可以以专有的3D图形格式创建数据,用于通用3D可视化程序,例如SGI的OpenInventor或者3D GIS程序[3],可以从标准FTP或Web服务器下载数据,然后将其加载到可视化程序中。在这种情况下,渲染在客户端完成,相比服务器端渲染具有更强的可伸缩性。
本文主要探讨后一种方法,但没有使用专有的3D可视化程序和数据格式,而是研究虚拟现实建模语言(VRML)的使用。
2基础知识
2.1 地形模型
通常,三维地形模型由两个基本部分组成:数字高程模型(DEM)和卫星图像、航空照片等地理空间数据。DEM是特定网格包含的高度值矩阵。通过连接DEM中的点,可以生成基于多边形的地形3D。然后在DEM上覆盖2D图像以创建由纹理映射多边形组成的3D地形模型,其中“纹理”指的是对多边形着色的一组像素[4]。
纹理映射的替代方法是将颜色与多边形的每个顶点相关联,然后使用插值算法为多边形着色。但是,纹理映射需要减少要渲染多边形数量的同时保持表面图像的分辨率。为了减少足够的计算资源以实现实时渲染,应该最小化多边形的数量以支持多分辨率地形模型表示,具体为允许渲染引擎使用较低分辨率模型。此外,对于通过广域网访问的地形模型,客户端可以根据实际可用带宽选择不同分辨率。
本文采用数据集选用西洞庭湖附近一个30米分辨率的Landsat卫星图像和一个100米分辨率的DEM,图像数据约为3000x3000像素。由于地形模型覆盖较大区域,因此通常通过平铺将其分块,每个小块足够小以便进行可视化处理。论文主要设计了一种基于小波算法的网格优化算法,以最小化模拟地形的多边形数量。该算法通过对高度值指定误差容限以生成不规则网格,然后使用Delauney三角网创建一组多边形。由此产生的不规则网格DEM更加稀疏,地形更加平坦或者平滑,并且在海拔变化快的区域更加密集。即使在最低分辨率下,渲染图像仍然能够显示地形的主要特征。
2.2 VRML
VRML是一种用于编码3D虚拟世界的Web标准,因此可以使用标准Web服务器和浏览器远程访问,并使用查看器在客户端上以交互方式进行可视化。VRML 1.0标准提供的功能主要包括:(1)基本形状,使用IndexedFaceSet节点对多边形对象进行编码;(2)几何,LOD允許在对象的描述中使用不同级别的细节,其中包含多边形对象的顶点集;(3)材料,可以为每个顶点或多边形分配颜色,可以将纹理粘贴到多边形;(4)网络访问功能,能够访问其他Web资源,可以将超链接嵌入到网页中。
VRML 1.0是一种实现3D模型的便捷方式,但有以下几个缺点:(1)只允许静态定义,与Web趋势不相容,相比之下,Java和Javascript的成功表明了这一点,它们允许更灵活和动态的Web界面。此外,世界的静态定义意味着客户必须存储和处理与整个世界大小成比例的信息,则迫使作者根据客户端机器的有限内存和CPU频率,对使用者可以遍历的VRML世界大小设置上限。另一个问题是VRML对象浪费大量带宽。VRML 1.0专注于3D图形对象的规范,很少考虑最小化下载的时间问题。这两种现象在表示大规模地形模型时尤其突出。
3基于VRML技术的地形3D可视化
实际使用中,VRML浏览器并未针对地形渲染进行优化,因此必须向浏览器提供提示信息,以便在何时何地可以节省渲染工作。精心构建的VRML文件可以增强浏览器的渲染性能,可以通过提供多个细节级别以及何时显示详细程度的说明实现。通过设计的网格优化算法,可以较快生成多分辨率地形模型。因此,基于观看参数,浏览器可以通过最小化地形模型渲染中多边形的数量来提供更好帧速率的高质量图像。那么,地形模型必须首先拆分为可管理的切片,可以将其视为独立的VRML世界。
地形模型的VRML文件具有许多内置VRML功能,例如纹理贴图和细节层次(LOD)。LOD节点用于通过在每个VRML世界中提供额外的内部平铺来进一步细分地形模型。此平铺的目的是允许为每个LOD节点提供不同分辨率的多个数据集就,这样VRML浏览器就可以用适当的分辨率渲染每个LOD节点,使得远离用户的节点以较低的分辨率渲染,从而减少渲染工作量。使用LOD节点的另外一个优点是启动浏览器时只需下载远端LOD节点的较低分辨率数据,从而大大减少启动时间。当用户在地形上移动时,可以根据需要下载更高分辨率的数据。
每个LOD节点包含四个子节点,用于四种不同的地形数据集分辨率。使用用户指定的误差容限A创建第一组,则分别以2A、4A和8A的容错级别计算第二,第三和第四数据集。然后,使用WWWInline节点指定每个LOD节点中四个分辨率级别中的每一个数据,每个节点具有用于特定区域和分辨率的自包含VRML文件的URL。由于使用CGI程序动态生成VRML文件,因此URL不指向VRML文件,而指向CGI程序以检索相应的VRML地形数据,以及有关边界大小和位置的信息,浏览器决定WWWInline节点是否可见。 当VRML浏览器激活其中一个WWWInline节点时,Web服务器会生成一个CGI程序,以动态生成指定的VRML地形数据,地形数据作为小波系数存储在数据库中。CGI程序通过SQL命令访问该数据,并选择小波系数的子集将其传递到重建算法以创建稀疏DEM,生成的多边形信息在VRML文件中进行重新编码,然后生成文件被发送到客户端进行演示。
4实施问题和结果
VRML浏览器旨在为用户提供交互式3D环境。如果浏览器在高端图形工作站上执行,可以始终在屏幕上维护详细且完全纹理映射的地形模型。但是,为了使浏览器在具有较低功能的客户端上渲染复杂场景时保持其交互响应和合理的帧速,则必须使用计算要求较低的技术来渲染图像。例如,为了避免CPU密集型纹理映射,当用户在地形上移动时,浏览器可以通过使用Gouraud着色或者线框表示来渲染图像。当用户停止移动时,将在屏幕上呈现完全纹理映射的模型。但是,除了纹理贴图外,大部分VRML浏览器只能进行单色而不是彩色Gouraud着色,除非在VRML文件中提供彩色顶点,此种现象大约增加VRML文件大小的25%。
另一个问题是虽然VRML规范建议使用GNU压缩工具gzip来减少数据大小,但目前还没有找到一个可以接受来自WWWInline节点内CGI程序的压缩VRML数据浏览器,这是使用CGI程序即时创建VRML数据的一个主要缺点,因为它会导致演示过程中的长时间延迟。如果所有VRML地形模型数据在客户端本地可用,并且客户端具有良好的图形功能,则交互式探索的渲染性能和帧速使用VRML浏览器的地形模型效果良好,其中的关键问题是:当必须通过网络下载数据时是否具有较高的延迟和低带宽。
在VRML 2.0版本中,使用Java脚本可以动态下载VRML世界,从而消除VRML 1.0的静态限制,以适应客户端可用的带宽和计算能力。为了减少VRML世界中多边形的数量,可以只使用用户可见区域的图块以及一些其他用于缓冲的图块,这样可以移除超出一定距离的分块来模拟地球曲率的影响。为了隐藏访问新分块所需的延迟,可以使用缓冲区并尝试预测用户的动作。缓冲区可以降低由前向和后向运动引起的场景图调整频率,使得客户端有时间在用户飞过该区域前准备新的瓦片。通过使用脚本,还可以在客户端动态调整VRML数据,可以克服匹配不同分辨率LOD节点的边缘问题,大大减少需要下载的数据量。
5结论
通过实验表明,仔细选择VRML文件的结构,包括使用倾斜技术分割大数据集、优化不规则网格和纹理映射以减少多边形的数量、LOD和WWWInline节点提供较低分辨率的数据集以及JPEG VRML文件的纹理贴图和gzip压缩的JPEG压缩,都可以使用VRML 标准创建地形模型,可用于适度的地形区域。
VRML 标准还可以为更大区域的地形模型可视化提供更好的性能。使用传感器和Java脚本可以更有效地利用可用带宽,通过更有效的数据预读取来隐藏延迟并动态加载新的地形模型,以便于动态调整数据可视化的分辨率,为用户提供具有不同渲染帧速的网络带宽。
未来工作的另一种可能性是使用Java,特别是用于3D建模的新Java3D类库,优势在于可以使开发人员更自由地控制3D世界,而使用VRML的优势在于观众已经存在。理想情况下,VRML和Java3D的结合将提供可以通过添加Java3D模块实现用户自由定制的查看器。
参考文献:
[1]王梅艳. 虚拟现实技术的历史与未来[J]. 中国现代教育装备, 2007, 1: 108-110.
[2]丁剑, 魏昕等. 基于Web的虚拟现实的研究与应用[J]. 电脑知识与技术, 2009, 5(33): 88-90.
[3]张岩. VRML技术应用于虚拟仿真场景中的研究. 黑龙江科技信息, 2014, 27: 186-187.
[4]王钢. 使用VRML技術构建虚拟现代客厅. 科技信息, 2013, 22: 233-234.
作者简介:赵迪(1980- ) ,男,博士/讲师,研究方向为GIS空间数据库、空间数据三维可视化。
通讯作者:陈哲夫,主要研究方向是地形数据可视化。