首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 专业文献>>正文
基于Unity3D平台的三维虚拟城市研究与应用
2015年10月23日    评论:    分享:
    来源:第三维度
    作者:王星捷,李春花
    单位:成都理工大学 工程技术学院

    摘要:针对三维虚拟城市系统在高逼真度、强交互性和高精度等方面的不足,提出基于 Unity3D 平台的三维虚拟城市的实现方法。 首先通过三维地形的数据采集和坐标数据统一,实现三维模型的建立和导入,纹理数据的建立和导入。 在此基础上结合三维引擎 Unity3D 平台,实现三维模型数据与二维空间数据整合、三维虚拟漫游、三维物理效应仿真等。 该系统采用了真实的数据进行实验,证明了采用该三维虚拟技术很好地满足三维虚拟城市系统的各项指标,并且实现效率高。

    0 引 言

    随着现代城市的不断拓展延伸,城市空间多层次、立体模式管理逐渐成为城市规划管理的发展趋势[1],实现城市空间信息管理模式从二维到三维的转变,三维虚拟城市技术,已经成为人们关注和研究的热点[2]。

    三维虚拟系统具有多维信息处理、表达和分析的特点,在空间信息的社会化服务中,三维虚拟城市的应用有着越来越明显的优越性和不可替代性[3]。

    文中采用了一种新的模式进行三维虚拟城市的设计,采用三维算法初步建模,Photoshop 进行贴图加工,3DMAX 进行图形的渲染,三维引擎 Unity3D 技术实现三维虚拟城市。 该方式制作过程简洁,三维引擎技术编程难度低,能高效率、高质量完成三维虚拟城市的建设。 整个建设过程包括地理信息数据采集、三维算法建模、3DMAX 后期渲染以及三维引擎技术编程[4]。

    1 三维虚拟城市实现设计

    首先,获取地理信息数据。 包括数字高程数据、建筑物类型(如草地、水域、道路等)的矢量数据、数字遥感影像图数据以及地理坐标等[5]。

    其次,使用三维建模算法,生成三维数字模型,包括不规则三角网 TIN(顾及地性线)、规则格网 DEM等[6。

    第三,进行精细处理,包括建筑物点投影变换和裁剪处理、光照模型选择、建筑物要素叠加、点坐标变换、消隐与纹理映射等[7]。

    第四,三维模型制作,使用 3DMAX 和 Photoshop工具,对粗糙模型进行加工和渲染,得到高逼真的三维模型。

    最后,三维模型的导入,将三维模型根据地理坐标依次导入到 Unity3D 中,进行虚拟技术的开发。具体系统实现设计如图 1 所示。


图 1 系统实现结构图

    2 数据采集与处理

    数据的收集与处理,主要包括基础数据准备、实地采集和后期处理。

   基础数据准备主要是收集整理乐山某区域的1: 2000 地形图和高程点,以及最新的航空影像。 通过地形图与影像图的对比和实地考察,划分区域分布图和编号图,用于指导实地数据采集和三维模型建设[8]。

    区域分布图分为基础模型、标准模型和精细模型三个级别,编号图主要是依据道路和景点的分布划分编号,作为模型和纹理命名的依据。需要对前期准备和实地采集的数据进行处理[9],如照片的整理、纹理的收集、属性的汇编,然后建立分片景区照片库、通用纹理库、属性记录表等。 例如树的采集,按照树的种类建立照片库,对照片进行处理后,按照树的种类建立通用纹理库[10]。

    地形模型建模采用高精度数字高程模型( DEM)和高分辫率数字正射影像(DOM),制作高精度地形模型[11]。 根据划定的建模范围,将 DEM 裁切出来,同时结合航空影像,通过 GIS 软件将 DEM 和 DOM 转换到统一坐标系,保证两者坐标一致,将 DEM 和 DOM 数据导入专业软件中,自动生成地形模型,将生成的地形模型转换为三维建模软件(如 3DSMAX)兼容的格式,进行纹理映射,生成高精度地形模型。 这种建模方式的主要特点是建模快速、高程精确、模型真实。

    对于细节要求高的地形实体,如植被、景观路等,主要是根据地形图等高线、高程点以及特征点线,通过三维建模软件,可采用两种方式建模。 一是以 1: 2000 地形图和航空影像作为参考,先勾勒出整个建模范围的道路,以道路作为控制,建立每个景点或者街坊,通过点的高度来表现地形的起伏;也可通过地形图,先在 CAD 勾勒出道路、建筑或人工湖、花坛等封闭的线,参考高程点,在 CAD 调节线中点的高度,然后导入 3DSMAX 中形成面,后者更方便,更准确。 主要特点是表现细腻、色彩美观协调,能够细致表现对象变化细节。

    3 三维模型建立

    模型的建立是整个虚拟系统的重要部分,因此在该过程中工作量较大,工作较繁琐。 主要实现过程:建筑物形状分析、建筑物分类和纹理贴图处理[12]。

    3. 1 建筑物形状分析

    建筑模型屋顶建模难度较大,因为屋顶的形状各有不同,都是由一些简单的几何体组成,因此可总结出该区域建筑物屋顶的大体几何体模型如图 2 所示。


图2 屋顶几何模型

    3. 2 三维模型分类

    为了便于系统模型和场景的建立,对场景和建筑物进行了分区,在建模过程中可以方便建筑物与场景地形坐标进行对应,同时也方便多场景的集成。 具体分区如图 3 所示。


图 3 三维模型分类

    3. 3 纹理贴图处理

    为了保证模型的高精度和高质量,在建模之前必须要确定各模型的材质,因此首先用相机拍摄一系列的照片来提取材质,建模过程中进行纹理贴图和实体对比[13]。 具体流程如图 4 所示。


图 4 纹理贴图处理过程

    4 实现方法

    本系统的业务逻辑处理用 C#、Javascript 技术实现,使用 Unity3D 引擎开发平台进行开发。 实现中最主要的技术是:场景漫游技术、物理效应仿真技术和场景切换技术[14]。

    4. 1 场景漫游技术

    场景漫游技术主要包括键盘控制和鼠标控制,能让用户在虚拟城市系统中前后左右任意方向行走。 同时能控制运动的速度。 内容描述如下:

      var MoveSpeed = 5;
      var RotateSpeed = 20;

      function Update (){

       if(Input. GetKey(KeyCode. W))

         {

           this. Translate(forward*deltaTime*MoveSpeed);

          }else if(Input. GetKey(KeyCode. S))

           {
             this. Translate(forward*deltaTime*-MoveSpeed);

            }else if(Input. GetKey(KeyCode. A))

           {
             this. Rotate(up*Time. deltaTime*-RotateSpeed);

            }else if(Input. GetKey(KeyCode. D))
            {
             this. Rotate(up*Time. deltaTime*RotateSpeed);
           }
       }

    该段代码实现的功能就是按键盘上面的 W、S、A、D 键 能 实 现 前 后 左 右 的 移 动。 先 定 义 两 个 变 量MoveSpeed(移动速度)和 RotateSpeed(旋转速度),接下来进入函数入口 Update,如果按 W 键时程序就回运行 forward*deltaTime*MoveSpeed;也就是摄像机向前移动 MoveSpeed,因为 MoveSpeed 的初始值为 5,所以移动的速度为 5,以此类推,当按下 S 键的时候,程序运行 forward*deltaTime*-MoveSpeed,这时运动的方向为一个负值所以表现出来的就是往后退。 速度也为5;当按下 A 键时程 序运行 up * deltaTime * - RotateSpeed 此时摄像机会往左边旋转,其旋转速度为20;当按下 D 键时程序运行 up * deltaTime * RotateSpeed 此时摄像机会往右边旋转,其旋转速度为20。

    4. 2 物理效应仿真技术

    本系统中物理效应仿真技术主要是实现动画场景的仿真,动画仿真技术包括水池波浪仿真、重力仿真等。 内容描述如下(对水池波浪仿真的描述):

        Vector4 waveSpeed = mat. GetVector( "WaveSpeed" );

        float waveScale = mat. GetFloat( " _WaveScale" );

        float t = Time. time / 20. 0f;

        Vector4 offset4 = waveSpeed * (t * waveScale);

        Vector4 Clamp =new Vector4(Mathf. Repeat(offset4. x,1. 0f), Mathf. Repeat( offset4. y,1. 0f), Mathf. Repeat( offset4. z,1. 0f),Mathf. Repeat(offset4. w,1. 0f));

        mat. SetVector( " _WaveOffset" , offsetClamped );

        Vector3 scale = new Vector3( 1. 0f/ waveScale, 1. 0f/ waveScale, 1 );

        Matrix4x4 Matrix = Matrix4x4. TRS ( new Vector3 ( Clamp. x,Clamped. y,0), Quaternion. identity, scale );

        mat. SetMatrix( " _WaveMatrix" , scrollMatrix );

        Matrix = Matrix4x4. TRS ( new Vector3 ( Clamp. z, Clamp. w,0), Quaternion. identity, scale * 0. 45f );

        mat. SetMatrix( " _WaveMatrix2" , scrollMatrix );

    该代码调用了 Unity3D 引擎中的一些动态函数功能进行实现,Vector3、 Vector4、Matrix4x4 为 Unity3D 中提供的一些类型,用于实现实体效果。 设置水波的移动速度随着时间的变化随机变换公式 float t = Time.time / 20. 0f,通过多次实验,设置成 20,水面产生流动和波浪效果使得更生动真实。

    4. 3 场景切换技术

    虚拟现实技术的主要目标之一是允许用户以尽可能自然的方式与虚拟世界物体直接交互。 若要实现自然、精确的人机交互,就必须解决碰撞等问题,相机加入碰撞能更好地解决模型的穿插问题。 本系统中采用了相机切换技术实现了多个不同场景间的切换。

    内容描述如下:

     var guiskin : GUISkin; / / 定义 GUI

     var cam1 : Camera; / / 定义相机

     var cam2 : Camera;

     function OnGUI() { / / 调用函数 GUI

       GUI. skin = guiskin;

        if(GUI. Button(Rect(20,0,100,50)," CAM1" ," button1" )){

           cam1. enabled = true;

           cam2. enabled = false; / / 按钮事件,点击按钮进入相机一

         }

        else if ( GUI. Button ( Rect ( 120, 0, 100, 50 )," CAM2 " ,"button9" )){

             cam1. enabled = false;

              cam2. enabled = true; / / 点击按钮进入相机二

            }

        else if ( GUI. Button ( Rect ( 120, 0, 100, 50 )," CAM3 " ,"button9" )){

         cam1. enabled = false;

         cam2. enabled = true; / / 点击按钮进入相机三

      }

     该段代码主要实现了场景切换的功能,主要利用javascript 脚本编写。 一个场景中设定两个相机这样才不显得那么单调,先建两个 button,一个 button 控制相机一,另一个控制相机二,依次类推所有场景中都要建立两个 button 和两个摄像机,一个摄像机自由浏览场景,另一个相机控制路径浏览模式。

    5 系统实验与分析

    采用上述的设计思想和实现方法,实现了基于 Unity3D 的三维虚拟城市系统。 其中图 5 为采用物理效应技术实现的虚拟系统中人工湖波浪的虚拟动态效果,从图中可以看出实现效果逼真,整个画面真实度高;图 6 为系统中学校场景的虚拟,通过 Unity3D 技术将导入的三维模型进行程序实现,场景漫游功能,从图中可以看出效果真实,画质精度高;图 5 和图 6 两个场景间的切换采用了 Unity3D 的相机技术,场景切换实现效果较好,满足了用户的需求。 


图 5 人工湖中的波浪效果

    通过实验,采用 Unity3D 技术实现的三维虚拟城市系统,运行效果好,真实度高,其制作过程相对简单化,可以方便利用 Unity3D 里的物理效应技术、相机切换技术等进行二次开发的实现,能实现多种丰富的物理动画效果,其真实仿真度高;同时该系统三维漫游功能强大,可以在此基础上进行二次开发,实现各种效果的漫游功能,能满足用户不同的需求。


图 6 学校虚拟场景

    6 结束语

    利用 Unity3D 技术与 C#、Javascript 进行结合,实现的三维虚拟城市系统为三维虚拟城市实现技术提供了一种新的技术方法。 在这种实现技术下,可以在 Unity3D 中实现 GUI 界面生成、地形的生成和一系列的物理效应,如声音、水流、风力。 还有自动漫游、手动漫游、场景的切换等功能。 同时提高了实现的速度并能满足用户视觉上的多种需求。 文中研究了采用 Unity3D 的技术来实现三维虚拟城市,在分析了三维模型数据、地理地形和纹理模型的基础上,通过扩展 Unity3D 的物理效应、漫游技术和场景切换等技术,最后通过 Unity3D 平台进行系统生成输出显示系统,整个系统运行情况较好,内容丰富、真实感强。 取得了较好的仿真效果。

    作者简介:

    王星捷(1980-),男,湖南永州人,讲师,硕士,主要研究方向为分布式系统、地理信息、虚拟地理。

    参考文献:

    [1] 韩 飞. 面向虚拟环境的三维地形生成方法[J]. 计算机工程,2010(10):261-263.

    [2] 苏红军,盛业华,温永宁,等. 面向虚拟地理环境的多源异构数据集成方法[ J]. 地球信息科学学报,2009(6):292 -298.

    [3] 邓志红,老松杨,张国华. 基于三维 GIS 的导弹预警视景仿真系统实现[J]. 计算机仿真,2010(4):40-44.

    [4] 陈阿林,胡朝晖,祁相志. 校园虚拟现实三维场景建模技术及实现方法研究[J]. 重庆师范大学学报(自然科学版),2007(10):1-4.

    [5] 李昌国,张晓林,谭 良,等. 基于 GIS 和 VIRTOOLS 技术的虚拟校园漫游开发方法的研究[J]. 计算机工程与设计,2007(7):3223-3226.

    [6] 刘 航,王积忠,王春水. 虚拟校园三维仿真系统关键技术研究[J]. 计算机工程与设计,2007(6):2934-2936.

    [7] 陈 曼,盛业华,温永宁,等. 虚拟地理环境三维可视化系统构建[J]. 系统仿真学报,2008(10):5105-5108.

    [8] 吕智涵,马瑞娜,房经宝,等. WebGIS 中多维空间数据多尺度表达索引结构[ J]. 计算机应用研究,2010 (9):3395 -3402.

    [9] 朱 庆,高玉荣,危拥军. GIS 中三维模型的设计[J]. 武汉大学学报(信息科学版),2003,28(3):283-287.

    [10] Museth K,Barr A,Lo M W. Semi-immersive Space MissionDesign and Visualization:Case Study of " The Terrestrial Planet Finder" Mission [ C] / / Proceedings of the Conference onVisualization. [ s. l. ]: IEEE Computer Society,2001:501 -504.

    [11] Aerts K,Maesen K,Rompaey A V. A Practical Example of Semantic Interpretability of Large-scale Topographic Databases Using Semantic Web Technologies [ C] / / Proceedings of the AGILE’06. Visegr,Hungary:[s. n. ],2006:35-42.

    [12] Ramasundaram V,Grunwald S,Mangeot A,et al. Development of an environmental virtual field laboratory[ J]. Computers &Education,2005,45(1):21-34.

    [13] Mac E,Cai G,Sharma R. Enabling collaborative geoinformation access and decision-making through a natural,multimodal interface[ J]. International Journal of Geographical Information Science,2005,19(3):267-292.

    [14] 邹 海,徐 军,褚维翠. 基于 OpenGL 的三维地形的模拟[J]. 计算机技术与发展,2011,21(6):239-241.

标签:Unity城市
上一篇:军事地质信息虚拟现实可视化与分析
下一篇:美神经科学研发虚拟现实设备:可走进人类大脑
网友评论:基于Unity3D平台的三维虚拟城市研究与应用
评论
留名: 验证码:
您可能还需要关注一下内容:
·基于洪水模拟和预报的三维仿真系统设计
·多目标地籍虚拟三维城市系统之建置
·基于ArcGIS创建三维虚拟城市流程
·基于Unity3D平台的三维虚拟城市研究与应用
·Unity3d 爆炸火焰特效教程
·Unity3d 基础特效教程-下雨
·对盲区说不 路虎360°虚拟城市风挡玻璃技术
·多尺度三维数字房屋模型建置表
·昆明建成国内最大数字城市三维模型
·基于Unity3D实现大件运输过程动态模拟
☏ 推荐产品

Ladybug5全景
商家:力方国际

ProJet®
商家:力方国际

ProJet®
商家:视科创新

Premium1.5
商家:视科创新

巴可HDX主动立体投
商家:德浩科视

巴可HDF-W26投
商家:德浩科视

巴可30000流明2
商家:德浩科视

巴可4万流明2K投影
商家:德浩科视
☞ 外设导航
☏ 企业名录
【广州】中科院广州电子技术有限公司
【北京】第二空间(北京)科技有限公司
【北京】幻维世界(北京)网络科技有限公司
【厦门】厦门惠拓动漫科技有限公司
【厦门】厦门幻眼信息科技有限公司
【深圳】深圳南方百捷文化传播有限公司
【北京】北京思源科安信息技术有限公司
【上海】上海殊未信息科技有限公司
【北京】北京赢康科技开发有限公司
【武汉】武汉科码软件有限公司
友情链接 关于本站 咨询策划 行业推广 广告服务 免责声明 网站建设 联系我们 融资计划
北京第三维度科技有限公司 版权所有 京ICP备09001338
2008-2016 Beijing The third dimension Inc. All Rights Reserved.
Tel:010-57255801 Mob:13371637112(24小时)
Email:d3dweb@163.com  QQ:496466882
扫一扫 第三维度
官方微信号