Science &Technology Vision
3d地图实景地图
科技视界0引言
目前,虚拟现实技术已经成为计算机技术中研究,开发和应用的热点,广泛的应用于教育[1-2]、医疗[3]、建筑、工业设计[4-5]、产品展示等各个领域。虚拟校园社区实现了对校园三维景观和教学环境的数字化和虚拟化。将学校风光用虚拟仿真实现,既可以为学校树立良好的形象,让来访者足不出户就可以身历其境的感受到真实的校园实景和有关介绍信息;还可以作为校园规划的辅助工具,提高校园管理的现代化水平[6-7]。
虚拟校园社区可以提供三维虚拟环境,用于支持对现实大学的资源管理、环境规划、学校发展和远程访问等。是校园景观和教学环境在计算机中的虚拟再现。它利用地理信息技术、虚拟现实技术、计算机网络技术等高新技术,实现对真实校园环境中的三维景观和教学环境的数字化和虚拟化。到那时,世界各地的人们不必亲临现场,只需在网上就能畅游其间,方便人们随时随地了解校园的情况。
虚拟校园为师生们提供了非常便利和快捷的交流,同时完善的虚拟校园系统集学习、工作、娱乐、生活为一体,增加了师生之间交流的趣味性,有利于师生之间的良好沟通。虚拟校园社区以网络为基础,利用先进的信息化手段和先进的计算机技术、网络技术、虚拟现实技术,实现学校与教学、科研、管理和生活服务有关的所有信息资源进行全面的数字化。把学校建设成面向校内外,也面向社会的一个超越时
间、超越空间的虚拟校园社区,提高传统校园的效率,扩展传统校园的功能。最终实现教育过程的全面信息化,从而达到提高教育管理水平的目的。虚拟校园技术必将成为今后校园信息化发展方向的主流,而基于网络的大规模虚拟校园漫游将成为研究的新热点.本系统以unity3d 作为开发平台,结合AUTOCAD 规划总平面图[8];利用AutoCAD、3DMAX、Photoshop、Unity3D 等软件实现了某高校虚拟校园设计,该虚拟校园场景具有良好的沉浸感,通过网上发布,测试了其流畅性,可以作为该学校的数字解说平台使用。
1三维虚拟校园漫游的总体设计
1.1虚拟校园漫游开发总体框架
虚拟校园的设计总体框架如图1所示。
如图1所示,首先,基于通过测量、观察、相机记录等方式获取校园地理信息数据。包括校园建筑平面图AutoCAD 和校园建筑鸟瞰图[9-10],
以及花草、树木、道路的具体数据及信息。
然后,使用3d 建模软件例如maya 3dmax 等专业建模软件,制作三维数字模型。本系统使用的是最为流行的3dmax 对校园建筑模型进行加工和渲染。从而得到更加真实的三维立体模型。
第三步,在Unity3D 中添加地面。将上述步骤建好的三维建筑模型根据地理坐标依次添加到Unity3D 中,进行场景融合。以及纹理添加、灯光渲染等工作[11-13]。
第四步,通过unity3D 的跨平台性,生成可以通过网页浏览的Web 格式的虚拟社区[14]。
图1虚拟校园总体设计流程
1.2Unity3d 中虚拟场景的设计
Unity3d 中的地形建立:
在Unity3D 软件中通过Terrain 菜单建立及修改地形。Terrain 地形编辑工具可以根据具体的实地场景进行随意设置及修改。采用标准统一的地形,可以完成山地、城市和乡村场景的设计,具有友好的界面。同时,可以在整个地形上铺设地形纹理来装饰地图风景,还可以混合或合并地形纹理来平滑地过渡一个地图到另一个地图,或使地图的环境多样化。这极大方便了虚拟场景的制作。
基于Unity3D 的虚拟校园漫游的设计与实现
王彩玲刘瑞香宋钊
(西安石油大学计算机学院,陕西西安710065)
【摘要】虚拟校园建设是虚拟现实的重要应用领域,目前相关的研究多是构建单机系统下的应用。为了提高网络传输效率和交互能力,在校园场景建模中需要在模型逼真度和模型大小之间进行平衡。本文以西安石油大学校园场景为建模对象,介绍了校园场景总体设计思想,重点介绍了实现虚拟场景的合并、人物的虚拟漫游设计及基于C/S 模型的动态人物的交互。针对虚拟漫游网络占用大量网络带宽,影像虚拟漫游系统运行的流畅性,提出了在建模优化及程序中的优化实施措施,经过软件测试,表明该优化方法能够有效地降低网络带宽,能够一定程度上提高虚拟漫游系统运行效率,验证了在网络环境下的操作流畅性,为构建虚拟数字化校园及相关方向研究提供实用参考价值。
【关键词】虚拟现实;虚拟校园;校园漫游;Unity3D
Design and Realization of Virtual Campus Roaming Based on Unity3D
WANG Cai-ling LIU Rui-xiang SONG Zhao
(School of Computer Science,Xi ’an Shiyou University,Xi ’an Shaanxi 710065,China)
【Abstract 】Virtual campus use is one of important application field of virtual reality.Nowadays,most virtual systems are almost stand-alone system.In order to improve the efficiency of systems’network transmission and interaction ability,the model fidelity and model size should keep a right balance.This
paper takes the campus scenario f Xi’an shiyou university as modeling object,introduces the overall design thought,and how to realize the consolidation of virtual scene,the design of virtual roaming of characters and the interaction of dynamic characters based on C/S model are mainly introduced.Many factors such as network bandwidth in system implementation and implementation measures in modeling optimization and program optimization are discussed.This paper verifies the system’s operation fluency under network environment,and provides practical reference value for building a virtual digital campus and the relevant research.
【Key words 】Virtual reality;Virtual campus;Campus roaming;Unity3D
※基金项目:2013年国家级大学生创新创业训练项目“基于Web3D 的虚拟校园社区设计”(201310705013)。
作者简介:王彩玲(1984—),女,博士,宁夏吴忠人,讲师,主要研究方向为图形图像处理技术。刘瑞香(1991—),女,研究生,陕西渭南人,主要研究方向为图形图像处理技术。宋钊(1994—),男,陕西咸阳人,本科生,主要研究方向为网络技术。
18
. All Rights Reserved.
Science &Technology Vision 科技视界
图2Unity3D 的Terrain 菜单项
1.3Unity3D 中三维模型的导入
Unity3D 软件只支持fbx 格式的三维模型,因此,在设计时,采用3DMax 建模,将模型存储为fbx 类型。在Unity3D 中的asset 文件夹中添加Object 文件夹,此时,Unity3D 将自动识别该模型,并将其Material 和Textures 分离出来导入到Object 的文件夹下面。此时,当模型导入时,我们可以在菜单栏Assets\import new asset,选择我们要导入的*.fbx [15]。
1.4建筑模型纹理设计
在Unity3d 环境中设计纹理及贴图之前应先确定各模型的材质、贴图和物理属性。在获取相关属性后,将模型导入Unity3d 中进行Shader 脚本设置和纹理贴图。Unity3D 中的shader 脚本,采用shaderlab 脚本语言编写,shader 的框架如下:shader "shader name"{properties
{_Color("Diffuse Color",Color)=(1,.5,.5,1)_Texture("Main Texture",2D)=""{}}
SubShader {
Tags{"Queue"="Transparent"}pass {
Tags{}Material{}}}
Fallback ""}
其中,properties 中定义的变量,是可以采用编辑器编辑的。在Unity3D 编辑器中选中一个材质,材质中的shader 里面定义在properties 中的变量就会出现该材质的属性面板中,可以手动设置对应的属性。其中,纹理属性后面,还有一些可选的属性可以设置,用于设置纹理的坐标,和其他一些属性。1.5虚拟场景的合并
在进行模型设计后,需要将多个模型及场景依据平面图进行场景整合,还需要背景配乐等多媒体文件支持。在设计时,通过建立Directional Light 和sky box,可以使场景更加明亮和逼真。
2虚拟系统的实现
2.1漫游技术的实现
在虚拟漫游中,我们希望通过控制鼠标或者键盘实现视角和场景的转换。在具体实现中,首先,在3DMax 建模软件中分别制作人物的行走动画、站立动画、跳跃动画和跑步动画,制作完毕后,将动画模
型保存为.fbx 文件格式。将动作模型导入到Unity3D 项目的Object 文件夹中。然后,在栏中选中导入动画模型,在属性面板中设置模型不同动作的开始和结束帧,所拖拽动画模型到舞台中去。
通过Character Moto 命令给动画模型添加人物控制器,在属性面板中调节Radius 和Height 来调节人物控制器的轮廓、高度。在软件中添加Javescript 控制代码实现运动控制。具体的,设计鼠标控制需要对人物添加Mouse Look 旋转控制器,设计键盘控制需要对人物添加FPS Input Controller 移动控制器。对相应控制器设计即可实现视角随着鼠
标方向的旋转和键盘控制人物实现前后左右的移动[16-17]。
在具体设计时,需要考虑当角移动时,需要配合相应的动作来完成角移动的效果,比如:跑动作、跳动作等,为了给用户带来视觉的更加逼真的效果,在设计时,在animatioController.js 添加动作代码,其中核心代码如下:
if(Input.GetAxis("Vertical")>.1)//如果是竖直方向的向前运动{
if(Input.GetButton("Run"))//按下run 按钮{
animation.CrossFade("run");//播放run 动画walkSpeed =4;//同时设置速度为4}else {
animation["walk"].speed =1;//其他时候则为走路animation.CrossFade("walk");//播放走路动画walkSpeed =1;//同时设置速度为1}
if(Input.GetAxis("Vertical")<-.1)////如果是竖直方向的向后运动{
animation["walk"].speed =-1;//速度设置为负值animation.CrossFade("walk");//播放走画面walkSpeed =1;}else {
animation.CrossFade("idle");//其他时候为站立动画}
if (Input.GetI}eyDown ("space"))//当空格键被按下就执行跳跃动画。
animation.CrossFade(”jump");}
水平方向的控制和垂直方向运动相同代码在此省略。2.2碰撞检测[18]
碰撞检测[19]是模拟现实环境中的人物及物体在遇到障碍物时发生的本能反应,例如,当角遇到墙壁,如果没有设计碰撞检测,则角会出现穿墙而过的失真现象,在现实中,应该是当发现墙壁与角存在一定距离时,则需要停止前进。在这种情况下,设计人员需要添加碰撞检测函数。在Unity3d 软件中提供了Mesh Collider 撞检测组件,该组件可以有效计算模型表面的网格自动生成碰撞面,但是如果模
型表面的网格较多会影响执行效率,通过给网格较多的模型添加一个基本体作为该模型的父模型,设置成不可渲染则可以有效解决该问题。2.3系统联机功能实现
当用户漫游在数字校园中,如果只包含静态的建筑,而缺乏了动态的人物交互,这样的设计缺乏真实的体验,在本系统中,采用C/S 客户端服务器模型,实现场景中的人物互动。其中,服务器相对独立,可支持多个客户端的访问。两者之间交互的原理为:客户端向服务器发送请求,服务器给予反馈。当访问者按下移动按键时,客户端将事件发送至服务器,服务器端判断角该如何移动才能将事件返回给客户端,当客户端接受到服务器返回的数据后,开始移动角,同时服务器端还会将其他访问者的移动事件发送给客户端。这样客户端就可以显示其他访问者的模型位置了。
具体设计时,服务器默认开启,服务器端核心代码:Void OnGUI(){
Switch(Network.PeerType){
Case NetworkPeerType.Disconnected:StartServer ();
Case NetworkPeerType.Server:Break;
Case NetworkPeerType.Client:Break;
Case NetworkPeerType.Connecting Break;}
}
19
. All Rights Reserved.
Science &Technology Vision
科技视界Void StartServer(){
if(GUILayout.Button("创建服务器”)){
//服务端创建服务器
NetworkConnectionError error=Network.Connect(IP,Port,false);//如果连接失败,将错误信息打印出来Debug.Log("连接状态:"+error);}
客户端核心代码为:Void OnGUI(){
Switch(Network.PeerType){
Case NetworkPeerType.Disconnected:StartConnect ();
Case NetworkPeerType.Server:Break;
Case NetworkPeerType.Client:Break;
Case NetworkPeerType.Connecting Break;}}
Void StartConnect(){
if(GUILayout.Button("连接服务器”)){
//客户端连接服务器
NetworkConnectionError error=Network.Connect(IP,Port);//如果连接失败,将错误信息打印出来Debug.Log("连接状态:"+error);}
服务器创建完成后,客户端需要向服务服务器发送消息请求,并且确保服务器能够将来自某一客户端的请求消息返回给连接到服务器的所有客户端。需要首先创建一个网络视图组件,然后就可以使用RPC 向服务器发送消息了。使用RPC 发送消息的方法如下:networkView.RPC("RequestMessage",RPCMode.All ,inputMessage);在服务器端或客户端中接收消息请求的方法如下:
void RequestMessage(string message,NetworkMessageInfo info){
//message:消息内容//info:消息附带信息}
模拟效果如下:
图3
3软件测试与优化
任何系统都需要进行黑盒子测试以发现系统存在的问题和漏洞。本系统也进行了相应的测试。在测试中发现,基于网络环境下,系统存在占用网络流量大,运行缓慢的现象。分析原因是因为测试电脑配置
较低及网络带宽限制。这就要求我们从用户角度出发,在保证真实度的情况下尽量减少模型的数量,大部分建筑需要通过平面建模来优化模型的复杂度,在建模过程中尽量减少模型顶点和分段数,在unity3d 处理过程中,尽量使用静态灯光,动态实时灯光相比静态灯光,非常耗费资源。所以除了能动的角和物体静态的地形和建筑。尽量减少视角范围和距离,减少不必要的运行消耗。
4总结
本系统通过Unity3D 平台建立了一个虚拟系统,并通过C/S 模式构建人物交互,采用HTML 格式发布,几乎适应所有平台浏览。实现效果逼真仿真度高,系统运行稳定可靠性好,系统与用户交互性好,能够
非常直观地带给用户身临其境的场景漫游效果,漫游过程场景切换顺畅,而且可以为场景提供丰富的多媒体影音交互。
Unity3D 提供可视化的界面操作,地形制作和文理添加,以及拥有“对象碰撞检测”、“角漫游”功能,方便了系统的开发。基于Unity3D 的虚拟漫游技术原理与渲染效果非常适合虚拟校园漫游的设计,随着以后越来越多的漫游系统的需求,Unity3D 引擎技术将会被更为广泛的应用。
[1]范立冬,李曙光,张治刚.虚拟现实技术在医学训练中的应用[J].创伤外科杂志,2008,12(9).
[2]吴燕玲.基于Wed 的玩味动画技术及其在教学中的应用[J].中山大学学报:自然科学版.2002,12(6):53-56.
[3]詹胜利.Web3D 技术在网络教学中的应用[J].网络技术与网络教学,2006.1:15-17.
[4]来翔.面向电子商务的虚拟商品模型研究[J].浙江大学,2003.
[5]沈璞.虚拟现实技术在现代工业设计中的应用[J].制造业自动化,2004.11(6):76-78.
[6]张典华,陈一民.基于Unity3D 的多平台虚拟校园设计与实现[J].计算机技术与发展,2013,24(2):127,135.
[7]马瑞.基于Unity3D 的多平台三维虚拟数字校园的设计与实现[J].蚌埠学院学报,2014,3(2):13-16.
[8]Okabe M,Igarashi T.3D modeling of trees from freehand sketches [C]//International Conference on Computer Graphics and Interactive Techniques.ACM SIGGRAPH 2003Sketches &Applications.New York,USA:ACM,2003:1-1.
[9]Okabe M,Owada S,Igarashi T.Interactive design of botanical trees using freehand sketches and example -based editing [J].Computer Graphics Forum,Eurographics (S0167-7055),2005,24(3):487-496.
[10]Livny Y,Yan F L,Olson M,et al.Automatic Reconstruction of Tree Skeletal Structures from Point Clouds [J].ACM Transactions on Graphics (S0730-0301),2010,29(6):151-1:151-8.
[11]周希望,刘正东.虚拟校园的建模优化及Web3D 交互技术[J].软件导刊,2010,9(1).
[12]付林.永丰大厦虚拟漫游数字平台的设计与实现[D].北京交通大学,2010(1).[13]倪乐波,戚鹏.Unity 3D 产品虚拟展示技术的研究与应用[J].数字技术与应用,2010(9).
[14]郭海新.Unity 3D 与HTML 交互机理的研究[J].煤炭技术,2012(9).
[15]毛天露,王兆其.个性化三维人体模型快速建模方法[J].计算机辅助设计与图形学学报,2005,17(10):2191-2195.
[16]干建松.基于Unity 3d 的室内漫游的关键技术研究[J].盐城工学院学报:自然科学版,2011(20).
[17]何志毅,田金萍,李天松,等.虚拟人行走的动作融合[J].计算机工程,2009,35(22):267-271.
[18]甘建红,彭强,戴培东,等.基于OBB 层次结构碰撞检测的改进算法[J].系统仿真学报,2011,23(1):2619-2173.
[19]Gayle R,Manocha D.Navigating virtual agents in online virtual worlds [C]//Proceedings of the Web3D 2008.New York,NY,USA:ACM,2008:53-56.
[责任编辑:汤静]
20
. All Rights Reserved.