基于Unity3d 房间仿真的关键技术研究
2014-01-03韩桂明
韩桂明
(桂林电子科技大学信息科技学院,广西桂林,541004)
0 引言
虚拟现实技术今年来在计算机领域引起广泛关注,采用现代化的计算机技术生成逼真的视、听、触觉等多重感应的虚拟环境。随着社会的发展,虚拟现实技术在军事、信息技术等各个领域应用越来越广泛。
Unity3d 平台作为一种三维虚拟现实游戏平台,可以充分、实时的处理大量的三维模型。本文旨在Unity3d 平台上,对门关键技术碰撞检测展开研究及实现,包括碰撞区域触发和射线触发碰撞两种开门关门方式,还有自动开门和按键触发两种操作方式。
1 房间模型创建和Unity3d 场景建立
1.1 模型创建
在Unity3d 平台中对房间模型进行操作之前,首先在3DMax三维软件中建立教室房间的模型,包括房间的墙壁、窗户、门、地板和玻璃等模型,并赋予相应的材质,使房间模型呈现更加逼真。房间的模型如图1 所示:
图1 3DMax 房间模型
1.2 3DMax 软件和Unity 平台的衔接
本文讨论的三维房间模型是利用三维软件3DMax 完成建模和贴图后,导出为FBX 文件导入到Unity3d 平台中。在导出FBX文件之前,需要将3DMax 中的单位设置为m,并且Y 轴方向向上。
2 门对象的操作
通过在Unity 平台中建立C#脚本,并附到相应物体对象门上,可以实现开门关门和自动开启按键触发开启等功能。
碰撞区域触发可以实现自动开启和关闭门,也可以实现键盘触发开启和关闭门,这里选择碰撞区域触发自动开启和关闭门对象,射线触发碰撞按键触发开启和关闭门对象。
2.1 碰撞区域触发
所谓“碰撞区域触发”是指以门对象为中心,建立一个立方体碰撞区域,如图2 所示:
图2 场景中的碰撞区域
2.1.1 碰撞区域算法
碰撞区域的立方体区域有三维图形坐标,因此三维坐标变量分别设为,碰撞区域触发函数设为
F(X,Y,Z)=1 表示进入碰撞区域
F(X,Y,Z)=0,表示离开碰撞区域。
2.1.2 碰撞区域触发门对象程序流程
图3 碰撞区域触发门对象程序流程图
当第一人称的中心三维坐标在碰撞区域的范围之内,则表示进入触发区域,相应门对象会自动开启或者关闭。
2.1.2 碰撞区域触发C#脚本
2.2 射线触发碰撞
所谓“射线触发碰撞”是指获取鼠标的坐标,从Main Camera 到鼠标的坐标处发出一条射线,并用hit.collider.gameObject
.tag 判断是否扫描对象是Door,如果是,则执行相应的动作。
2.2.1 射线触发碰撞程序流程
图4 射线触发碰撞程序流程图
2.2.2 射线触发碰撞C#脚本
当扫描对象是门时,此时判断键盘P 是否按下,如果按下P,则门会开启或关闭。通过判断扫描对象、键盘按键P 以及门的状态,实现相应的开门关门功能。
3 结论
通过对门对象的碰撞检测关键技术研究,讨论并实现了虚拟现实在室内漫游和室内设计系统中的关键应用技术。实现了在Unity3d 中,通过键盘控制、检测门的状态,且给出了可行、高效的碰撞检测算法及其实现。
通过使用以上关键技术的室内设计和漫游系统,设计简单方便,可以进一步突出场景的真实感和实时性,功能更加完善,人机界面更加友好、互动性更强。另外本文讨论研究的关键技术可以应用于其它包括电子、科技、安全、医学成像等相关的虚拟现实和仿真。
[1] 卞峰,江漫清,桑永英,等.虚拟现实及其应用进展 [J]. 计算机仿真,2007(6):1-4.
[2] 倪乐波,戚鹏,遇丽娜,等.Unity3d 虚拟展示技术的研究与应用 [J].数字技术与应用,2010(12):54-55.
[3] 干建松.基于Unity3d 的室内漫游的关键技术研究 [J].盐城工学院学报,2011(4):56-59.