項(xiàng)朝陽,唐潤(rùn)華,汪小根,莊義修
(1.廣東食品藥品職業(yè)學(xué)院電教信息中心,廣東 廣州 510520;2.廣東食品藥品職業(yè)學(xué)院中藥學(xué)院,廣東 廣州 510520)
中藥制藥是一個(gè)相當(dāng)龐雜的過程,涉及十幾個(gè)甚至幾十個(gè)環(huán)節(jié);車間建設(shè)占地有一定的需求,從幾十平方米到幾千平方米;設(shè)備比較昂貴,每套設(shè)備從幾萬到幾百萬不等;實(shí)驗(yàn)準(zhǔn)備和生產(chǎn)周期較長(zhǎng),一種藥品的生產(chǎn)需要幾天甚至十幾天才能最終完成。高校學(xué)生和企業(yè)新員工在投入中藥生產(chǎn)前都需要通過實(shí)訓(xùn)熟悉和了解整個(gè)生產(chǎn)流程,熟悉各個(gè)設(shè)備的操作規(guī)程、功能和特性,也需通過實(shí)驗(yàn)來構(gòu)筑必需的崗前經(jīng)驗(yàn),但寄希望于生產(chǎn)企業(yè)專門留出完整的生產(chǎn)線來培訓(xùn)是不現(xiàn)實(shí)的,而構(gòu)建實(shí)驗(yàn)場(chǎng)地也需要投入大量的財(cái)力物力。其次,實(shí)訓(xùn)原材料消耗大,中間產(chǎn)品保存成本高,部分實(shí)驗(yàn)還需反復(fù)進(jìn)行,時(shí)間和能源上的消耗都十分可觀。此外,孤立的局部實(shí)訓(xùn)和封閉的生產(chǎn)設(shè)備難以展現(xiàn)完整的工藝流程,難以實(shí)現(xiàn)生產(chǎn)安全指導(dǎo)、先進(jìn)理念灌輸、管理要素貫徹等多方面的融合,實(shí)訓(xùn)效果無法保證。
將虛擬現(xiàn)實(shí)(Virtual Reality, VR)用到中藥生產(chǎn)實(shí)訓(xùn)上,用虛擬實(shí)現(xiàn)技術(shù)來開發(fā)虛擬場(chǎng)景、虛擬設(shè)備和模擬生產(chǎn)操作,局面則煥然一新。虛擬現(xiàn)實(shí)的臨場(chǎng)感、交互性和構(gòu)想性等特性[1-2]可以很好地解決以上的諸多問題。生產(chǎn)周期控制,材料能源消耗,生產(chǎn)過程展現(xiàn)等問題也將迎刃而解。但是構(gòu)建虛擬現(xiàn)實(shí)平臺(tái),是一項(xiàng)系統(tǒng)工程,需要掌握虛擬現(xiàn)實(shí)技術(shù),結(jié)合工作流技術(shù),網(wǎng)絡(luò)技術(shù)、教育技術(shù)和專業(yè)學(xué)科知識(shí),進(jìn)行可持續(xù)化的建設(shè)。
快速、靈活地構(gòu)建滿足生產(chǎn)應(yīng)用需求的仿真系統(tǒng)一直是復(fù)雜系統(tǒng)仿真所追求的目標(biāo)[3]。為了讓實(shí)訓(xùn)平臺(tái)靈活快捷,宜采用模塊化設(shè)計(jì)。文獻(xiàn)[4]通過提取與抽象,歸納了模塊化仿真系統(tǒng)的設(shè)計(jì)方法,此類仿真系統(tǒng)可以從實(shí)現(xiàn)上劃分為數(shù)據(jù)視頻及動(dòng)畫存儲(chǔ)單元、數(shù)據(jù)處理及發(fā)布單元、虛擬設(shè)備接口單元、物理設(shè)備及3D模型單元和客戶端五大部分,如圖1所示[4]。
圖1 模塊化仿真系統(tǒng)整體框架
在具體實(shí)現(xiàn)方法上,文獻(xiàn)[4]系統(tǒng)做了基于Delphi的實(shí)現(xiàn),本文則進(jìn)一步做了基于Java的嘗試。實(shí)訓(xùn)平臺(tái)的工作依舊是依靠數(shù)據(jù)處理及發(fā)布單元與客戶端交互和協(xié)作來完成的。Web應(yīng)用的發(fā)布借助了Apache Tomcat 6.0,局部還用到Javascript等腳本語言處理簡(jiǎn)單交互。
文獻(xiàn)[4]系統(tǒng)配置采用的是C/S (Client/Server)模式,而本文系統(tǒng)采用了更為便捷的B/S(Browse/Server)模式。當(dāng)管理員獲取相應(yīng)權(quán)限后,可進(jìn)入后臺(tái)設(shè)置學(xué)員權(quán)限與實(shí)驗(yàn)流程,并控制各實(shí)驗(yàn)環(huán)節(jié)的流向和結(jié)果輸出。另外,通過配置視頻、三維動(dòng)畫和聲音、撲捉熱點(diǎn)等手段,使仿真交互更顯直觀、生動(dòng),并符合生產(chǎn)操作規(guī)程。學(xué)員的訪問依舊基于B/S方式,通過對(duì)Web服務(wù)器的訪問來完成網(wǎng)上虛擬學(xué)習(xí)和仿真操作。視頻及其它輔助文件被分門別類存放到指定的子目錄中,操作時(shí)通過JDBC(Java DataBase Connectivity, Java數(shù)據(jù)庫連接)與數(shù)據(jù)庫服務(wù)器進(jìn)行聯(lián)接和交互,來控制實(shí)驗(yàn)狀態(tài)和獲得仿真實(shí)驗(yàn)結(jié)果。
虛擬設(shè)備接口主要接收從物理設(shè)備及可控3D模型單元傳送過來的感應(yīng)信息和狀態(tài)數(shù)據(jù)。這個(gè)環(huán)節(jié)可以通過物理感應(yīng)設(shè)備接口將數(shù)據(jù)提取出來,也可以采用嵌入式技術(shù)來構(gòu)建虛擬實(shí)驗(yàn)設(shè)備的接口[5]。從降低經(jīng)濟(jì)成本、便于系統(tǒng)擴(kuò)展等角度出發(fā),采用了Quest 3D和Java相結(jié)合的方案來實(shí)現(xiàn)。先構(gòu)建好3D虛擬場(chǎng)景,然后通過加載Quest 3D交互控件和Java語句調(diào)用3D場(chǎng)景來實(shí)現(xiàn)協(xié)同控制,也達(dá)到了滿足生產(chǎn)應(yīng)用需求的虛擬仿真效果。
仿真系統(tǒng)的開發(fā)精細(xì)程度應(yīng)結(jié)合行業(yè)特點(diǎn)和生產(chǎn)實(shí)際考慮,功能性要優(yōu)先考慮,必須能夠真實(shí)反映生產(chǎn)現(xiàn)實(shí)。在保證功能性的基礎(chǔ)上,輕巧是首選。事實(shí)上,可以把精細(xì)程度深入到細(xì)節(jié)、局部去把控,對(duì)于重要的環(huán)節(jié)細(xì)節(jié)要重點(diǎn)剖析,對(duì)于次要環(huán)節(jié),能簡(jiǎn)則簡(jiǎn)??傊焙?jiǎn)適宜才是實(shí)現(xiàn)系統(tǒng)化工程開發(fā)的上策,也是軟件工程所倡導(dǎo)的原則。仿真工具的選取也宜按此思路,不應(yīng)求高精尖,應(yīng)結(jié)合需求特點(diǎn),從實(shí)用和輕巧切入,綜合考慮功能性、擴(kuò)展性、魯棒性和結(jié)構(gòu)良好性。
計(jì)算機(jī)仿真工具一般可分為三類:一是通用語言,如Fortran和Algol語言等;二是仿真語言,如SIGMA、GPSS和SIMULINK等;三是可視化開發(fā)平臺(tái)軟件。前兩類通用性好,但要求開發(fā)者有較強(qiáng)的編程能力。第三類通過定義各種實(shí)體,設(shè)置實(shí)體屬性建立實(shí)體間聯(lián)系,主要通過配置參數(shù)和操作技巧來創(chuàng)建仿真模型,技術(shù)門檻較低,開發(fā)者可以將更多的精力轉(zhuǎn)移到工藝過程的展現(xiàn)和虛擬場(chǎng)景的制作。目前流行的可視化開發(fā)平臺(tái)有Vir-toolsDev,EONStudio和Quest 3D等。另外,國(guó)內(nèi)也有了很大突破,典型的有北京航空航天大學(xué)的實(shí)時(shí)三維圖形平臺(tái)BH_GRAPH等[1]。
Quest 3D是一款實(shí)時(shí)圖形渲染工具,可以實(shí)現(xiàn)產(chǎn)品的三維展示、場(chǎng)景漫游以及虛擬訓(xùn)練等多種功能[6]。Quest 3D最大的特點(diǎn)就是使用構(gòu)建模塊來組成程序,這些模塊被稱為信道,每一個(gè)信道都有其特定功能。利用這些信道,不需要編寫大量復(fù)雜代碼就可以完成三維場(chǎng)景的建立和漫游等功能。它借助了DirectX引擎,生成的場(chǎng)景效果絢麗,且占用資源較少。它還提供物理引擎、路徑動(dòng)畫、數(shù)據(jù)庫連接和網(wǎng)絡(luò)支持等功能。此外,它演示性能強(qiáng)大,富有現(xiàn)實(shí)感,可以實(shí)現(xiàn)相當(dāng)高難度的仿真。
結(jié)合中藥仿真生產(chǎn)崗位突出、流程銜接緊密、操作規(guī)范嚴(yán)格、系統(tǒng)運(yùn)行輕巧等特點(diǎn),也為便于中藥學(xué)科專業(yè)人員協(xié)同參與,本文的中藥生產(chǎn)實(shí)訓(xùn)仿真系統(tǒng)開發(fā)時(shí)選用了Quest 3D作為仿真工具。
虛擬現(xiàn)實(shí)仿真,一般要先做3D實(shí)體建模,然后實(shí)現(xiàn)仿真控制。整個(gè)過程可分為3D實(shí)體建模、靜態(tài)場(chǎng)景(含實(shí)體創(chuàng)建)、動(dòng)態(tài)場(chǎng)景、實(shí)體按鈕偵測(cè)和控制邏輯等步驟來實(shí)施。本節(jié)以中藥制藥萬能切割機(jī)為實(shí)例,以Quest 3D為主要仿真工具,對(duì)中藥生產(chǎn)實(shí)訓(xùn)仿真過程中遇到的關(guān)鍵問題進(jìn)行了探討。
由于虛擬現(xiàn)實(shí)仿真系統(tǒng)基于大量3D實(shí)體的運(yùn)行得以實(shí)現(xiàn),而3D實(shí)體的運(yùn)行占用大量的系統(tǒng)資源,所以3D模型創(chuàng)建的合理性對(duì)系統(tǒng)能否正常運(yùn)行起著重要的作用?;诖?,創(chuàng)建虛擬設(shè)備或場(chǎng)景要繁簡(jiǎn)適宜,充分把控好系統(tǒng)的開發(fā)精細(xì)程度。本系統(tǒng)采用3Dmax實(shí)現(xiàn)基礎(chǔ)建模,建模時(shí)將模型抽象化,注重基于“點(diǎn)”級(jí)的對(duì)齊,減少體塊堆積,避免多余的頂點(diǎn)與面,控制材質(zhì)使用量和貼圖大小,避免面面相疊、交叉,少用布爾運(yùn)算。對(duì)于完成的設(shè)備類3D模型,按靜態(tài)機(jī)身類、按鈕類和動(dòng)態(tài)實(shí)體類分別導(dǎo)出文件保存。分開導(dǎo)出的文件再導(dǎo)入Quest 3D平臺(tái)后,成為獨(dú)立的實(shí)體,便于動(dòng)畫設(shè)置和邏輯控制。中藥制藥萬能切割機(jī)在建模完成后,可對(duì)機(jī)身、切刀機(jī)構(gòu)和綠紅色按鈕分別導(dǎo)出相應(yīng)的“.X文件”。圖2(a)是完整的萬能切割機(jī)3D模型,圖2(b)和圖2(c)是分別導(dǎo)出的機(jī)身、按鈕和切刀機(jī)構(gòu)分拆組件圖。
圖2 萬能切割機(jī)模型及分拆組件
一般性生產(chǎn)靜態(tài)場(chǎng)景包括所有設(shè)備實(shí)體和車間場(chǎng)景的靜態(tài)展現(xiàn)效果。此案例簡(jiǎn)化為整臺(tái)萬能切割機(jī)(含機(jī)身、按鈕和切刀機(jī)構(gòu)等實(shí)體)。靜態(tài)場(chǎng)景創(chuàng)建方法如下:
(1)將建模時(shí)生成的X類型文件(含機(jī)身、按鈕和切刀機(jī)構(gòu))導(dǎo)入Quest 3D平臺(tái),添加3D場(chǎng)景模塊和渲染模塊,將3D場(chǎng)景模塊設(shè)置為信道組的起始模塊,添加5個(gè)點(diǎn)光源和一臺(tái)OIC攝影機(jī),再將上述模塊和信道組連接起來,構(gòu)成該設(shè)備的基本場(chǎng)景,如圖3所示。
圖3 靜態(tài)場(chǎng)景信道流程圖
(2)將導(dǎo)入的實(shí)體作為一整體,將其大小和位置進(jìn)行合理化調(diào)整,設(shè)置燈光的位置、強(qiáng)度,使設(shè)備呈現(xiàn)良好的顯示效果,確定攝影機(jī)的位置、方向和焦距,在動(dòng)畫窗口查看工程攝影機(jī)顯示結(jié)果,微調(diào)至正常顯示,如圖4所示。
圖4 渲染模塊和信道組連接后的萬能切割機(jī)
動(dòng)態(tài)場(chǎng)景比靜態(tài)場(chǎng)景的創(chuàng)建方法復(fù)雜,通常在完成靜態(tài)場(chǎng)景之后實(shí)施,技巧歸納如下:
(1)設(shè)備基本是局部活動(dòng)的,此刻的關(guān)注點(diǎn)在動(dòng)態(tài)部件。首先查看動(dòng)態(tài)部件實(shí)體的Motion信道組,確認(rèn)導(dǎo)入的Motion信道組下的Value模塊類型為Envelop(因?qū)氲哪K有可能出現(xiàn)其他Value類型),如果不是,則更換為Envelop類型模塊。
(2)切換到動(dòng)畫窗口,在編輯器下方的時(shí)間軸內(nèi),將指針調(diào)到第0 格,以每6幀為一組動(dòng)作設(shè)置動(dòng)態(tài)部件的動(dòng)作過程。
(3)添加Timer Value連接到上述Value模塊,如圖5所示,創(chuàng)建動(dòng)態(tài)場(chǎng)景播放任務(wù),邏輯控制信道通過控制播放任務(wù)來實(shí)現(xiàn)動(dòng)態(tài)部件的啟動(dòng)和停止。
圖5 Timer Value 連接圖
為實(shí)現(xiàn)逼真的仿真效果,可采用3D實(shí)體來創(chuàng)建按鈕,技術(shù)難點(diǎn)在于需要建立鼠標(biāo)碰撞檢測(cè)和鼠標(biāo)滑過高亮顯示功能。此案例中,設(shè)置綠色按鈕為啟動(dòng)按鈕,按下綠色按鈕后,切刀機(jī)構(gòu)上下運(yùn)動(dòng)。打開Button-G文件夾,該信道組由導(dǎo)入Button-G.X時(shí)生成,刪除下面不完整的Material模塊,從信道窗口重新添加一新Material模塊替代。將Material信道組下Diffuse模塊的(R,G,B)設(shè)置為(0,1,0),使按鈕顯示為綠色。刪掉原Emissive下的3個(gè)Envelop,添加Detect Mouse Collision與Emissive的G通道相連;創(chuàng)建Button-G的快捷方式并連接到Detect Mouse Collision模塊。這樣就實(shí)現(xiàn)了鼠標(biāo)滑過綠色按鈕時(shí)的碰撞偵測(cè)及綠色按鈕高亮顯示功能,如圖6所示。
系統(tǒng)需要發(fā)布成與顯示屏幕相匹配的網(wǎng)頁,才能正確顯示仿真效果。而Quest 3D只能按4∶3進(jìn)行發(fā)布,無法與實(shí)際的顯示屏幕進(jìn)行匹配。為解決這一問題,一個(gè)比較有效的做法是設(shè)計(jì)一個(gè)通用的轉(zhuǎn)換公式,利用公式在Quest 3D里對(duì)場(chǎng)景模塊的Y Scale值進(jìn)行強(qiáng)制調(diào)整。設(shè)需要發(fā)布成網(wǎng)頁的橫、縱軸尺寸分別為X、Y,Quest 3D按4∶3進(jìn)行發(fā)布,則縱軸尺寸為(3/4)*X,而實(shí)際網(wǎng)頁的縱軸尺寸為Y,將(3/4)*X/Y作為轉(zhuǎn)換系數(shù),即將場(chǎng)景的Y-Scale值(舊)調(diào)整為Y-Scale值(新)=((3/4)*X /Y )* Y-Scale值(舊)。
在Quest 3D平臺(tái)發(fā)布網(wǎng)頁的index.html文件,部分代碼段做如下修訂:
……