基于Unity3D交互式三维虚拟校园平台设计与研究①

2017-05-18 13:18宋传磊刘俊婷张光亮张秀国
关键词:漫游纹理按钮

宋传磊 刘俊婷 张光亮 张秀国

(青岛理工大学琴岛学院,山东青岛266106)

基于Unity3D交互式三维虚拟校园平台设计与研究①

宋传磊 刘俊婷 张光亮 张秀国

(青岛理工大学琴岛学院,山东青岛266106)

针对目前三维虚拟校园平台在真实性和交互性等方面的不足,提出基于Unity3D三维虚拟校园的实现方法.首先,考察实际地形和采集真实数据信息,完成场景地形和建筑景观模型构建;然后,导入Unity3D平台,通过二次开发,实现三维场景搭建及三维物理效应仿真等.该平台使用的实验数据真实有效,很好的实现了三维虚拟校园的各项性能指标,高效的实现漫游仿真.

三维虚拟校园,Unity3D,三维模型,仿真

0 引言

在现行的信息化时代,各院校越来越重视宣传,为了能够收到更好的效果,寻找好的宣传平台更为重要[1].虚拟现实技术应用于学校,实现虚拟校园,能够方便真实地展现学校的软硬件教学资源,为社会各界对校园地理环境的认识提供了极大的方便.目前许多院校,校园电子信息化建设是其最薄弱的环节,虽然有些已经实现了360°在线校园游览,但大多数都是在2D基础上对图片做了技术整合处理.三维虚拟校园技术,已经成为各院校关注和研究的焦点[2].

本文采用新的模式完成三维虚拟校园的设计,在Maya平台下完成模型构建,使用Photoshop对纹理贴图进行处理,在Unity3D引擎下实现三维虚拟校园.设计制作过程简洁,交互程序设计难度低,整体设计过程质量高、效率高.具体涉及实际地形和建筑数据信息的采集、三维模型的构建和Unity3D技术编程等.

1 三维虚拟校园理论依据和设计

1.1 理论依据

严格遵循软件工程方法学的指导思想完成设计研究.在调查研究的基础上,依次进行需求分析、概要设计、详细设计、实现和测试,每个环节都要制定合理的时间周期和预计目标,每个环节都要严格审查,都要有完善的文档资料,注意存档,以方便后期的查阅维护[3].

1.2 设计

充分细致的研究三维虚拟校园平台的问题域;研究现状和相关理论基础;明确目前现有的平台具有的功能和不足,针对理论知识进行分析研究;对三维模型构建算法、纹理和Unity3D技术编程进行全面的分析并写出详细的设计方案;组织研究分工和拟定开发计划[4].

收集相关资料进行可行性评估;需求分析,模型构建;数据采集,三维模型构建;贴图制作及渲染;各功能模块框架的设计与创建;导入Unity3D引擎实现研究目标.

三维虚拟校园设计结构如图1所示.

图1 设计结构图

2 数据采集

通过卫星地图获取校园平面布局图,并实地考察对校园区域进行分布,用于指导真实数据采集和模型构建.对采集的真实数据进行处理,整理拍摄的照片,使用Photoshop进行纹理处理,根据校园区域建立照片和纹理库.

使用数字高程模型和数字正射影像构建地形.根据划分的区域确定建模范围,裁剪数字高程模型,使用GIS将数字高程模型和数字正射影响置于统一坐标系,修改相应属性参数,生成地形模型,使用Maya将地形转换成三维地形模型.该方法构建的模型真实、速度快、精度高.

参考卫星地图,先对校园区域主要道路进行规划,以道路为参考线,建立每个主题建筑和景观建筑,对点的高度属性设置来体现地形的高低起伏.地形实体——绿化树木、小品景观等,结合实际采集数据在Maya中完成模型构建.

3 三维模型构建

图2 模型分类图

纵观整个虚拟系统,模型的构建工作量最大、最繁琐、历时最长.主要涉及模型分析构建和纹理贴图的处理.主题建筑模型的构建难度最大,虽然都是有简单几何体组成,但是各建筑的形状不同细节表现也不同.为了方便场景构建,对场景区域进行了划分,在建模过程中基于场景区域完成了地形坐标对应.具体区域模型如图2所示.

使用相机实地拍摄图片,根据纹理图片的格式要求,主要从色彩和图像两个方面进行处理,按照指定格式保存,按照区域划分统一命名,将相关信息记入纹理说明文档,最后导入Unity3D纹理库进行统一管理.

4 系统实现

系统交互控制和逻辑处理采用Javascript、C#技术实现,在Unity3D引擎平台下进行开发[5].系统中主要的技术有:系统UI、屏幕自适应和主菜单和角色自动巡航技术.

4.1 系统UI

在Photoshop和Fireworks设计平台下完成UI设计创作.该环节UI中包括欢迎界面、主UI界面、交互按钮设计、信息浏览UI等,具体涉及用色、图片处理、文字显示效果设计.

在Unity 3D中使用GUI.DrawTexture()方法实现图形的绘制,WaitForSeconds()方法实现欢迎窗口的时间等待,使用GUI.Button()方法实现交互按钮的绘制等.使用C#语言编码,核心代码如下所示.

void DrawMainMenu() {

GUI.DrawTexture(new Rect(0, 0, 854, 480),BGTex);

if(GUI.Button(new Rect(0,205,345,50), startBtn, btnStyle)) {

if(PlayerPrefs.GetInt("effect") != 1) GetComponent().PlayOneShot(btnSoundEffect);

Application.LoadLevel("qdc");

}

……

}.

4.2 屏幕自适应和主菜单

使用Matrix4x4.TRS()方法实现GUI的自适应[6].通过变量num的值来访问不同方法,当num值能被3整除时,调用DrawMainMenu()方法实现主菜单的绘制,当num值除以3余1时,调用DrawHelp()方法实现帮助界面的绘制,当num值除以3余2时,调用DrawAbout()方法实现关于界面的绘制.DrawMainMenu()方法主要完成主菜单中开始按钮的绘制和开始按钮事件的处理、设置按钮的绘制和设置按钮事件的处理、帮助按钮音乐开关按钮音效按钮的绘制及其事件的处理.使用C#语言编码,核心代码如下所示.

void OnGUI () {

GUI.matrix=Matrix4x4.TRS(Vector3.zero,Quaternion.identity,newVector3(horizRatio,vertRatio,1));

……

}.

void DrawMainMenu() {

GUI.DrawTexture(new Rect(0, 0, 854, 480),BGTex);

if(GUI.Button(new Rect(0,205,345,50), startBtn, btnStyle)) {

if(PlayerPrefs.GetInt("effect")!=1) GetComponent().PlayOneShot(btnSoundEffect);

Application.LoadLevel("qdc");

}

……

}.

4.3角色自动巡航

定义三个变量用于表示人物的站立、行走和奔跑,并设置人物的初始状态为站立状态[7].定义一个变量用来记录鼠标点击的3D坐标点,按小鼠标左键后,从摄像机的坐标点向鼠标点击的坐标点投射一条射线,当射线投射到一个场景对象,得到该对象的3D坐标点.判断鼠标单击还是双击,如果双击则驱动人物进入奔跑状态,如果单击则人物进入行走状态.核心代码如下所示[8].

public class MoveController : MonoBehaviour

{ ……

void Update ()

{ if(Input.GetMouseButtonDown(0))

{ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHit hit;

if (Physics.Raycast(ray, out hit))

{ point = hit.point;

transform.LookAt(new Vector3(point.x,transform.position.y,point.z));

}}}

…… }.

5 系统实验

基于以上设计思想和实现方法,以青岛理工大学琴岛学院为设计创作对象,实现了基于Unity3D交互式虚拟校园平台.

使用Maya结合3D max实现模型构建.构建校园的模型是一个庞大的工程,具体包括校园的主体建筑、园林景观、校园湖泊、山石景观、小品建筑等精致模型构建.采用实景拍摄采集真实照片,后期通过Photoshop合成处理,完成贴图制作,这样基本还原了现实场景,保证了场景的真实性,符合虚拟现实制作要求.校园中心楼的模型构建如图3所示.

图3 中心楼模型

在Unity3D中实现场景设计.首先,通过卫星地图对校园平面结构进行划分;其次,在Unity3D中创建地形,使用地形笔刷构造湖泊和起伏路面;第三,将设计的主体建筑模型导入U3D,将其植入场景,参考百度地图调整各自大小方向位置,并调整各模型的纹理和材质球;第四,导入系统资源和素材资源,实现树木、花草、湖水等环境对象的创建;第五,植入天空盒,以备实现天气环境的变换;最后,导入第一角色控制器,将其初始定位在校园门口,以便受程序控制完成校园漫游.主场景区域设计结果如图4所示.

图4 主场景设计

通过程序设计实现交互,完成漫游环境的切换,满足不同用户的要求.实验证明,本文提出的基于Unity3D三维虚拟校园平台,交互性强,真实度高,设计制作过程相对简单.使用Unity3D的物理特效、场景切换和自动巡航等技术,能够完成超真实、高仿真的物理效果.该三维漫游平台功能强大,交互性强,根据用户的需求可以在此基础上进行二次开发.

6 结束语

基于Unity3D技术结合C# 、Javascript程序设计语言完成交互式三维虚拟校园漫游平台.在Unity3D平台下完成交互界面生成、场景地形和相关物理特效,如声音、湖泊波浪、花草随风摆动、碰撞和重力等.通过程序设计完成交互菜单、系统设置、手动控制漫游、自动巡航漫游和场景切换等功能,逼真形象的满足了用户视觉上的需求.本文研究设计的三维虚拟校园平台运行情况较好、较稳定,场景模拟真实形象,展示内容丰富,取得了较好的仿真漫游效果.

[1] 宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社2013.

[2] 吴亚峰. Unity 3D游戏开发技术详解与典型案例[M]. 北京:人民邮电出版社2014.

[3] 吴亚峰. Unity 3D游戏游戏案例开发大全[M]. 北京:人民邮电出版社2015.

[4] 李瑞森.Unity3D游戏场景设计实例教程[M]. 北京:人民邮电出版社2014.

[5] 李梁.Unity3D手机游戏开发实战教程[M]. 北京:人民邮电出版社2016.

[6] 王洪源.Unity3D人工智能编程精粹[M]. 北京:清华大学出版社 2015.

[7] 陈诚.三维校园的开发与设计全景校园虚拟漫游[D].武汉:武汉科技大学,2010.

[8] Rikk Carey, Gavin Bell.The Annotated Vrml 2.0 Reference Manual[M]. Addison Wesley, 1997.

Design and Research of Interactive 3D Virtual Campus Platform Based on Unity3D

SONG Chuan-lei LIU Jun-ting ZHANG Guang-liang Zhang Xiu-guo

(Qindao School, Qingdao Technological University , Qingdao 266106, China)

In order to improve the 3D virtual campus system deficiency and interaction etc, proposed the realization method of 3D virtual campus based on the Unity3D.First, Investigating the actual terrain and collecting real data information,constructing scene terrain and building models;second, import the Unity3D platform, after the second development, constructing the three dimensional scene and the effect of three dimensional physical simulation etc.The system use the data is real and effective, it is better to complete the indicators of the three dimensional virtual campus,the 3D virtual wandering is simulation and the effect is real.

3D virtual campus, Unity3D, 3D model, simulation

2016-12-26

山东省高等学校科技技术项目(J15LN79)资助

宋传磊,E-mai:114970184@qq.com.

TP311.5

A

1672-6634(2017)01-0102-05

猜你喜欢
漫游纹理按钮
当你面前有个按钮
基于BM3D的复杂纹理区域图像去噪
使用纹理叠加添加艺术画特效
霹雳漫游堂
TEXTURE ON TEXTURE质地上的纹理
死循环
NASA漫游记
消除凹凸纹理有妙招!
内心不能碰的按钮
边走边看:漫游海底 梦想成真