陈璐
(长江大学 地球科学学院,湖北 荆州434000)
Global Mapper 是一个绘图软件,主要功能是浏览、合成、输入、输出最常见的扫描位图、轮廓线,矢量数据集,还可以编辑、转换、打印所有类型的地图图形文件,也可以更改数据集的投影方法以适应不同人员项目的不同坐标系。
SketchUp 是一个功能强大且易于使用的3D 草图设计工具。快速构建3D 地形模型具有明显的优势。SketchUp 得到了设计人员的认可和要求:其简化的命令,易用性和快速建模可以匹配常见的工作模式。设计师在设计了该项目并对其进行了概述之后,可以使用SketchUp 快速实施自己的设计理念并快速创建创意解决方案。
Unity3D 引擎已经超越了全球原有的UDK,CryTek 和其他游戏引擎。它支持所有与3D 游戏开发、AR,Unity3D 是世界各种游戏公司的开发人员都热爱使用的一款开发工具。此外Unity3D 开发工具的特点不仅在于其卓越的性能,还在于其卓越的开发效率。同时,它具有世界上其他开发工具无法提供的性价比优势。
首先通过SketchUp 中的等高线根据CAD 中等高线的高度值推拉到相应的高度,选中一根等高线使用移动工具进行等高线Z 轴度量的设置,可使用移动工具快捷键M 对等高线进行X、Y、Z 轴的推拉。选中等高线使用快捷键M以后我们可以发现鼠标发生了了标志的变化,此时我们将等高线顺着蓝轴Z 轴进行移动,可根据海平面的高低决定向Z 轴的正方向还是负方向进行移动。
图1 三维地形图
为了还原真实的地形高低,我们根据CAD 中提供的等高线确切数值进行直接设置。
使用快捷键Ctrl+A 快速选中所有等高线使用沙盒工具中的根据等高线创建即可自动生成地形,生成的地形如图1。
我们将下载好的卫星图以所有支持的图像类型为文件类型选择用作图像导入SketchUp。在进行纹理贴图时我们首先要右键点击导入的图片在阴影功能中选择投影,其次再打开模型,打开材质管理器,选择样本原料吸管直接在图片上吸取,将吸取的材质赋予所要的物体就完成了地形的纹理贴图。
图2 山体纹理贴图顶视
细节层次(level of detail,简称LOD)是一种典型的三维可视化技术,根据人的视觉特征,对于不同距离的物体或不同视点的物体显示不同的细节。LOD 技术的发展大致经历了离散LOD 模型、连续LOD 模型和多分辨率模型3 个阶段[3]。
为相同场景生成具有不同详细程度的LOD 模型,并根据详细程度对该组中的LOD 模型进行分类,并通过计算机选择的序列号M(1,2,...,N)进行标识。同时,可以通过计算中心点为目标LOD 模型对应的每个子组,定义目标视点与目标之间的距离,可以获得目标的视线,为每个LOD 模型设置可见性阈值,并且通过阈值将观看距离分成不同的视线段,将这些视距段标记为D(1,2,...,N)。
图3 不同视距中LOD 模型
图4 实现效果图
正确选择细节层次模型可以加速场景的生成,而不会牺牲图形的细节并提高系统的响应速度。选择的方法大致可分为四类:
(1)基于对象的空间关系:在某些特殊情况下,观察者在场景中看不到部分几何图形。物体距离观察者的欧几里得距离越远,可以观察到的细节越少,这意味着较粗糙的细节水平被选择来指示该对象对显示器的保真度没有很大影响。因此,可以删除这些细节的绘制。
(2)基于人眼的视觉特征:随着对象尺寸的减小,人眼识别对象的能力降低,因此可以根据对象的大小选择不同的细节级别。另外,当物体远离视场中心时,人眼识别物体的能力下降。视网膜区分中间物体细节的能力很强。基于此,所显示的场景可以分为中央部分和周边部分,具有更精细的细节层次。根据眼睛的焦距,也可以为焦点区域前后的物体选择不同的细节等级。
(3)基于对象的运动特性:运动物体相对于观察者的速度决定了人观察到的清晰程度。
(4)基于帧频:确保持续稳定的帧速率以获得良好的交互式性能至关重要。当确定选择某个帧速率时,它必须保持不变并且不能随着场景的复杂度而改变。
本文采用基于人眼的视觉特性的LOD 模型的选择方式,对三维地形建立三个不同细节度的模型,采用与第三节相同的方法再建立两个相对较粗糙的模型。在Global Mapper 中我们对裁剪区域的高程地图重新进行等高线的生成。对等高距的设置在这里我们选择6m 和8m,对生成的等高线图以AutoCAD Drawing(*.DWG、*.DXF)的格式输出后导入到SketchUp 中,同样的将SketchUp 中的等高线根据CAD 中等高线底图显示的高度值推拉到相应的高度,再使用沙盒工具中的根据等高线创建工具自动生成两个不同细节度的三维地形。
在SketchUp 导出模型时要注意选择参数,在文件中的导出功能中选择三维模型选择以FBX 格式输出,再导出之前我们要修改一下FBX 导出的几个选项:
(1)选中将所有面变为三角形构成的。
(2)选中将双面都导出。
(3)选中导出纹理映射。
(4)选中切换YZ 坐标(Y 向上)。
(5)单位选择模型单位。
点击确定以后导出即可,Unity3D支持模型的直接拖入。高中低模型分别以_LOD0、_LOD1、_LOD2 结尾,数字越大,代表模型精度越低!这里名字的设置方便后续LOD组件中对模型的设置。
通过Unity3D 软件进行LOD 进行展示,如图4。
我们可以发现随着摄像机与模型的距离的增大,即人远离模型时视距的增大,模型的细节度逐渐降低,模型逐渐变小;反之随着摄像机与模型的距离的减小,即人远离模型时视距的减小,模型的细节度逐渐增加,模型逐渐变大。
经过对选择区域高程地图的剪裁并为生成不同细节度三维地形而选择不同等高距来生成等高线地形图,我们在SketchUp 中建立了高中低三个细节度的三维地形模型,最终我们在Unity 中成功实现了LOD 模型的展示。对于建立三维模型的操作过程流畅,LOD 模型在Unity 中展示效果优良。
层次细节模型在三维景观的展示中应得到开发人员的高效利用,其使虚拟现实景观的展示效率得到大幅提高,加快了三维场景的绘制速度,降低真实感的损失,让虚拟现实景观展示效果更加逼真。