龔明東,叢眸,韓睿鵬,羅燁,李玲玲,李沂洋
(長春理工大學計算機科學技術學院,長春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 旋轉和縮放操作后