2024年4月20日发(作者:华为荣耀40手机价格及图片)
软件开发与应用
信息与电脑
China Computer & Communication
2019年第23期
沉浸式虚拟校园仿真系统交互设计
张畅维 李红斌 谭春鹏
(武汉科技大学 计算机学院,湖北 武汉 430070)
摘 要:
在本设计中,笔者结合Unity3D引擎和HTC Vive头盔,对沉浸式虚拟校园仿真系统的设计和构建进行研究
和探讨。通过3D建模技术在虚拟世界中模拟真实校园的场景,运用HTC Vive基站的定位技术,使系统的空间和物体比
例与现实世界保持一致,通过C#编程实现校园场景的移动观察以及互动,将有较强沉浸式体验的虚拟世界呈现给使用者。
关键词:
虚拟现实;HTC Vive;Unity3D;校园漫游;3D建模
中图分类
号:TP391.9 文献标识码:A 文章编号:1003-9767(2019)23-076-04
Design and Implementation of Virtual Campus Roaming System Based on
HTC Vive
Zhang Changwei, Li Hongbin, Tan Chunpeng
Abstract:
In this design, the authors use Unity3D and HTC Vive to study and discuss the design and implementation of virtual
(College of Computer Science, Wuhan University of Science and Technology, Wuhan Hubei 430070, China)
campus roaming system. Through 3D modeling technology to simulate the real campus scene in the virtual world, combined with the
through C # programming to realize the free movement in the campus scene and with the real world. The function of environmental
interaction brings users a strong immersive experience.
Key words:
virtual reality; HTC vive; Unity3D; campus roaming; 3D modeling
大的物理引擎等,完成的作品可发布到Windows、Android、
Mac等平台,兼容性较强
[3]
。
positioning technology of HTC Vive base station, the proportion of space and objects in the game is consistent with the real world, and
0 引言
虚拟现实技术又称VR技术,它是使用3D开发引擎和
3D建模技术搭建三维虚拟世界,通过头显、操作手柄、定位
设备等将用户带入沉浸式虚拟场景,并在这个虚拟场景中进
行一系列交互操作的技术。
自虚拟现实技术开创以来,多样化的虚拟现实设备如雨
后春笋般层出不穷。其中以HTC Vive为平台的虚拟现实应
用越来越丰富、越来越新颖
[2]
。与传统的鼠标、键盘等输入
设备操作不同,HTC Vive虚拟现实系统使用与头盔配套的手
柄设备,通过肢体动作和功能按钮与虚拟场景物体交互,如
置身虚拟世界之中,增强了沉浸体验感,且操作易于操控。
Unity3D是一款3D开发引擎,可以为开发人员提供3D
交互开发环境,包含优美的图形界面、完备的交互功能、强
[1]
1 系统的设计与实现
沉浸式三维虚拟校园仿真系统运用Unity3D引擎开发和
设计,使用3ds max建模软件搭建场景,通过HTC Vive 柄
结合头盔进行操作
[4]
。测量校园建筑真实数据后,缩小相应
比例,在3ds max中建立校园模型,使用实景拍照等方式获
取图片素材,模型贴图烘焙后,最后导入Unity3D中,结合
HTC Vive设备进行开发。该系统的功能结构如图1所示。
开发过程分为以下3个步骤。(1)设计校园模型:包
括测量建筑物尺寸比例,绘制校园草图,利用三维建模工具
3ds max制作教学楼等建筑的三维模型,搭建整个校园场景。
(2)交互功能实现:在Unity3D中导入模型,通过编程来
基金项目:
2018年度国家级大学生创新创业训练计划项目(项目编号:2)。
作者简介:
张畅维(1997—),男,湖北武汉人,本科在读。研究方向:软件工程。
谭春鹏(1998—),男,湖北宜昌人,本科在读。研究方向:信息安全。
通讯作者:
李红斌(1973-),男,湖北应城人,硕士研究生,讲师。研究方向:虚拟现实、图像处理。E-mail:lihongbin@
。
— 76 —
2019年第23期
信息与电脑
China Computer & Communication
软件开发与应用
设计场景中各种物品的交互功能。(3)实现沉浸式互动:
使用SteamVR插件将电脑和HTC Vive设备进行连接,编写
相关的脚本,将场景在HTC头盔上显示,就实现了校园的
互动功能。具体流程如图2所示。
Void OncollisionEnter(Collision c)
{
ponent
color=;
(“1”);
=;
}
voidOnCollisionExit(Collision c)
{
图1 功能结构图
ponent
color=;
//=;
图2 开发流程图
(“2”);
}
2.4 相关插件
校园VR漫游使用到的插件包括SteamVR和VRTK组件,
可以在素材商店找到。
VR插件配置步骤如下:(1)设置SteamVR。SteamVR
SDK是一个由Valve提供的官方库,以简化Vive开发。当
前在Asset商店中是免费的,它同时支持Oculus Rift和HTC
Vive。同时选中[CameraRig]和[SteamVR],将它们拖到结
构窗口,调整坐标位置使其Y坐标为0。(2)导入VRTK。
将VRTK插件包导入场景之中,为摄像头添加胶囊碰撞器,
并把大小调整为一致,同时调整两者的世界坐标和主相机一
致。转动头部就可以观察场景四周。
2 系统的关键技术
沉浸式虚拟校园仿真系统还原了校园的环境,提供了场
景互动功能,突破性地使用了虚拟现实头盔设备,与传统的
校园漫游相比增加了沉浸式体验,极大地增强了游玩效果。
该系统采用了以下关键技术。
2.1 HTC Vive沉浸式场景
用户使用HTC Vive设备的手柄和头盔,按动手柄上不
同的按键,可以实现虚拟现实场景的沉浸式交互体验。比如
将PAD键按住不放时,手柄前端会发射一条射线指向地面,
放开PAD键即可传送到指定的位置
[5]
。当用户转头或者旋转
身体时,头盔的视角也会随之改变,用户的沉浸感也随之提
升。在场景中进行互动需要编写C#脚本。
2.2 3D抓取
3D抓取技术让用户不仅可以在场景中游览参观,还可
以使用HTC Vive手柄抓取场景中的物体进行互动。基本思想:
给要拾取的物体设置一个标签,然后在手柄上添加写好的抓
取脚本,这个脚本用于识别物体上的标签;将手柄移动到要
抓取的物体上,如果物体识别为可以抓取时,按住手柄侧边
的Grip Button,就可以抓取物体。
2.3 碰撞检测
Unity3D提供了功能强大的内置组件,碰撞器就是其中之
一。碰撞器在对象之间发生碰撞行为时生效。物体之间发生
碰撞就会被碰撞器检测到,从而触发物理引擎。内置的碰撞
器有盒子碰撞器、胶囊碰撞器、网格碰撞器、球形碰撞器等,
每种碰撞器形状不同,大小可调整,用于适应不同形状的物体。
碰撞器实现步骤如下:(1)在模型上添加碰撞器,调
整碰撞器的大小与模型保持一致或者相似;(2)检查碰撞
器的触发器属性是否勾选,如果没有就勾选,表示将这个物
体设置为触发器;(3)将C#脚本绑定到对象上。
示例代码:
3 注意事项
3.1 校区建模存储管理要求
在模型制作过程中,CAD和3ds max单位要求统一
为m(米);模型制作中不能使用镜像、缩放复制;贴
图绘制要统一颜色,不能使用多维子材质球;存储命名也
是比较重要的,如果命名不当,后期漫游合成会出现贴图
丢失的情况。模型命名要求使用楼名简称加数字符号,例
如20181010HDL;纹理命名要求根据模型命名进行,例如
20181010HDL001,每张纹理名称都以模型命名基础加001、
002、003……。模型使用归档存储方式,防止更换电脑造成
贴图丢失。
3.2 校区文理材质贴图制作
在虚拟校园漫游系统中,需要呈现整个校园环境。为达
到这一目的,就要依靠大量的真实拍摄图片,包括各个角度
及局部的拍摄图片。图片要用到模型中进行仿真贴图制作,
故图片采集应尽量排除杂质的干扰,比如阴影、遮挡等,以
减少图片后期处理的工作量。拍摄图片时应当注意建筑物的
整体造型与局部造型。此外,在贴图处理颜色校正时所有同
— 77 —
软件开发与应用
色建筑的贴图颜色要统一。
信息与电脑
China Computer & Communication
2019年第23期
4.3 Unity3D制作
(1)将制作好的模型导出为FBX格式文件,导入
Unity3D中,调整物体大小,使其和场景中其他物体比例保
持一致,调整transform属性中的scale数值即可。
(2)制作场景地形,使用Unity3D内置的Terrain组件,
设计地面,调整大小,加上材质,放置在场景中;制作主相
机镜头效果,让场景更美观;在场景中添加方向光,以调整
亮度;在场景中布置点光源,一凸显细节;添加天空盒子和
第一人称移动控制器。
部分代码如下:(以下是镜面反射效果代码)
// 按需要创建要使用的对象
Private void CreateMirrorObjects(Camera,out Camera
reflectCamera)
{
reflectionCamera=null;
//反射渲染纹理
if (!m_ReflectionTexture‖m_OldReflectionTextureSize!=m_
TextureSize)
{
if(m_ReflectionTexture);
Destorylmmediate(m_ReflectionTexture);
m_ReflectionTexture=new RenderTexture(m_TextureSize,m
TextureSize,16);
m_=“__MirrorReflection”+Geti
nstanceID();
m_ PowerOfTwo=ture;
m_ags=ve;
4 虚拟现实校园漫游系统的实现
4.1 资料准备
为了还原真实校园场景,需要准备两种资料:(1)校
园场景分布图:在搭建场景之前,需要知道校园中建筑物的
造型、比例以及大致分布,然后通过建模来模拟出整个场景;
(2)贴图:在模型上赋予贴图,通过渲染来模拟出真实的
场景效果。同时还需要将贴图分类保存,按文件夹存放,同
一模型的贴图和该模型一起放在一个文件夹内,方便后期随
时取用。
4.2 模型构建
搭建校园场景时,如果模型数量过多,同时单个模型面
数过多,会极大地加大系统加载的负担。为了避免这种情况,
应把整个校园场景分成几个子场景,每个场景包含一部分的
校园模型,通过在每个场景中触发场景跳转按钮进入其他场
景,来提高运行速度和流畅度。按照校园分布图对场景全面
布局,然后对校园场景进行细节调整。
如图3至图5所示。
模拟的校园场景
图3 校园场景a
m- Mode=ar;
if(m_ReflectionDepthTexture)
Destoryimmediate(m_ReflectionDepthTexture);
m_ReflectionDepthTexture=new RenderTexture(m_
TextureSize,m_TextureSize,0,);
m_=“__MirroReflectionDe
pth”+GetinstanceID();
m_rOfTwo=ture;
m_ags=HideFlags.
DontSave;
m_Mode=FilterMode.
Bilinear;
m_OldReflectionTextureSize=m_TextureSize;
}
(3)编写包括传送、抓取物体等的交互脚本,传送的
图4 校园场景b
图5 运动场场景
脚本用于在场景中自由选择游览和观察的位置和角度;抓取
— 78 —
2019年第23期
信息与电脑
China Computer & Communication
软件开发与应用
脚本使用户在漫游过程中可以和场景互动:用手柄抓取场景
中的物体,然后对其进行互动操作,比如扔出去等。在抓取
物体时需要知道物体相对于地面的位置,同时知道物体和相
机的相对位置。计算平面位置代码如下:
private Vector4 CameraSpacePlane(Camera cam,
Vector3 pos, Vector3 normal, float sideSign)
{
Vector3 offsetPos = pos + normal * m_
图8 教室场景AI互动
ClipPlaneOffset;
Matrix4x4 m = oCameraMatrix;
Vector3 cpos = lyPoint(offsetPos);
Vector3 cnormal = lyVector(normal).
return new Vector4(cnormal.x, cnormal.y,
4.4 手柄控制移动
场景的主要功能是用户使用手柄进行游览和交互,该功
能通过手柄和头盔结合,控制头盔上的主相机在场景中移动,
实现使用者以第一人称视角在虚拟校园中游览。场景中的基
本移动操作,使用到了点渲染器(用于发射射线)、直线渲
染器(用于渲染射线形状和颜色等效果),以及基本传送组
件等脚本组件。添加点渲染器和直线渲染器到手柄,同时将
直线渲染器赋值给点渲染器用来渲染射线,检查Enable是否
启用,如果没有就勾选。按住PAD键就可以发出射线,松开
后就能传送到指定地点。
normalized * sideSign;
cnormal.z, -(cpos, cnormal));
}
(4)在相机空间中计算平面的各位置和法向量,除此
之外场景中还有一些AI,包括路边聊天的人、操场上跑步的
人、健身的人、教室里学习的人等,一定程度上还原了真实
校园场景。AI互动场景如图6至图8所示。
AI的设计思路:在Update函数中按帧调用代码段,通
过动画播放时间检测该动画是否执行,并且设置一个timer
计时器,记录动画的播放时间,播放完毕后再次执行,并随
机播放下一个动画。
5 结 语
本文使用3ds max软件建模进行校园场景的真实还原,
使用Unity3D引擎进行开发,结合HTC Vive设备实现了虚
拟校园的多场景、多角度交互沉浸式漫游体验。加入了丰富
的交互功能,使场景中大部分物体和人物都可以交互,生动
模拟了校园生活的真实氛围场景。同时还讨论了搭建虚拟场
景的一些核心技术,这些技术在虚拟仿真实验和教学中也同
样适用。
参考文献
[1]肖建良,张程,李阳.基于Unity3D的室内漫游系统[J].
图6 校园场景AI互动
电子设计工程,2016(19):54-56.
[2]朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系
统应用,2012,21(10):36-38.
[3]刘海川,王小鹏,王磊.虚拟校园模型构建及优化[J].
电子科技,2010(11):1-4.
[4]冯裕良.VR虚拟现实设计研究[J].赤峰学院学报:自
然科学版,2017(5):126-127.
[5]张扬.虚拟现实技术在电子游戏中的应用[J].电脑知
识与技术,2012(7):1624-1625.
图7 运动人物AI互动
— 79 —
发布者:admin,转转请注明出处:http://www.yc00.com/num/1713617498a2284709.html
评论列表(0条)