趙一江,余 超,于 清
(1.新疆大學(xué) 軟件學(xué)院,新疆 烏魯木齊 830000;2.新疆大學(xué) 信息科學(xué)與工程學(xué)院 多語種信息處理實驗室,新疆 烏魯木齊 830000)
虛擬現(xiàn)實(VR)是一種將計算機(jī)圖形技術(shù)與相關(guān)設(shè)備相結(jié)合,可為人們創(chuàng)造具有沉浸感、互動性和想象力的良好虛擬環(huán)境的仿真技術(shù)[1]。Unity3d 是一款流行的、免費的3D 游戲引擎,用于設(shè)計和構(gòu)建虛擬環(huán)境。與其他3D 設(shè)計應(yīng)用程序相比,這在很大程度上歸功于一個友好的用戶界面,用于設(shè)計內(nèi)容,以及一個強(qiáng)大的工具集,用于處理3D 環(huán)境的常見元素,如地形、物理、粒子效果、聲音、模型和動畫角色[2]。然而在使用過程中發(fā)現(xiàn),Unity3d 在語言字體方面還存在一些問題,其可以顯示常用的漢語、英語等字體,但是在少數(shù)民族語言上存在明顯的缺陷,如維語字體,它不支持維語字體的正確顯示,不利于維吾爾族同胞在教育、醫(yī)療等VR 活躍的行業(yè)受益。
在Unity3d 的研究中,文獻(xiàn)[3]探討國內(nèi)外虛擬現(xiàn)實技術(shù)用于語言教學(xué)的現(xiàn)狀與發(fā)展。文獻(xiàn)[4]對虛擬現(xiàn)實英語演講課堂的原理進(jìn)行分析,認(rèn)為虛擬現(xiàn)實技術(shù)能夠訓(xùn)練學(xué)生的應(yīng)激反應(yīng)能力。文獻(xiàn)[5]從認(rèn)知的角度探討了虛擬人與學(xué)生間的關(guān)系,表示學(xué)生能夠通過虛擬人實現(xiàn)自身認(rèn)知。文獻(xiàn)[6]利用虛擬現(xiàn)實技術(shù)的沉浸性,讓學(xué)生沉浸在語言學(xué)習(xí)環(huán)境中,與母語學(xué)習(xí)者進(jìn)行實時交流,為學(xué)生提供了傳統(tǒng)課堂無法提供的語言學(xué)習(xí)環(huán)境。文獻(xiàn)[7]利用虛擬現(xiàn)實技術(shù)還原真實口譯場景,消除學(xué)生譯員對口譯現(xiàn)場的陌生感,達(dá)到學(xué)生口誤次數(shù)下降、口譯綜合能力提升等效果。文獻(xiàn)[8]創(chuàng)建了虛擬現(xiàn)實語言學(xué)習(xí)生態(tài)模型,宏觀上強(qiáng)調(diào)語境對外語學(xué)習(xí)的重要性。文獻(xiàn)[9]介紹了生態(tài)、對話和分布式虛擬現(xiàn)實理論模型。
在國外,文獻(xiàn)[10]使用Unity3d 實現(xiàn)兩種印度語的開發(fā),即印地語和泰盧固語,幫助初學(xué)者使用虛擬物品標(biāo)識的方式來學(xué)習(xí)印度語詞匯。文獻(xiàn)[11]進(jìn)行了印度手語的開發(fā),使用Unity3d 設(shè)置動畫顯示所有不同手勢的動作數(shù)據(jù),幫助有障礙人群和正常人群的實時交流。
在字體研究方面,現(xiàn)在所使用的以阿拉伯字母為基礎(chǔ)的維吾爾文(簡稱傳統(tǒng)維文)由8 個原音、24 個輔音字母組成,自右向左書寫[12]。文獻(xiàn)[13]介紹了傳統(tǒng)維文與西里爾維文編碼字符之間的對應(yīng)關(guān)系與規(guī)則,提出了轉(zhuǎn)換的規(guī)則;文獻(xiàn)[14]中介紹了在Office 環(huán)境下不同傳統(tǒng)維文與Unicode 編碼字符之間的轉(zhuǎn)換;文獻(xiàn)[15]中介紹了傳統(tǒng)維文在搜索引擎系統(tǒng)中的轉(zhuǎn)換方法。
在字體庫方面,微軟提供了可正確顯示阿拉伯語的字體庫,會存在字符割裂的情況。對此問題Unity3d 資源庫中提供了字體資源包,可以解決字符割裂問題,但是在部分字符上會存在隨意替代的問題。因此,雖然有很多研究圍繞著這個問題展開,但是幾乎沒有一項完美解決維語在Unity3d 中正確顯示的問題,本文研究解決這個問題,從而幫助少數(shù)民族用戶尤其是維族用戶獲得虛擬現(xiàn)實方面的愉快體驗。
本文提出了在Unity3d 中維語的正常顯示方面的研究。首先需要了解Unity3d 中語言文字的顯示方式以及維語的構(gòu)成方式。項目在現(xiàn)實UI 界面時,默認(rèn)調(diào)用Unity3d 提供的Arial 字體,Unity3d 支持ttf、otf 格式的字體,字體文件放到Assets 文件夾下不論什么位置,Untiy3d 會主動為其生成材質(zhì)和貼圖,并且字體可以進(jìn)行屬性方面的設(shè)置,如粗細(xì)、呈現(xiàn)模式等,在打包部署時,可以將字體包一起打包安裝到用戶機(jī)器上。
使用Unity3d 默認(rèn)的字體在維語顯示上會出現(xiàn)顯示亂碼的情況,并且顯示順序也完全不同,有些字母還會被其他字母替代,導(dǎo)致單詞拼寫出錯。本文嘗試使用Unity3d 資源庫中的字體庫,以及在Visual Studio 中可以正常顯示的字體庫,但是都沒有完全解決問題。
最后選擇自行開發(fā)矯正字體。首先針對存在的問題進(jìn)行分析,發(fā)現(xiàn)現(xiàn)有的代碼對維語字母從基本區(qū)到擴(kuò)展的映射不全,根據(jù)維語Unicode 編碼方式補(bǔ)全了維語從基本區(qū)到擴(kuò)展區(qū)的映射,具體方法是將基本區(qū)和擴(kuò)展區(qū)的Unicode 編碼表存入在映射中,在輸入字符后將其逐個映射,之后對維語做了格式上的矯正,對輸入的維語按字母進(jìn)行切分,然后重排序,將其矯正成從右到左的顯示格式。之后導(dǎo)入維語.ttf 字體包,使其可以正常顯示。通過此方法將場景中涉及到的單詞語句都進(jìn)行了維語的矯正,使其在Unity3d 中正確顯示出來。
Unity3d 虛擬仿真引擎跨平臺開發(fā)功能強(qiáng)大,開發(fā)的項目支持多種平臺發(fā)布,包括PC 機(jī)、Android、iOS、Oculus 設(shè)備等。本系統(tǒng)采用開發(fā)硬件為PC 機(jī),開發(fā)完成后設(shè)置分辨率、畫面比、圖標(biāo)等進(jìn)行自定義發(fā)布,將項目打包加載到Oculus Quest2 虛擬設(shè)備。
所有維語顯示的方法結(jié)果對比如圖1 所示。
圖1 展示了詞語“維語”的維語寫法以及各種方法的顯示結(jié)果,初始字體顯示存在字符亂序、字母割裂的問題,如圖1a)中方框圈出了亂碼,橫線畫出了割裂字母,箭頭指示出字母順序的錯誤、正確寫法是從右到左;微軟字體存在順序錯誤、字母割裂的問題,如圖1b)中箭頭指示順序錯誤的方向是從左到右,正確方向是從右到左,橫線畫出了割裂的字母;Unity3d 資源庫中字體存在字符割裂和部分字符替換的問題,如圖1c)中方框畫出了替換的字母,橫線畫出了割裂字母;本文方法徹底解決了這些問題,使維語在Unity3d 中可以正常顯示,如圖1d)所示。
本文為進(jìn)一步驗證以上方法的有效性,設(shè)計開發(fā)虛擬超市購物系統(tǒng)。用戶首先在家庭場景中選擇任務(wù)難度,接受隨機(jī)任務(wù),記憶購買的物品,然后到超市場景中購買物品,返回交付任務(wù),經(jīng)過測試,所有內(nèi)容完成顯示正確,系統(tǒng)流程圖如圖2 所示。
圖2 虛擬超市購物系統(tǒng)流程圖
用戶戴上VR 設(shè)備之后,以第一人稱視角進(jìn)入虛擬家庭環(huán)境。選擇語言,可選項有中文和維語,選擇結(jié)束后進(jìn)行難度選擇,分為簡單、中等、困難。簡單任務(wù)為購買3 種放置在同一區(qū)域的水果蔬菜;中等任務(wù)為購買分布在不同區(qū)域的日常用品;困難任務(wù)為購買分布在不同區(qū)域的日常用品并在結(jié)賬時自行計算出賬目金額。如圖3 所示為維語選擇難度的界面。
圖3 維語難度選擇界面
在選擇完難度后,系統(tǒng)根據(jù)難度的不同隨機(jī)生成不同的物品,如圖4 所示,用戶記憶后前往超市場景購買。
圖4 系統(tǒng)自動生成維語待購買清單
在超市場景,按照實際情況設(shè)置了多個分區(qū),并在選擇維語后,用維語顯示分區(qū),如圖5 所示。
圖5 超市場景維語顯示分區(qū)
本文基于虛擬現(xiàn)實技術(shù),使用Unity3d 虛擬仿真引擎構(gòu)建高度逼真的仿真模型,對少數(shù)民族用戶語言文字和語音功能進(jìn)行探索性研究,成功顯示了維語文字,搭建了多語種的Unity3d 仿真系統(tǒng),具有支持少數(shù)民族用戶進(jìn)行用戶虛擬漫游、康復(fù)訓(xùn)練、教學(xué)時間、評估考核等功能。增強(qiáng)了新的體驗感,對虛擬現(xiàn)實技術(shù)在少數(shù)民族領(lǐng)域的發(fā)展具有重要意義。
本文目前只設(shè)計了兩個場景,以及一些場景中用到的詞語和語句,后期可以增設(shè)場景,支持多場景訓(xùn)練,增加詞匯和語言的表達(dá),可以再添加其他少數(shù)民族語言。
注:本文通訊作者為于清。