论文部分内容阅读
虚拟仿真技术是在计算机中产生一种人为的虚拟环境,这种虚拟环境是通过计算机图形构成的三维数字模型,并经编制软件程序在计算机中生成一个以视觉感受为主,也包括听觉、触觉的综合可感知的人工环境,从而使得在视觉上产生一种沉浸于这个环境的感觉,可以直接观察、操作、触摸、检测周围环境及事物的内在变化,并能与之发生“交互”作用,使人和计算机和谐地“融为一体”,给人一种“身临其境”的体验。它能够创建与现实社会类似的环境,从而能够解决学习媒体的情景化及自然交互性的要求,在教育领域内有着极其巨大的应用前景。至于在应用前景上,该技术已经在视频游戏、军事仿真训练、GIS、模拟驾驶及数字城市规划等领域的应用起到了举足轻重的作用。具体到城市规划中的应用,我们可以从以下几个角度来了解,首先是从三维可视化看,系统通过显示不同建筑方案同周边建筑群体的相互关系,真实再现规划建筑和现状建筑的空间关系,并能适时修改高度、方向、体量、色彩等,使得规划评审专家和决策者可以从多个观察角度直观的对比多个规划设计方案,帮助规划决策者更加清楚直观地确认合理方案从而提高规划管理水平,减少决策失误和盲目性,使规划管理更合理、更科学、更透明。其次是从管理功能看,虚拟现实技术在规划不断的完善过程中,不断的与数字城市规划同步,使最新的数字城市规划内容能够及时的反应在格式化的环境中,从而加强规数字城市划的管理工作,强调规划及周边的协调。最后是从对系统扩展的方向看,虚拟现实技术应该成为城市管理中多部门的一个高效、直观和可靠的平台,与真实城市布局环境高度保持一致,具有足够的软硬件接口和功能扩展模块,逐步应用于城市交通管理、公共安全服务和灾害预防等领域。三维可视化虚拟仿真技术不是作为单一的技术存在,而是一个涉及到多方面技术的算法集合,一般意义来说通常包含以下四个技术点,首先是模型显示技术,第二是顶点数据存储技术,第三是三角形(多边形)的数量控制技术,最后是模拟现实中真实环境技术。针对在数字城市规划领域的应用,本文在底层技术架构上采用.NET与XNA类库实现。而在具体技术应用上,模型显示技术用3DMax实现,顶点数据存储与三角形数量控制采用基于四叉树及八叉树的层次细节算法(Levels of details,LOD)算法来实现,模拟真实环境采用Shader3.0、Lightmap、布告栏、天空盒、实时光影、景深、及运动模糊等技术实现。通过使用XNA与.Net类库,本文基本实现了一个可供场景漫游的三维引擎,可在装有xnafx40_redist运行环境的PC中运行。与传统的应用程序不同的是该程序需要较高的硬件配置,本文保证可在主流配置的PC中流畅运行并不低于30帧/秒。而在LOD算法中,四叉树信息被保存在一个二维数组中,而不是传统的链式结构。大部分不在视角(摄像机)内的三角形(四叉树节点)在送入渲染API之前就被切除掉,从而大大提高了渲染速度。而在其他对硬件要求较高的环节,比如模拟真实环境的Shader技术采用目前较为主流的Shader3.0版本,在保证效率的前提下尽量实现拟真效果,如果运行该程序的GPU不支持Shader3.0则可用CPU进行软模拟,只是效率会有所损失。本文的关键是LOD算法和真实环境的模拟,我使用了视点相关以及和地形本身起伏程度相关的技术来决定地形应有的细节程度。在每次渲染前,我们都动态的更新地形网格,只渲染我们需要的节点。因此地形网格是不规则的。离观察者越远,细节越少,地面越粗糙,细节越多。和其它的LOD算法一样,我们递归的分割一个节点,直到到达需要的细节程度。这种分割依赖于节点的大小,节点内地形的起伏程度,以及观察者离节点的距离。地形的起伏程度事先被计算出来以提高速度。在真实环境模拟方面,本文使用的采用的微软的HLSL语言(高级着色器语言)来实现,之所以没有使用Nvidia公司的CG语言主要是考虑到HLSL属于一种行业公用的技术标准,而CG语言更像一门工业标准,但在具体的实际应用在二者的差别不大,考虑到方便编码与调试,本文使用了Nvidia公司出品的FXComposer2.5作为Shader的开发工具。本文主要的目的是实现LOD及Shader算法,其它所以诸如顶点排序、Shader渲染及实时光照效率不高等问题依旧存在,因此在这类问题上我只是做了一些简单的尝试。同时在今后的扩展中将实现模型的动态读取、实时编辑等功能以增强软件的应用范围。