龚明东,丛眸,韩睿鹏,罗烨,李玲玲,李沂洋
(长春理工大学计算机科学技术学院,长春130022)
随着科学技术的不断发展,混合现实技术得到了广泛的应用,已经深深融入到了制造业、工商业、教育业、医学、建筑业,甚至是军事中。
HoloLens 是微软公司开发的一款Windows 10 的头戴式混合现实眼镜,它不仅可以把全息影像显示在现实场景中,而且还可以完全独立的使用,相当于一台小型头戴式智能电脑,同时还可以追踪识别用户的手势、声音和凝视等完成具体操作,让用户获得更加真实的沉浸式交互体验[1-2]。
目前的制造业的研发设计工作较多的还是通过三维的设计软件(如C4D、Maya、3DS max 等)和手工制图完成。而三维的设计软件在对所设计的产品的空间感受方面和对产品的实时交互方面还存在着一些弊端与不便利性。
为了解决普通协同设计时对产品的立体把控度不够导致的最终产品设计出来与预期的效果不符等问题。本文采用Unity 开发了一个基于HoloLens 的多人协同设计平台。
(1)3DMax 上制作的素材模型
(2)两台HoloLens
(3)一套服务器
(4)一个路由器
在Unity 上配对开发HoloLens 程序的相应环境。把需要的3D 模型和图片模型添加到项目资源文件夹后,在Unity 上创建一个面板,在面板上添加图片模型,并为相应的图片模型添加相应的点击事件,再在面板的相应位置用Ngui 建个Spirit 再建个label 在右边属性写上需要的提示性文字,以完成基本的用户界面的制作。本平台的用户基本操作框架如图1 所示。
为3D 模型添加刚体属性,使得用户的凝视、语音、手势等触发可以被模型感知;为3D 模型添加碰撞检测范围,用以判断模型之间的接触;为3D 模型加载移动、旋转、缩放等脚本,用以实现用户对模型的具体操作[3]。
在设置好所有的基本场景后,选择好相机和模块添加多人协同设计控制脚本,把全部的配置完成后保存并打包到程序包中,进行相关的发布配置,把应用渲染成3D 应用,连接好与电脑在同一局域网的两台Ho⁃loLens(相应的IP 地址在HoloLens 的配置中可以找到)并发布到每一台HoloLens 中。
图1 用户基本操作框架
本项目在多人协同设计控制脚本中添加了优先级处理模块,该模块提供了四种不同的优先级处理方式以供使用者选择,分别是先来先服务模式、多因素优先级权重模式、最短时间模式和混合模式。使用者可以根据自己的需要来选择或更改优先级处理模式,从而避免了不同设计参与者在不同情况下同时操纵同一模块时产生的并发事件。
先来先服务模式是根据先来先服务调度算法进行处理,越先进入房间者/越先开始整个项目者在并发处理时优先级越高。多因素优先级权重模式时根据优先级调度算法进行处理,会为操作者的操作经验、操作身份等多种因素分配权重和因素的优先级,最后通过权重来根据算法进行分配优先级,并且还运用了机器学习,来动态调整权重的分配。最短时间模式适用于已经进行过操作的并且有存档者,会根据使用者以往的操作时间来选择操作时间最短的人以便更快完成操作。混合模式既考虑了操作者的操作经验、操作身份等因素,也考虑了操作耗时,为这些因素都分配不同权重,最终判断优先级。
针对碰撞检测的问题,本项目在生成模型时就在每一个模型四周都生成一个矩形的检测空间。当不同模型之间的检测空间相互检测到彼此后,就会从服务器上调用Unity 中的碰撞检测脚本,从而实现碰撞检测,并且在检测到碰撞后,立刻固定住模型,以实现模型碰撞后的即刻停止。
图2 优先级处理模式选择
针对网络通信因扩充性差,带宽浪费严重,延迟导致多人协同设计过程实时性差等问题,需要设计一个合理的多人通信结构,本项目采用是双层通信结构,即客户端与服务器端、客户端与客户端之间。采用这种通信结构的优点是不但通信结构层次分明,而且可以降低整个协同过程中通信的负载。对于客户端与服务器端,采用的信息传递方式为一对一的传递,而客户端与客户端之间采用的是一对多的传递,一对多的通信方式采用的是组播方式,在一个协同创意的过程中,必须保证同一客户端只在唯一的多播组中。整个协同创意系统的实现均需要服务器端的参与,它可以为各个客户端分配组播地址并传递各用户的状态信息。通过并行分布的通讯技术,用户只需将更新状态发送给与其相连的服务器,再由该服务器将消息复制给其他远程服务器及相关用户。
将VR 素材模型进行编码打包,与控制模型及处理数据的程序共同发布为一个插件,当用户选择模型素材时,中央处理单元便用socket 技术调用插件,将需要的模型实时加载到本地,同时读取环境感知摄像头获取的环境三维数据和深度数据,当用户在创作空间进行点击生成按钮(在创作空间的中心位置设有一个生成按钮,点击即可生成被选择的模型),实时生成模型。
本项目深度分析了特定领域创意设计素材的特点,对海量素材库的分级存储机制进行了深入研究,并研究批量数据加载、交换分区机制、多层次的任务并行调度以及数据加载优化算法,最终实现创意资源分级存储、检索及并行装载。为了增强存储系统的智能化自主逻辑归档水平,通过对非结构化数据的描述内容进行抽离处理,利用句法分词、语义分析、相似度比较等自然语言处理操作,有效地提高了云端存储系统对自然语言的理解能力,从而有利于非结构化数据的云端自主逻辑归档。
素材库的资源整合主要是把分散的资源集中起来,把无序的创意资源变为有序,然而信息资源整合不仅要将分散的创意资源集中起来,更重要的是要描述同种类型的创意资源信息之间的关系,将不同类型的创意资源进行自动化聚类与分类从而方便用户获得按需、易扩展的创意资源。对于种类繁多的非结构化虚拟现实创意素材,本项目针对特定领域的创意素材的特点,研究素材聚类和检索机制,重点研究3 类创意素材分别为:创意工艺品、创意玩具、创意家具。针对当前创意资源信息标准化不明确,以及数据源的异构,网络环境、操作系统和硬件结构的异构等特点,本项目通过采用创意资源的集成技术达到资源整合的目的。不仅如此,虚拟现实创意资源集成技术需在分布式虚拟现实异构的网络环境下进行创意信息资源的整合,需要从分布的创意信息源中获得数据与应用服务,并且应使得整合模型具备一定的适应性和智能性。
计算机开发环境:Windows 10,Unity 5.3.8,Visual Studio 2017。
HoloLens:Windows 10,64GB 内存。
两位使用者分别使用一台HoloLens 进入本平台,然后可以实现创建房间、加入房间、设置用户名、设置人数和创建密码等操作。
当两位使用者加入房间后就可以选择需要的模型,在虚拟环境中通过手势生成模型,并且可以通过手势、语音和凝视等操作。图3 和图4 是使用者对模型的旋转和缩放操作,从图3 和图4 中可以看到当使用者用双手控制住模型后,触发了缩放脚本,使得模型可以随着使用者双手间距的扩张或收缩而整体增大或缩小;当使用者的双手控制住模型并进行旋转时,触发了旋转脚本,使得模型可以随着使用者的双手的旋转而旋转。
选择存档后,退出房间再次进入该房间时,可以看到模型与存档时一致;若没有选择存档,当房间中所有使用者都离开后,房间就会被自动回收。
本文为了解决普通设计时对产品的立体把控度不够等弊端,用Unity 开发了一个基于HoloLens 的多人协同设计平台,为用户提供了沉浸式的交互方式。通过3DMax 设计相应的模型并导入到Unity 的项目资源文件夹中,并通过加载不同的脚本以实现对模型的旋转、缩放和移动等功能。同时,实现了多人的协同设计,使不同用户可以同时在房间中进行创作[4]。
根据测试分析结果,证明了本项目可以有效的实现多人的混合现实的协同设计。目前本项目仍在进一步研究中,将会添加模型和对模型的不同操作,完善并优化模型之间的异构融合,最后还将把适用范围从局域网扩展到互联网,实现异地的多人协同设计。
图3 旋转和缩放操作前
图4 旋转和缩放操作后