APP下载

基于Unity3D的Web三维可视化

2017-09-15

福建质量管理 2017年12期
关键词:脚本按钮天空

(成都理工大学 四川 成都 610059)

基于Unity3D的Web三维可视化

戢腾杨鹏

(成都理工大学四川成都610059)

本文详细地介绍了利用三维开发引擎Unity3D做为平台,SketchUp作为建模软件,IIS作为网络服务器的开发的网络三维校园漫游系统。对Unity3D在Web环境下发布和浏览三维数据方法可行性做出评价,并对Web3D技术的未来发展前景做了展望和预测。

三维校园;Web3D;Unity3D;SketchUp

一、引言

随着社会的不断发展和科技的进步,人们已经对于城市样貌、游戏已经不再满足于原来二维平面数据。“既然真实的世界是三维的,那么科学探索为什么不借助三维形式呢?”既然有了需求,那么开发者们就会将目光集中于此。在这样的环境下,如今的Web早已不是当初简单的文字和图片的静态信息了,已经慢慢地向视频、音频及动画等动态信息发展。现在打开一个网页会见到各种各样的gif动态图、网页flash广告以及在线小游戏等动态信息[1]。这些发展中,三维技术变得逐渐热门起来。三维技术的发展与应用无疑会利用到互联网[2]。由于三维技术是模拟真实世界的,那么它的发展必将给人们带来全新的视觉冲击。而把三维技术和网络结合起来就是Web3D技术,Web3D技术比起以前的flash、动画多了真实感,可以让用户有身临其境的感觉。而Web3D实际上就是以前的虚拟现实技术发展过来的[3]。它的目的就是在网络上模拟现实,建立虚拟的三维世界。Web3D技术目前在网上有着广泛的应用。例如在网上展示三维商品,可以更加吸引用户;在三维的城市地图下面虚拟旅游参观,可以让用户对景观有真实去过的感受;还可以建立虚拟人物,在虚拟社区里面交流等一些娱乐。因此研究Unity3D在web环境下发布和浏览三维数据的方法,对推动web环境下的三维应用有重要的现实意义。

二、Unity3D简介

Unity3D是个强大的集成游戏引擎和编译器,通过它你可以快速高效的建立对象和导入外部资源(图像、影音及模型等等),并且可以用代码将他们关联在一起。Unity3D它的编辑器是可视化的,它围绕这样的原则而构建:用户可以使用一个简单的拖放动作来完成任何任务,甚至可以连接脚本,为变量赋值或者是创建复杂的包含多个部分的资源。Unity3D还拥有一个集成的脚本环境、内置网络功能,可以针对多个平台开发部署。

三、三维校园场景数据获取

(一)地物位置数据

三维场景中的地物位置信息可以从校园CAD底图上获取,也可以从一些卫星地图上获取,本文通过在Sketchup添加校园Google Earth中的卫星影像,获取了地物的相对位置关系。

(二)地物高度数据

由于工作量的关系,本文采取的策略是:一般建筑模型高度为:楼层数×3米;如果该建筑为公共建筑物则底层一般为3.5到4米左右。

(三)地物纹理信息数据

纹理数据可以展现逼真的视觉效果。通过数码相机或手机采集各建筑物的外形轮廓,从而获得三维地物建模所需的纹理图片。经PhotoShop等图像处理软件进行裁切、变换等处理,使之成为正射状态,用于地物贴图。

四、地物模型制作

目前,严格的说,三维建模已经不算是很新的技术了,建立三维模型的软件越来也多,例如3D Max、Maya、SketchUp等等,其中SketchUp是一套令人耳目一新的设计软件,可快速构建建筑草图,创作建筑方案,被建筑师誉为最优秀的建筑草图工具。本文选择的是SketchUp三维建模,建模步骤如下:

1)加载地物位置数据,绘制出地物的平面轮廓,

2)利用地物高度数据和拉伸工具,绘制出地物的主体结构

3)通过前期对建筑的(通过照片、影像以及实地观看等)了解,借助工具对地物的细节部分进行细化

4)对地物模型进行贴图

5)完成贴图后,要删除多余的线条及辅助线

6)将建好的地物模型以.fbx格式单个导出,便于Unity3D导入模型

图1 SketchUp建立模型图

五、地物模型发布

(一)添加模型

Unity3D创建工程的所有文件(脚本、对象、场景、任何文件)都组织到一个Project文件夹里面,每一个Project文件夹都包含一个Assets(资源)文件夹。而导入的模型文件就存放在Assets(资源)文件夹中。在Unity3D中可以从Project视图里面找到所需要的模型,在Inspector视图中修改其详细信息(例如:模型的位置、大小及脚本等等)

(二)调整模型

因此将Unity3D的模型大小调整有两种方法:一种方法是修改FBXImporter中的Scale Factor数值,将Scale Factor的数值恢复为1,但这样做会占用模型资源,比较消耗物理缓存;另一种方法是从Hierarchy中选中待修改物品,使用Scale同时放大x,y,z各100倍,这种设置耗费的资源比较少,同时还能通过使用脚本来进行这个放大操作,十分方便。

(三)调整贴图

对于三维校园场景框架中的一些特殊地物的贴图,如地砖,先选择Inspector中的Wrap Mode(包裹模式),该功能决定贴图会无限的平铺还是只显示一次。再选择Repeat让贴图平铺,或者选择Clamp 让贴图的边缘拉伸并在改变大小时填满任何缝隙;对于一些透明的贴图,应该选择Alpha通道,而不是默认的diffuse散射通道。

(四)添加脚本

对于导入Unity的模型场景,它是静态,是不可操作的。需要使用脚本编程来实现交互性。如果说模型、贴图之类的可以给游戏环境一个物理描述和设置,那么脚本和代码会给游戏及其内容以生命。Unity内置地支持三种脚本语言:C#、Boo(Python的一个变种)和JavaScript,本文中利用JavaScript实现了如下功能:1)能够对整体的模型场景进行旋转和缩放2)选中建筑模型时可以弹出该建筑的信息3)能以第一人称视角在场景里行走以及飞行等等

在写脚本之前可以先为导入的模型添加碰撞效果。由于主要研究web三维可视化,因此所有的建筑模型只需要添加Mesh Collider 网格碰撞器即可。Unity3D中提供了许多关于碰撞属性,例如摩擦力、物体表面材质等等。

要触发功能来达到用户与计算机交互,即响应条件,因此需要为此场景创建GUI(用户界面)。通俗的说,GUI相当于门,一个不好的、难以使用的门会让用户止步于门前。Unity3D的GUI系统是基于立即模式的,例如屏幕上放置GUI一个按钮:

function OnGUI()

{

if(GUI.Button(Rect(10,10,100,40),”离开”)

{

Application.Quit();

}

}

界面上在屏幕(10,10)的位置显示像素宽100像素,高80像素的按钮。按钮上显示“离开”。当单击该按钮后,GUI.Button()函数返回True,这就满足if语句,随后关闭当前界面。但是值得注意的是,任何在屏幕上绘制的GUI元素,都必须在OnGUI()函数内部调用。Unity3D中的任意GUI交互所返回的值都是布尔型变量。

对于本文所实现的功能可以由屏幕上的三个按钮和场景中三个摄像机完成。具体如下图:

图2 功能流程图

也就是说点击屏幕上的一个按钮就打开一个摄像机同时关闭其他两个摄像机(但实际上实现的是打开一个按钮先执行的是关闭所有摄像机,再打开对应的摄像机)这样就可以切换多个镜头视角。

(五)场景优化

虽然现在测试的三维场景模型在技术上已经可以发布了,但还缺少一些环境。例如场景中颜色比较昏暗。因此需要创建光影效果。Unity3D预制了三种类型的光源,每种类型都模拟了现实世界中的一种常见光源——有向、点和聚光灯。其中有向光源的功能和太阳类似,比较适合三维建筑场景。

除此之外,场景中还缺少了一个很明显的景色——天空。虽然默认的蓝色对整个场景来说没什么太大的影响,但是相对于天空下面的光影以及绘制的地面来说,单调的蓝色则显得虚假,不真实。因此,添加一个天空背景变得很有必要。在Unity3D中,天空盒可以修改天空背景。天空盒是一个特殊的虚拟盒子,它包裹在场景周围但是却没有实际的几何信息存在,只是给人逼真效果和天空的假象。和光源相同,Unity3D官方也提供了几种不同的天空场景供用户选择。

(六)运行发布

利用Unity3D将三维数据发布到网上,实际上就是发布Unity3D生成的.html文件。因此可以将其放在一些门户网站中,在其界面添加热链接即可。当然也可以独立发布。独立发布网页,首先需要选择Web服务器,对于学生及初学者来说,微软自带的IIS服务器是一个很好的选择,当然也可以选择Tomcat网络服务器,不管是IIS还是Tomcat,它们都是比较简单易操作的。

本文系统使用的是Windows操作系统,使用的是ASP的IIS服务器,一般来说,Win7以上的操作系统,都已经安装好IIS服务器,对于没有安装,可以打开任务管理器中程序与功能打开和添加功能,勾选IIS选项即可。然后添加网址、网页的物理路径即可在内网浏览。在网页浏览器中输入本机内网的IP地址即可浏览网页。

图3 发布web效果图

六、总结

本文针对三维数据发布的需要,阐述了利用SketchUp建模以Unity3D为平台在Web上发布三维数据的实现过程,解决了三维场景漫游、快速放大缩小旋转等三维浏览的关键技术。除了场景漫游操作外,还可以选取三维建筑,查询其属性信息。同时场景还添加了天空背景以及光照阴影等仿真效果,证明了基于Unity3D的web三维可视化的可行性。随着互联网技术和Web3D研发技术的不断提高,Web3D技术在未来的应用势必会越来越广泛。而作为Web3D技术中热门的Unity3D也必将在Web应用和手机Web游戏应用中越走越远。

[1]Luca Chittaro *,Roberto Ranon.Web3D technologies in learning,education and training:Motivations,issues,opportunities.Computers & Education.49(2007)3-18.

[2]John,N.W..The impact of Web3D technologies on medical education and training.Computers & Education,49(1),19-31.

[3]Menard,M.Game Development with Unity[M].机械工业出版社,2012.4:8-10.

戢腾(1992-),男,汉族,湖北人,硕士研究生,测绘工程,成都理工大学;杨鹏(1991-),男,汉族,河南人,硕士研究生,测绘工程,成都理工大学。

猜你喜欢

脚本按钮天空
酒驾
当你面前有个按钮
安奇奇与小cool 龙(第二回)
天空之镜
快乐假期
死循环
小编的新年愿望
一和one
天空之舞
天空之门