王 健 邵國強(qiáng)
摘要:介紹了虛擬現(xiàn)實(shí)技術(shù)在培訓(xùn)系統(tǒng)中的具體應(yīng)用,分析了虛擬培訓(xùn)系統(tǒng)的組成,選擇了OpenGVS和MultiGen作為虛擬培訓(xùn)系統(tǒng)開發(fā)平臺。并詳細(xì)論述了從場景建模到場景驅(qū)動的整個系統(tǒng)實(shí)現(xiàn)過程。
關(guān)鍵詞:虛擬現(xiàn)實(shí)培訓(xùn)系統(tǒng)場景建模場景驅(qū)動
基于虛擬現(xiàn)實(shí)技術(shù)的虛擬培訓(xùn)系統(tǒng)具有仿真性、開放性、超時空性、可操作性和安全性等特征,是傳統(tǒng)培訓(xùn)方式無法比擬的。目前,利用虛擬現(xiàn)實(shí)技術(shù)對員工進(jìn)行培訓(xùn)已經(jīng)成為一種趨勢。
1虛擬培訓(xùn)系統(tǒng)的組成
虛擬培訓(xùn)系統(tǒng)的組成框圖。整個系統(tǒng)主要分為兩大部分:場景建模和場景驅(qū)動。場景建模是將虛擬場景與對象通過數(shù)學(xué)方法表達(dá)成存儲在計算機(jī)內(nèi)的三維圖形對象的集合。在虛擬培訓(xùn)系統(tǒng)的實(shí)現(xiàn)中,一般可采用MultiGen Creator作為場景建模工具,通過實(shí)時方式完成場景模型的建立。場景驅(qū)動是根據(jù)所建立的場景模型以及場景中各類虛擬對象運(yùn)行時的狀態(tài)參數(shù)來生成實(shí)時視景的程序。其中:用戶接口模塊主要用于接收用戶發(fā)出的各項(xiàng)指令并把執(zhí)行后的數(shù)據(jù)、結(jié)果反饋給用戶;中間虛線圍繞的部分是系統(tǒng)的核心模塊,它把從用戶接口模塊接收到的各項(xiàng)信息經(jīng)過解釋后,向場景渲染或顯示模塊發(fā)出相應(yīng)的運(yùn)動指令,從而實(shí)現(xiàn)場景中物體的運(yùn)動控制以及場景視角的切換。
2場景建模
場景建模過程主要包括以下幾個步驟:
(1)數(shù)據(jù)采集。本系統(tǒng)模型的實(shí)體外觀與幾何形狀等數(shù)據(jù)主要來自設(shè)計圖紙和一些實(shí)物照片,紋理數(shù)據(jù)主要來自實(shí)地拍攝照片的處理。對收集到的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換和剪裁,并盡量使紋理數(shù)據(jù)量小一些。紋理文件名在整個數(shù)據(jù)采集區(qū)域內(nèi)必須保持唯一,以確保紋理與三維模型每一個面的對應(yīng):
(2)確定模型層次結(jié)構(gòu)。按其結(jié)構(gòu)進(jìn)行層次分解,并利用MultiGen建立了對應(yīng)的樹狀層次結(jié)構(gòu),直到底層分解到基本圖元結(jié)構(gòu);
(3)進(jìn)行可視建模。按照所確定的模型層次結(jié)構(gòu),逐層進(jìn)行可視建模,然后存儲為不同的mt文件:
(4)去除冗余多邊形。描述實(shí)體模型表面的數(shù)據(jù)經(jīng)常存在冗余現(xiàn)象。這里的冗余多邊形主要是指在實(shí)體外部觀察模型時那些看不到的部分。去除它們并不影響整體的視覺效果,還可以在很大程度上降低整個場景的復(fù)雜度;
(5)使用紋理映射。在對應(yīng)位置的多邊形表面上“貼制”紋理圖片,用來替代詳細(xì)的模型。這樣處理可以減少模型的多邊形數(shù)目和復(fù)雜程度,提高圖像繪制輸出時的顯示速度。只要視點(diǎn)不過于靠近實(shí)體,紋理映射就不會降低場景的逼真程度。
3場景驅(qū)動
我們雖然建立了虛擬培訓(xùn)系統(tǒng)中的場景模型,但這些模型都是靜態(tài)的、相對孤立的,彼此之間沒有實(shí)現(xiàn)真正意義上的聯(lián)系。為了給用戶提供一個“真實(shí)”的環(huán)境,實(shí)現(xiàn)他們與場景之間的互動,還要驅(qū)動整個虛擬場景,實(shí)現(xiàn)對場景模型的調(diào)用、顯示和控制。
基于OpenGVS程序框架,系統(tǒng)的相關(guān)功能主要在用戶初始化函數(shù)GV_user_init()和用戶運(yùn)行時函數(shù)GV_us-er_proe()中實(shí)現(xiàn)。其中,用戶初始化函數(shù)在系統(tǒng)中只執(zhí)行一次,而用戶運(yùn)行時函數(shù)則每幀調(diào)用一次。
在用戶初始化函數(shù)GV_user_init()中,首先創(chuàng)建了幀緩存、通道、相機(jī)、場景、實(shí)體對象、光源等資源,接著將這些圖形資源連接在一起,最后對系統(tǒng)參數(shù)及控制變量進(jìn)行設(shè)置。下面的代碼說明了OpenGVS資源如何進(jìn)行創(chuàng)建和連接。
用戶運(yùn)行時在函數(shù)GV_user_proc()中,我們可以實(shí)現(xiàn)三維場景的碰撞檢測、相機(jī)控制和人機(jī)交互等功能。OpenGVS不只可以通過引擎提供的函數(shù)對場景中的對象進(jìn)行控制,也可以通過仿真回調(diào)函數(shù)的方式進(jìn)行控制,使碰撞檢測、人機(jī)交互等實(shí)現(xiàn)起來更加方便靈活。
4結(jié)束語
本系統(tǒng)是基于虛擬現(xiàn)實(shí)技術(shù)設(shè)計開發(fā)的,在實(shí)際的操作培訓(xùn)中發(fā)揮了重要作用。虛擬培訓(xùn)強(qiáng)調(diào)人、自然環(huán)境、計算機(jī)系統(tǒng)的協(xié)調(diào)和集成,具有不可比擬的優(yōu)越性,是未來培訓(xùn)的發(fā)展方向。