基于Unity3D虚拟空间交互系统

2023-10-31 06:58:12
信息记录材料 2023年9期
关键词:碰撞检测虚拟空间虚拟现实

高 强

(山西职业技术学院 山西 太原 030006)

0 引言

随着计算机技术的发展,借助Auto CAD、3DMAX、MAYA等计算机辅助设计软件已经可以构建出十分逼真的三维虚拟空间,并将其广泛应用于工业制造、建筑设计等专业领域。但是采用上述方法所构建的三维虚拟空间都是静态空间,不具有交互功能,用户只能通过固定视角对局部空间进行观测,且不能对数据进行动态查询和处理,因此在实际应用中用户还需要辅助人工操作进行图像拼接和数据采集。针对这一技术缺陷,本研究结合虚拟现实技术,基于Unity3D开发引擎设计了一个虚拟空间交互系统,在构建好的三维虚拟空间基础上增加了场景漫游、模型编辑、数据管理等动态交互功能。

1 关键技术概述

1.1 三维建模

三维建模用于虚拟现实场景中所有三维素材的设计与制作,常用软件有Auto CAD、3DMAX、MAYA等,三维建模的主要方法有2种。第一种是人工建模,也就是通过人工操作上述软件,进行模型的设计构建、材质绘制等。Auto CAD的模型构建方法是先通过图形绘制命令生成准确尺寸的二维图形,再依据高度标注等参数转换为三维模型,适用于建筑模型、工业零配件模型的制作;3DMAX、MAYA软件是基于几何体方式直接进行三维模型的制作,通过几何面片的拼接、编辑生成各种形态的模型体,并提供有材质管理器、粒子特效、场景光源等工具,适用于大场景、人体等复杂模型的构造[1]。第二种是通过三维扫描实现模型重构,利用三维扫描设备对真实物体进行数据采集,再通过模型重构算法转换为数字化模型,适用于仿真要求度高的模型制作。

1.2 虚拟现实技术

虚拟现实技术是一种计算机仿真技术,通过三维建模、计算机编程等方式实现对真实世界的数字化模拟[2],用户可以配合相应的虚拟产品对数字环境进行虚拟体验和交互,如虚拟场景漫游、光源变化、虚拟物品操作等。虚拟现实技术主要由硬件部分与软件系统两部分组成。硬件部分主要指的是VR眼镜、手柄等设备[3],它是虚拟软件系统运行的物理载体,通过左右眼分开成像的光学原理在人眼中呈现出立体的视觉效果,同时配合传感器、VR手柄就可以与虚拟场景进行人机交互。软件系统又分为前端与后端系统两部分,前端系统负责三维场景渲染、用户交互和业务逻辑处理等功能的实现,后端系统负责三维场景的图形运算和数据库管理[4]。

1.3 Unity3D引擎

3D引擎是虚拟现实软件系统开发的核心工具,负责场景搭建、交互程序设计、业务逻辑控制、前后端数据通信等功能的实现,主流的常用软件为Unity3D、UE4,这两款3D引擎软件最初主要用于三维游戏的设计、开发,其中Unity3D具有跨平台部署、多种编程语言的程序库支持、物理属性模拟、粒子特效等技术优势,且匹配有丰富的第三方资源库和多种第三方软件工具的通信接口,使其在虚拟现实技术领域也快速得到了广泛应用,此外针对数据通信,Unity3D还提供了MySQL与SQLite两类数据库接口。

2 虚拟空间交互系统的开发需求分析

2.1 功能需求

(1)交互性功能需求。允许用户对虚拟空间进行各种交互操作,包括二维/三维视图切换、场景漫游、建筑元素的移动/编辑、建筑材质更换、光照效果切换、视角切换等。

(2)动态数据管理需求。包括用户数据管理、系统数据管理、专业数据管理等,用户数据管理指的是系统用户的基本信息管理;系统数据管理包括系统设置参数、通知消息、日志,以及系统备份恢复记录等数据的管理;专业数据管理是指虚拟建筑空间规划的测量数据、用户标注数据等信息的管理。

(3)粒子效果与物理属性的动态模拟需求。允许用户通过粒子效果切换实现对自然环境的风、光、雷、电、火等效果的模拟,通过物理属性设置实现虚拟空间中物体碰撞、摩擦等物理效果的模拟。

(4)文件格式的解析需求。虚拟空间系统涉及了大量的三维场景、模型、贴图等素材资源,还涉及了不同软件开发平台下多种文件格式的数据交互与转换。Unity3D所支持的音频类文件格式有原生音频WAV、AIFF,压缩音频MPEG、Ogg等,模型类资源的文件存储格式为FBX,贴图文件存储格式有PNG、JPG、TGA、DDS等[5]。因此系统还需要具备文件格式的解析功能,以实现各种数据文件格式的动态交互。

2.2 性能需求

(1)系统实时性。由于系统涉及大量三维数据的可视化处理,特别是在空间动态变换的情况下,场景、模型的实时渲染需要消耗大量的运算资源,一旦资源调度不合理,就会产生明显的延时,甚至宕机,因此保障系统的实时性是十分必要的。

(2)数据安全性。虚拟空间交互系统应用于专业领域时,相关数据多属于商业数据,在数据的安全性方面要求要高于一般的用户数据,因此在数据安全性方面需要具有完善的保障机制,包括用户数据合法性验证、数据操作日志管理机制、数据安全备份与恢复机制等。

(3)系统的稳定性。系统稳定性是对系统综合性能的一种客观评价,评价指标包括系统的平均无故障时间、平均故障修复时间、平均故障间隔时间等。系统稳定性越高,系统的有效使用时间就越长,相对的技术投入成本也就越低。因此在系统应用过程中应建立相应的故障检测、用户反馈、设备维护等机制,以保障系统的稳定运行。

3 基于Unity3D的虚拟空间交互系统构建

3.1 系统架构与功能设计

基于Unity3D的虚拟空间交互系统的架构设计主要采用了客户端/服务器(Client/Server,C/S)模式。建筑空间规划设计VR系统架构设计如图1所示。

图1 建筑空间规划设计VR系统架构设计

3.1.1 客户端功能设计

客户端主要负责用户验证界面、UI界面、可视化场景界面的动态效果显示与业务逻辑管理。用户验证界面用于采集用户的登录信息,并通过服务器请求完成信息的合法性验证。UI界面负责各类交互控件的动态显示,Unity3D提供的UI控件包括文本控件、按钮控件、图像控件、滑动杆、富文本等[6],同时Unity3D还为这些控件配置了各种外观属性,如颜色、透明度、描边、阴影等,通过程序控制可以实现动态效果显示,如按钮按下/弹起的颜色变化、图像的动态填充等。可视化场景用于三维场景及模型的动态渲染与显示,三维场景包括天空贴图、树/草模型等,Unity3D提供有预置的天空盒、树/草模型和材质球[7],可以快速生成场景环境,并且具有较高的渲染效率;三维模型主要指场景中的建筑楼宇、地面装饰物、室内家居等,如果模型面数过多,且曲面较为复杂的话,会对系统的渲染效率产生一定影响。业务逻辑管理负责客户端界面的交互逻辑控制与业务数据的请求和响应,用户与系统的交互业务类型主要有2种,一种是针对三维场景和模型的交互,如场景切换、视角移动、环境变换、模型操作等,这类交互业务不涉及数据传输,因此通过客户端的程序设计即可实现逻辑控制;另一种是针对数据的交互,如用户信息验证、建筑信息查询、标注信息导入、用户自定义的模型素材文件导入,都涉及对底层数据库的访问,这就需要与服务器端建立连接,以实现数据传输。

3.1.2 通信连接的建立

Unity3D将软件系统封装为EXE、APK这2种文件格式[8],分别部署在PC客户端与移动客户端,通过套接字Socket与服务器建立连接通道进行实时通信。套接字Socket是一种专用于C/S系统架构的通信机制,将底层通信的各类协议进行了封装和屏蔽,并约定了统一的通信方式和一套通信接口。Socket的通信过程主要包括建立连接、传送数据和关闭连接3个步骤,首先调用Unity3D内置的Client函数,通过客户端中包含的Socket套接字与服务器建立连接,并将待处理的数据写入通用缓冲区ByteArray;接着调用OnClientEvent函数,对数据传输协议进行解析,以及数据的粘包和分包处理;最后调用socket.Close函数关闭连接,在关闭连接之前服务器还需向客户端发布一个订阅消息,告知客户端连接关闭。

3.1.3 服务器端功能设计

服务器端的功能设计包括资源调度、文件解析、图形处理与数据库服务等模块。资源调度模块主要负责监听各个客户端的数据连接请求,进行数据的解析处理,并按照一定的调度策略进行系统资源的调度分配。文件解析模块负责对用户导入的文件进行格式转换与信息解析,如三维模型文件、贴图文件、音频文件等。在图形处理模块中,服务器采用了图形处理专用引擎GPU进行三维场景、模型的图形计算和处理,包括顶点混合、纹理映射、贴图压缩等[9],以确保客户端系统能够保持稳定的图形渲染效率。数据库服务模块则负责服务器与数据库的通信、数据库的备份与恢复,当服务器解析的任务请求涉及数据库操作时,由服务器对数据库进行读写访问,并将最终结果返回至客户端。

3.1.4 数据库功能设计

数据库构建采用了关系型数据库管理工具MySQL,除了基本的数据存储、写入/读出功能,MySQL还提供有身份验证机制,以确保数据库的安全访问。Unity3D访问数据库首先需要导入MySql.Data文件[10],代码示例如下:

using MySql.Data.MySqlClient

其次,在Unity3D中通过自定义的MySQLBox类就可以对数据库进行访问。MySQLBox类内封装的Connect方法用于对用户的身份合法进行验证,Open、Close方法用于建立和关闭数据库连接,同时提供了多种数据的增删改查方法。

3.2 核心功能的实现

3.2.1 三维场景与模型的实时渲染

三维场景/模型实时渲染是指用户对三维场景或模型进行交互操作时,系统需要实时对场景材质和模型进行动态渲染和显示。为了确保图形处理的渲染效率,Unity3D提供了图形缓存、场景预加载、任务调度等保障机制,首先由服务器对当前加载场景中的所有图形进行预处理,再将其缓存至客户端,已供场景调度。在此基础上,还可以通过模型面数精减、分级渲染等方式进一步提升渲染效率的实时性。模型面数精减是指在三维建模环节就对模型不需要显示的面进行删减,如模型与地面接触的部分。分级渲染是指在三维场景中,依据视角的覆盖范围,对渲染对象进行分级管理,距离最近的对象为最高渲染级别,需优先保障渲染效率;距离较远且在视角覆盖范围内的对象,为中等优先级;而处于视角范围外的对象为最低级别,可采用静态渲染方式进行图像处理。

3.2.2 三维场景的交互碰撞检测

Unity3D提供了2种碰撞检测策略:射线检测与碰撞体检测。射线检测是由场景中的摄像机发出一条射线,场景模型与射线相交时即认为发生了碰撞,该策略适用于模型对象的拾取、更换材质、移动旋转等操作的碰撞检测;碰撞体检测是通过对模型表面生成的网格碰撞体进行相交检测,来判断物体是否发生碰撞,适用于场景、模型交互的边界控制,防止用户视角穿过模型或场景边界。

碰撞检测策略主要通过包围盒算法对物体进行相交检测。对于建筑类模型,因其外观形状较为规则,因此可以采用最为基础的算法—轴对齐包围盒(axis-aligned bounding box,AABB)算法进行碰撞检测。AABB通过生成规则的立方体网格对碰撞检测体进行包裹,计算立方体6个顶点的三维坐标最大投影值与最小投影值,确定包围盒的大小,该算法程序设计简单,执行效率高,但检测精度较低,适用于构造简单的静态模型检测,主要用于场景漫游的边界碰撞检测,防止视角穿过虚拟空间的边界。针对运动中的模型检测,可以采用方向包围盒(oriented bounding box,OBB)算法进行检测。模型在运动中随着位置、角度的变换,包围盒也需相应地做出改变,才能确保检测的正确性,OBB算法通过计算包围盒3个轴向与模型轴向的相交半径,确定模型的旋转角度,从而调整包围盒的变换方向,实现动态模型检测的效果。

4 结论

综上所述,计算机辅助设计软件Auto CAD、3DMAX、MAYA等虽然能够构建逼真的三维虚拟空间,但在动态交互与数据实时性管理等方面仍存在很大的技术缺陷,为了解决这一问题,本研究结合虚拟现实技术,设计了一个基于Unity3D的虚拟空间交互系统,并对其功能设计、三维场景实时渲染、碰撞检测等核心功能的实现进行了阐述,为之后的相关研究奠定了实践基础。

猜你喜欢
碰撞检测虚拟空间虚拟现实
虚拟空间设计中的关键技术分析
全新预测碰撞检测系统
基于虚拟化的相向行驶车辆间通信机制的研究
基于BIM的铁路信号室外设备布置与碰撞检测方法
Unity3D中碰撞检测问题的研究
电子测试(2018年1期)2018-04-18 11:53:00
风口上的虚拟现实
商周刊(2017年24期)2017-02-02 01:42:55
虚拟现实技术向科幻小说借灵感
海外星云(2016年7期)2016-12-01 04:18:00
BIM技术下的某办公楼项目管线碰撞检测
浅谈室内设计中虚拟空间的表现
雪莲(2015年8期)2015-11-28 19:34:33
HTC斥资千万美元入股虚拟现实设备商WEVR
IT时代周刊(2015年8期)2015-11-11 05:50:37