总体设计
在基于unity3d的虚拟校园导航设计正式开发之前,为使整个开发过程有条不紊的进行,首先对系统开发建立一个总体设计,如同建房子之前,先打好地基,建立房屋框架一般。根据‘基于unity3d的虚拟校园导航设计’这一题目,我利用互联网进行了相关内容的搜索和视频教程的学习,搜索发现包括清华大学、同济大学在内的多所大学,都已进行了相关系统的开发。结合其他学校开发内容、湖南女子学院特色及我个人的开发能力,制定了一份简易的系统需求分析书,细致规划了基于unity3d的虚拟校园导航设计。通过需求分析发现,在基于unity3d的虚拟校园导航设计的开发过程中,数据收集关系到未来建模的准确性、贴图制作关系到模型的用户视觉体验、地形制作关系到unity3的中的脚步编写及用户视觉体验、脚本设计关系到整个系统开发的完整性、输出平台则关系到用户需要使用什么样的平台进入到基于unity3d的虚拟校园导航设计这个系统,系统开发的每一步都至关重要。
1 数据收集
数据收集是基于unity3d的虚拟校园导航设计开发的实际操作的第一步,主要内容为收集校园的地理信息、地理及建筑数据和建筑外观及校园环境照片。地理信息主要可以通过学校官网获取得到,地理及建筑数据需要通过实际测量获得,建筑外观照片则需求通过相机拍摄获得。相对而言,地理信息较为容易获得;地理及建筑数据因为没有经过专业的测绘学习和培训,实际测量过程中遇到了部分地方测量不到和测量数据偏差较大等问题,需要通过多次测量,比较分析之后确定最终数据,为此,我在2015年1月4日、2015年3月10日、2015年4月25日分别对校园地理及建筑数据进行了测量和核准,使最终的数据尽可能接近真实值;建筑外观图片是通过人工拍摄获得,因为设备、拍摄角度、建筑前的遮挡物和建筑之间的间距等问题,使得拍摄过程并不顺利,2015年3月10日我使用索尼Z1及外挂镜头索尼QX10对校园建筑外观及校园环境进行拍摄,总计拍摄照片459张,有效照片298张,其中大多数照片因为设备及拍摄角度问题,使得照片无法进行后期处理而作废,2015年4月25日使用佳能单反600D及18-135镜头尝试对校园建筑外观及校园环境进行第二次拍摄,总计拍摄照片637张,有效照片545张,本次拍摄在一定程度上减低了设备及拍摄角度问题,但建筑前如:树、广告牌之类的遮挡物,建筑之间距离太近无法拍摄全景等客观问题仍然存在,这使得后期图片处理的过程中难度大大增加。数据收集过程中收集到的湖南女子大学南北校区全景图2.3如下:
图2.3 湖南女子大学南北校区全景图
2 贴图制作
数据收集完毕,就可以开始进行图片处理。将拍摄的照片处理成为模型的贴图形式,是基于unity3d的虚拟校园导航设计开发的基础工作,贴图的是模型的“外衣”,模型的外观都依赖于模型形状和贴图。在贴图制作中,主要使用的是Photoshop CS5,Photoshop CS5中自带的插件camera raw具有十分完善的图片调色功能,由于拍摄时间、天气、角度、光照和显像色彩的不同,拍摄出来照片与照片之间的颜色有一定差距,这时我们就可以利用插件camera raw进行调整,camera raw中都可以通过数据来调整,降低了通过肉眼判断的误差性。完成camera raw调色,点击确定进入图片编辑界面,打开标尺功能,剪切掉图片中多余的部分,从标尺中拖出参考线放至合适的位置后可对图片进行变形,由于人身高与建筑高度的差距,照片拍摄出来会形成上小下大的形状,这时需要对图片进行变形,用Ctrl+T选择图片进行变形,再按住Ctrl键,用鼠标对图片两个上顶点进行拉伸,使图片扭曲为上下大小相同,保存编辑之后的图片,并将同一栋建筑的图片有序连接成一张完整的位图贴图,当建筑前有遮挡物时,可以通过修补工具、复制相同区域覆盖等方法进行修复。图2.4湖南女子学院北院宿舍楼贴图,图2.5湖南女子学院北院办公楼贴图如下:
图2.4 湖南女子学院北院宿舍楼贴图
图2.5 湖南女子学院北院办公楼贴图
3 构建地形
地形像是盛放建筑模型的容器一般,如同房地产开发前,先要有一个块地,才能在地上建房子。根据前期收集到的地理及建筑数据,我们可以将学校分为南院和北院两个部分,分别进行构建地形,参照湖南女子大学南北校区全景图、测量数据和大学四年校园生活经验,对地形建立一个大致的框架,如学校大门和校园内部建筑因为进门的楼梯有高度差,可以利用3ds Max中的挤出功能将两层之间的高度差挤出,校园内部建筑和操场的高度差制作方法相同,此外,将有建筑的地方空出来,用于放置建立的校园建筑模型,这是地形建立的第一步。待校园建筑模型建立完毕之后,将校园建筑模型放置到地形这个“容器”中,再根据校园环境,对地形进行植被、广告牌、景观建筑的补充和完善,这些工作全部做完之后,就可以将这个整体导入unity3d中进行脚本编写。在地形制作的过程中,应当注意地形中不用对象属性的设置,如:木质、岩石等,注意对象与对象之间的平稳过渡,放置建筑模型、植被、广告牌等对象时,要注意对象的朝向、角度、比邻对象之间的距离等等。图2.6地形结构图如下:
图2.6 地形结构图
4 创建模型
创建模型是基于unity3d的虚拟校园导航设计开发的关键一步,虚拟现实的校园建筑都是在这一步开始产生的。模型的构建主要包括校园建筑、基础设施、植被和天空等等。这里我们主要进行的是校园建筑模型的创建。创建模型时需要创建人脑海中要有建筑的实际成像,并打开拍摄的图片进行参照,在3ds Max中首先创建基础模型,如:长方体、四棱锥等,通过在修改面板中添加“挤出”的修改器,修改基础长方体作为墙体,修改四棱锥作为屋顶,将建立好的墙体和屋顶拼接起来,在修改器中将相邻的点线面附加,使之连接在一起。再在创建几何图形中使用合成对象、布尔运算,将操作方式改为减,点击拾取对象,为建筑安装桌椅、门、窗等。这样一栋简单的建筑就建立完成。但建立完成的模型只是我们所说的白模,要将白模贴上“外衣”,才能使渲染出来的模型建筑和真实的建筑相同。
5 模型贴图
模型贴图使用到的是处理完毕的模型贴图,和根据校园建筑创建的建筑模型白模。在3ds Max中导入做好的建筑模型白模,按住Alt+w将透视图变成最大化视图,这样方便我们在贴图时全方位观察贴图效果。找到材质编辑器,将材质编辑器中的一个材质球赋值给建筑模型白模,这时我们会发现建筑模型白模的显示变成了灰色。点击漫反射后面小框来获取材质,在材质/贴图浏览器中找到位图,将已经制作好的模型贴图添加至材质球上,显示材质之后我们会发现贴图效果比较凌乱,我们需要用到修改器中的uvw展开修改器来对贴图的位置进行修改。选择建筑模型,添加uvw展开修改器,全选建筑模型,点击面板上uvw展开中的面,在编辑中将模型各个面展开,再回到主界面选择uvw展开中的线,在编辑中将连接在一起的线进行断开,把建筑模型的每个面分解成单独的一块,利用焊接功能将相邻的面连接到一起,这时编辑中的面会成为三个部分,即建筑模型的顶、底和四周的面,这时再加载模型贴图调整编辑中各个面的边,经过多次调整使模型贴图位置位于合适的位置。制作完毕可见,图2.7湖南女子学院北院宿舍楼模型及图2.8湖南女子学院北院办公楼模型如下:
图2.7 湖南女子学院北院宿舍楼模型
图2.8 湖南女子学院北院办公楼模型
6 脚本设计
模型制作贴图完毕利用3ds Max将制作好的模型导出为FBX格式,将材质球和贴图分别保存好。三维模型制作完毕的下一步就是将制作好的三维模型和材质球贴图一起导入到unity3d中,为模型添加天空盒、植被、基础设施等场景,再编写运动脚本。首先,我们要讲建筑的物理属性设置好,避免出现“穿墙”效果。之后,我们可以在Project视图里的Assets文件夹中新建Imported和Scenes两个文件夹,一个用来放导入的资源文件,如建筑模型等,一个用来放我们的地形、场景等。在场景视图中删除其自带的摄像头,添加一个unity3d中自带的第一视角的控制器,unity3d可以将模型资源、图片等直接拖入视图中,不需要通过菜单中的import来导入。将资源拖入完毕之后我们开始对场景中的人物进行一定的动作脚本编写,如:人物碰撞到建筑时会弹出提示框,显示建筑相关信息;还可以通过碰撞到建筑是播放视频、音乐等。用户通过点击按钮实现开关音乐功能代码如下:
if(buttonshow==true){
If(GUI.Button (Rest (Screen.width*(If-120f/screenw),
Screen.height*(If/2f-250f/screenh),
(Screen.width*120f/screenw),
(Screen.width*50f/screenw)),”音乐开关”)){
Soundshow=!Soundshow;}}