田揚暢, 楊 路
(安徽公安職業學院,安徽 合肥 230031)
感知空間設計是知識傳遞過程的核心問題,當前的課堂教學以PPT等多媒體演示應用為主,配合屏幕顯示,輔以教師板書教學提供集體式的信息演示和展現服務。這種以信息展示和單向傳播為主的被動式感知空間缺乏沉浸感與交互性,難以激發和維持學生的學習興趣。針對上述問題,融合數據分析與增強現實技術設計了混合式感知空間應用,其具有的沉浸感、交互性等特征能夠增強感知體驗,激發學生學習的主動性,實現信息的接收和促進知識的遷移,提升教學效果,為培養具有較高專業素養人才隊伍提供保障。
增強現實(Augmented Reality,簡稱AR)是基于VR研究的技術,它能夠在現實場景中疊加虛擬空間,讓使用者處于一個虛實融合的沉浸式環境,借助虛擬空間包含的信息強化對現實場景的感知。采用數據分析技術分析教學情境下學生的需求,設計虛擬空間的內容和功能,再通過AR技術實現應用。課堂教學時,學生通過自帶攝像頭、顯示屏的硬件設備運行該應用,攝像頭掃描到標識物則在顯示屏顯示虛擬空間。在該虛實融合的混合式感知空間中,教學知識獲得了多重性表征,學生能夠以沉浸式、可視化的方式學習知識,通過自然的交互對虛擬空間施加作用,實現虛擬信息與現實信息的交互融合,進而提高對教學空間的使用度。
混合式感知空間應用設計可分解為2個部分,設計流程圖如圖1所示。
首先設計者應當以學生對感知空間應用的需求為基礎,確定標識物、虛擬空間所包含的對象和內容、交互形式等。需求分析包括數據處理與分析兩個部分:數據處理進行數據的解析過濾,清除重復數據,減輕分析負擔和提高效率。數據分析選用文本分析進行文本數據的量化,通過傾向性分析了解使用者的感情傾向,借助關鍵詞提取概括評價文本的大概內容,采用主題分析模型總結出需求結果。其次根據設計任務分解的信息點進行落地化處理,首先確定技術方案,之后搭建開發基礎,根據設計任務實現應用功能,完成設計。
收集學生對感知空間應用的需求,基于python進行文本分析確定應用的內容和功能。首先通過python pandas包的read_csv函數導入收集的文本信息,再通過to_csv函數按類別保存信息,編碼選擇UTF-8。然后基于文本的相似度去除重復數據,進行數據的預處理。接著采用ROSTCM6進行情感傾向性分析,利用機器分類把文本信息分割成積極、消極和中性的樣本?;谡齽t表達式修改數據,之后通過python的jieba包進行文本分詞,按某種規范把評論語句變換成詞的序列。分詞完成后把內容保存到信息變量中。最后是模型實現和分析總結,python的gensim自然語言處理包包含了LDA算法,所以模型實現采用LDA主題模型,經過LDA的主題分析聚合主題,調用show_topics方法展示評論主題的狀況,根據評論主題確定應用的標識物、內容等信息。本文以信息網絡安全監察專業《計算機網絡》課程的教學為例,根據LDA主題分析結果選擇課本圖片為標識物,顯示用的教學虛擬空間應包含圖片、文本、音頻、視頻和模型等對象,以圖片、文本、音視頻的形式展示教學知識點,模型用于加深學生的直觀印象,采用學生最為熟悉的手姿動作作為輸入的命令交互方式。
技術方案包括硬件設備與軟件環境兩部分。硬件設備用于啟動應用顯示感知空間,采用手持式智能手機設備。軟件環境用于實現應用設計,包括制作虛擬空間、標識物識別和命令交互等功能。在Unity3D中設計prefab格式的虛擬空間,包含圖片、音頻、三維模型等多種虛擬對象,采用C#編寫命令交互腳本,基于ARFoundation的ar tracked image manager實現圖片識別和虛實融合的顯示功能,完成設計。綜上所述,軟件開發環境采用Unity3D(2019)+ARFoundation+Python搭建。
(1)配置參數。啟動Unity3D,file->build settings,platform->android,點擊switch platform切換到android平臺,選中android圖標->other settings,取消多線程渲染,刪除vulkan,target api level和minimun api level都要選擇高于nougat的版本。點擊xr settings,勾選arcore supported。之后回到Unity3D主界面,Edit->preferences-> external tools,確保jdk和android sdk路徑正確。
(2)新建工程、導入插件、建立資源文件夾。建立工程,導入ARFoundation和ARCore XR plugin,在工程的assets文件夾下建立scenes、scripts和prefabs等資源文件夾,方便各類資源管理。刪除hierarchy窗口默認的main camera,右鍵XR導入ar session和ar session origin,完成開發基礎的配置。
(1) 虛擬空間。虛擬空間包含了文本、圖片、按鍵、音視頻和模型等多種虛擬對象,前三者通過UGUI提供的text、image和button控件實現,三維模型可采用現成的模型,或者在3D MAX等環境下自定義制作并導入Unity3D環境。音視頻對象是設計的重點,考慮到設計的AR應用可能涉及移動場合,采用共振音頻技術以保證良好的音頻效果。視頻對象要掛載Unity3D的跨平臺組件videoplayer,支持本地和http/https遠程播放兩種方式。把上述虛擬對象根據顯示需要布置好在空間中的位置,然后作為一個整體拖到prefabs文件夾下,完成prefab格式的虛擬空間設計。
(2)圖片識別。ARFoundation的圖片識別是依據參考圖像庫的信息實現的,首先要建立一個圖片參考庫,里面包含要識別的圖片信息。create->xr->referenceimage library建立圖片參考庫,名稱自定義。選中該參考庫->inspector->add image,添加要識別的圖片。之后選中當前場景的ar session origin對象,掛載ar tracked image manager組件。tracked image prefab用于設置要顯示的prefab格式的虛擬空間。當識別到圖片標識物則在屏幕的某個位置實例化該虛擬空間,實現虛實融合的效果。
(3)命令交互。命令交互包括觸摸類和位移類兩種,前者如觸摸button控件顯示信息,后者如移動縮放虛擬對象。觸摸類通過setactive方法實現,比如觸摸“使用幫助”(shiyongbangzhu)button控件顯示文本內容(help_text),初始化階段在start函數根據文本名稱help_text找到文本對象,執行help_text.setactive(false)隱藏文本。當學生觸摸“使用幫助”button控件,采用oncollisionenter函數,檢測到碰撞執行help_text.setactive(true),實現文本顯示。位移類通過Unity3D內置的input類自定義編程實現,代碼實現可分解為兩部分:①用于旋轉操作的rotateon方法,touch.deltaPosition.x控制旋轉,touch.deltaPosition存儲的數據是兩次檢測之間手指在屏幕上移動的位置,獲取到虛擬對象繞其本身Y軸旋轉的旋轉量,通過這個旋轉量就可以控制虛擬物體的旋轉。②用于雙指縮放和單指移動操作的zoomon方法。雙指縮放首先獲取每個手指的當前觸點與前一次檢測時的位置,然后分別計算當前兩個手指之間的距離與前一次兩個手指之間的距離,獲取兩次距離的差值,即手指縮放的度量值。如果當前兩指距離大于之前的距離那么在做放大手姿,反之在做縮小手姿。執行deltaMagnitudeDiff*mZoomSpeed*Time.deltaTime計算縮放量實現物體的縮放。單指移動先獲取fingerid,根據input.touchcount得到觸點個數,如果等于1表示是單點觸摸,那么再判斷touch.phase的狀態,如果是touchphase.moved,則表明正在進行單點移動操作,之后獲取方向位置信息并進行移位操作。
學生在智能手機端運行應用,攝像頭掃描到圖片標識物即在屏幕顯示感知空間界面,感知空間應用示例如圖2所示,學生可根據個人興趣,以自然的手姿方式與虛擬對象進行交互,如播放路由器使用視頻,移動查看路由器模型,觸摸按鍵查閱文本內容等。

圖2 感知空間應用示例圖
混合式感知空間應用是對現有課堂教學的一種輔助,最終目的是實現不同方式的優勢互補,而不是對傳統方式的全盤否定。當前設計的混合式感知空間應用自身也有很多不足,在使用的新鮮感消逝后,學生對課堂教學的專注度迅速下降,有的學生甚至用手機玩起了游戲,反而對教學產生了負面影響。因此,現階段混合式感知空間應用只是對傳統教學空間設計的一種有效嘗試,未來還需對軟硬件做進一步的優化以增強使用效果。