矿山三维场景漫游系统的设计与实现

2022-05-150

视景仿真是虚拟现实技术的最重要表现形式。

虚拟现实(VirtualReality),简称VR技术是以仿真的方式给用户创造一个实时反映实体变化与相互作用的三维界面,使用户可直接参与并探索仿真对象在所处环境中的作用与变化,它具有多媒体信息感知性、沉浸性、交互性和自主性等特点。VR己在许多领域得到研究与应用,如虚拟战场、城市仿真等。在矿业中应用称为虚拟矿山(VirtualMine)。矿山三维场景的建立是虚拟矿山的基础,包括地面工业广场和井下巷道、设备和地质体等。其特点是空间关系复杂,涉及到大量的数据采集和烦琐细致的三维建模,工作量及难度较大。如果从基本的代码行(如C/C++与OpenGL)开始开发一个全新的虚拟现实应用系统,工作量非常大,并且软件的可靠性也得不到保证,因此有必要在某种框架或平台的基础上开发。

本文结合在平顶山矿区承担的科研项目,以某煤矿为例,以三维建模软件CreatorPro为工具,建立了矿山三维场景,并以仿真软件VegaPrime为基础,结合组件GIS*MapObjects,开发了矿山三维场景漫游系统。

2工具软件简介业界**的三维建模软件工具集,用于产生高优化,高精度的实时三维模型。广泛应用于视景仿真、虚拟城市、交互式游戏等。它在满足实时性的前提下生成面向仿真的,逼真性好的大面积场景。与其他三维建模软件不同,它首先是一个三维数据库系统,然后才是一个实时交互三维建模软件。其数据格式为OpenFlight,在实时三维领域成为最流行的三维分层的数据结构,它采用层次结构对物体进行描述。

使用几何层次结构和属性来描述三维物体。由它建立的场景是一个或多个树型数据库,这是整个三维场景漫游系统的基础。每个OpenFlight文件代表一个数据库,它高效地描述了模型或地形的几何体、层次结构及图形属性。每个数据库由根节点(db)、子节点(group、object)、叶子节点(face)组成。

TerrainPro是CreatorPro的地形模块,可以快速创建大面积地形、地物数据库,它用Project统一管理各种资源(地形数据、纹理、地物数据等)。它可以使地形精度接近真实世界,并带有高逼真度三维文化特征及纹理特征。

VegaPrime是专门应用于实时视景仿真、虚拟现实等领域的渲染软件环境,它用来对战场仿真、娱乐、城市仿真、训练模拟器和计算可视化等领域的视景数据库,实现环境效果等的加入和交互控制。VegaPrime构建在VSG(VegaSceneGraph)框架之上,是VSG的扩展API,包括了一个图形用户界面LynxPrime和一系列可调用的、用C++实现的库文件、头文件。VegaPrime的大地理管理模块(LADBM)支持分块索引技术(场景分割),可以有效提高大场景的漫游效果。另外支持多分辨率纹理贴图(mipmap纹理)技术。

MapObjects是ESRI公司开发的具有GIS基本功能的组件,由一个叫Map控件的ActiveX控件和一系列可编程的ActiveX对象组成。支持ARC/IN~FO层(Coverage),支持ESRI的Shape文件格式、SDE(空间数据库引擎)图层(Layer)以及大量栅格图象格式,支持通过微软ODBC规范进行外部数据库访问,另外还具有多图层综合显示与图幅变化,使用数理方法进行特征表示,文字注记和放置,用一个事件跟踪层来动态显示实时数据,用标准SQL表达功能。

3三维场景的创建方法三维场景描述了真实世界中的地形地貌、地表特征、文化特征及人工模型(本文将文化特征和人工模型称之为地物)。基于目前技术水平和己掌握的软硬件工具,拟选择工业广场和井下巷道系统作为研究重点。工业广场和井下巷道模型均按照实际大地坐标建模,最终可以很容易将其组合在一起。

3.1工业广场场景的建立流程工业广场仿真类似一般的城市仿真。建模过程包括地形的建立、地形纹理映射、地物建模和场景合成等。可以选择在生成地形场景的时候,将地物模型通过模型替代的方法,和地形一起形成大场景,也可以建立好地形以后,在CreatorPro环境下,手工加入,也可以模型驱动漫游的时候动态加入,以达到某种特殊效果。整个过程可以用表示:工业广场场景的建立流程3.1.1数据准备这个阶段工作量是比较大的,要采集地形数据、纹理数据和地物数据。地形原始数据可以来源于地形图等高线、离散的高程点及其他具有高程的陡坎线、湖泊平面多边形等,也可以通过直接处理航摄影像、机载激光扫描仪扫描的数据或者SAR/INSAR等卫星遥感图像来获得。对一般地物的纹理,主要通过数码相机采集。对于地理纹理,一般来源于遥感影像。地物数据主要是指建筑物、构筑物等的位置、结构数据,道路、河流、绿化树木等的平面位置和相关数据。数据处理的最终结果是将以上数据处理或者转换为CreatorPro能接受的格式,很多工作可以在GIS相关软件中完成。对于初步采集的地形数据,建立地形文件(如DEM文件),转换为Creator能够接受的格式。地形纹理的处理,可将遥感图像、航空像片处理成数字正射影像地图(DigitalOrthophotoMap)或者由地形图经扫描、图(DigitalRasterGraphic)。因为CreatorPro能接受的纹理格式为rgb或者rgba,纹理图像大小为2n,对地物纹理进行处理,一般在photoshop之类的图像处理软件里面完成。这个工作比较烦琐,要详细记录图片对应的地物。

3.1.2地物建模这部分是经典的三维建模,可以很方便地在很多软件上建立。CreatorPro是基于多边形的建模环境,多边形太少,影响模型的真实感,多边形太多势必影响漫游效果,为了加整个场景的真实感和立体感,要多用真实感比较强的纹理。

建立建筑物、构筑物等的模型,建立时包括框架的建立和纹理映射。框架的建立要求有建筑物和构筑物的结构数据,依据一定的顺序,建立模型,注意建立其层次结构,为以后的系统开发做好基础。

3.1.3地形建模CreatorPro能处理的地形数据格式为DED(DigitalElevationData),它描述了地理位置(经、掉度)和海拔高。它提供了DEDBuilder工具,可以将美国地质测量局(UnitedStatesGe-logicalSurvey,USGS)的DEM特征三角化)、CAT(ContinuousAdaptiveTerrain,连续适应性地形)。一般Polymesh算法可以创建一个、两个或四个等平面多边形组成的方形地形对象。Delaunay算法可将点数据转换为与地形完好吻合的许多三角形,可以自动给地形添加纹理。而与Polymesh和Delaunay方法相比,CAT算法没有米用将地形分片的模式,而是采用相邻LOD间的三维变形(Morphing)技术来平滑过渡层次间的切换,提供一个面向传统的地形LOD管理难题的解决方案。而TCT算法是地形文件的三角形转换,是一种有限制的Delaunay算法,与前3种算法不同,它专门与地形一起处理矢量特征数据,生成带特征的地形多边形。像道路、河流、湖泊和溪流等特征要成为地形表面上的一部分,而不是简单地放在地形表面上。

形定向、几何纠正及色彩校正后,形成数字栅格地图。蓖来确定层次数量《对于仅仅在地面上行走,视点始bookmark2为了达到平滑的漫游效果,采用多分辨率地形模型主要根据视点距地形的距离和观察的角度来确定模型的精细程度。随着距离的由远到近,地面模型的精细程度也由粗到细。相邻层次模型的多边形数一般相差50%~60%.建立地形时,根据实际需道的三模型图,这是个线框图。维线框图导终离地面比较近的三维场景系统,可以设置一个LOD层次,对于视点离地面变化比较大的三维场景系统,可以设置差不多多于3个层次。另外,为了加整个场景的真实感和立体感,进行二维纹理映射,可以在建立地形过程中或建好以后进行纹理映射。

建模过程中也要注意关键参数的选取,选择较小的容许误差,模型会更加细致,可是模型会变得很大,影响漫游效果。可根据实际需要来选择。

3.1.4模型替代模型替代,这里指将三维模型代替二维矢量数据投影到地形表面。DFD是CreatorPro二维矢量格式,可以由GIS软件中地图数据转换而来,也可以在既有地形模型上创建,然后输出为DFD.可以在地形创建窗口中创建地形数据库时同时映射,这需要创建动作和规则,定义了每个二维地物的替代模型。也可以地形创建以后,手工映射。

3.2下模型的建立流程井下模型的建立难点在井下复杂的空间关系,目前对矿藏的模拟,使用Creator还有很大的难度。本文主要实现了巷道的模拟。其过程相对简单,但是复杂烦琐。采集数据主要是巷道的断面尺寸和三维坐标,可以根据巷道的规格和导线点数据来获取。

对数据处理,可以在其他制图的软件里面先建立三维框架图,然后在CreatorPro里面完成建模。

4建模的实现选择某矿的工业广场,地面总体是平坦的,但是南边有个矸石山。地面建筑物除主井、副井、食堂、招待所、俱乐部和办公楼复杂以外,其他较为简单。

数据来源于1:1000的地形图,采集了离散高程点、部分等高线、陡坎线、房屋、道路、河流、树木、围墙等,完成了数字化工作,并输入相应属性值。建立基本地形时,在GIS软件Arclnfo里,建立T顶,转成GRID格式。最后转出DEM,但是ArcInfo转出的DEM格式,CreatorPro不能识别,可以对文件修改,本例通过其他软件作为中介,转出CreatorPro能识别的格式,由DEDBuilder工具生成DED.对于主要建筑物、构筑物模型在CreatorPro里面建立。最后完成了道路、河流等的建模。

井下模型建立,主要采集采掘工程平面图上的巷道位置和高程,辨别巷道级别。首先进行原图扫描,在AutoCAD里面配准,然后分层数字化。数字化过程中,绘制线选择三维多线段,在这个过程中,输入了点的高程。这样在AutoCAD下重建井下巷入Creator,就有了一个反映巷道位置的立体图,然后为每条线选择合适的断面,建立巷道立体模型。巷道模型图如:5漫游的设计二维图不能直观的表达客观世界,纯粹在三维场景中,又很容易产生迷失感。为此,为了达到更好的漫游效果,设计了三个窗口,即二维图窗口、三维图窗口和控制窗口。二维窗口由MapObject来实现,设计了基本的地理信息系统功能,例如放大、缩小、二维漫游、查询等。三维维窗口由VegaPrime来实现,开发了基本的三维场景控制,运动模型、环境参数设置、键盘视点控制等。控制窗口包括二维控制、三维控制相关工具和信息显示。最后实现二维窗口和三维窗口的互动,即漫游时,二维图上可以动态显示视点位置,也可以通过在二维图上选择,来更新视点位置。

VegaPrime用vpMotion定义抽象的运动模型。运动模型可以应用在observer上,也可以应用在ol-ject上。VegaPrime中定义了七种运动模型,分别为了使漫游效果更富真实感,碰撞检测是必要的。进行碰撞检测需要设置Isectormask.每个检测器都可以设置一个mask,进行检测的目标物体也可以设置一个mask.进行检测时,系统将检测器的mask和场景内所有物体的mask做与运算,结果不为0的才进行检测。VegePrime定义了抽象类vp-sector来描述检测器,并且派生出了多个具体的检测器。与地形碰撞检测用IsectorTripod,设置较简单,在LynxPrime下即可完成。在井下巷道行走用IsectorBump与巷道碰撞检测,它自中心出发,沿x、y、z正负半轴定义六条线段。

7结论和建议6漫游的实现首先在图像界面LynxPrime下,进行基本的设置,做些初始化工作,形成acf文件。然后在VC++下建立单文档应用程序,将窗口三拆分。左边窗口用于二维显示,右上窗口用于维显示,右下窗口用于控制。最后分别进行开发。

三维窗口主要是通过VC++环境下调用VegaPrimeAPI,实现更加灵活的控制。对于基于MFC的应用程序,从Cview类继承CVpMView类,在CVpMView::OnCreate()函数中,初始化vp模块,定义配置文件,配置所要用到的资源,进行帧循环。

然后在析构函数CVpMView::~CVpMView()中,结束帧循环,关闭vp模块。为了能让VegaPrime收到键盘输入,要对VegaPrime窗口设置焦点。在函数CVpMView::OnActivateView()中完成。为了保持用户界面作出响应,在CVpMView::OnTimer()函数里面完成帧的更新。另外在CVj-MView::OnSize()函数中,完成窗口的自动缩放。

对于二维窗口,建立对话框资源,对应类从CFormView派生。利用MapObjects提供的Map对象和相应类,实现基本的地理信息功能。例如缩放、二维漫游和查询等。

MapObjects可以用一个事件跟踪层来动态显示实时数据,这里用来实时显示三维窗口的视点位置。

另外,可以通过鼠标点击或者选择二维地图对象,来更新三维窗口的视点位置。运行效果见。

漫游效果图本文结合以平顶山矿区承担的科研项目某矿为例,借助建模工具CreatorPro,建立了某矿工业广场模型和井下巷道模型,借助仿真工具VegaPrime和组定程度的二维三维互动。但为了使其更加实用,有待于重点开发其三维空间操作和分析功能,进一步开发其二维和三维互动的功能,在三维场景中,内建更多的GIS功能,开发其深层次应用。

免责声明:
转载请注明原文出处。本文仅代表作者个人观点,与商来宝平台无关,请读者仅做参考,如文中涉及有违公德、触犯法律的内容,请向我们举报,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们处理。
举报
收藏 0