肖建華 ,朱 瑛
(1.石家莊市冶河灌區(qū)管理局,河北 石家莊 050000;2.河海大學(xué) 計算機與信息學(xué)院,江蘇 南京 210098)
面向通用任務(wù)的三維交互在國內(nèi)外已經(jīng)有了一定的研究基礎(chǔ),通常將交互任務(wù)分成 3 類:漫游、選擇/操縱和系統(tǒng)控制。復(fù)雜的交互任務(wù)都可以由這3 個基本的子任務(wù)組合完成[1]。面向任務(wù)的交互主要考慮幾何層面上的變換,語義與交互結(jié)合的應(yīng)用將交互上升到語義層,并面向用戶的意圖。目前,國內(nèi)外已經(jīng)開展語義交互方面的研究,如文獻 [2]、[3]為場景中的每個物體提供了一套規(guī)則,充分利用了物體之間的關(guān)聯(lián)關(guān)系,如父子關(guān)系、兄弟關(guān)系,研究了物體的移動和動態(tài)成組的實現(xiàn);文獻 [3]實現(xiàn)了一個基于約束語義雙手交互場景布局系統(tǒng),通過語義識別和反饋實現(xiàn)物體的精確定位,實現(xiàn)快速、高效的場景布局。
以人為中心,自然、高效的交互特性將是發(fā)展新一代人機交互的主要目標[4]。語義交互是達到這個目標的有效手段,它為場景中的每個對象提供 1 套規(guī)則,當用戶操縱這些對象時必須遵守這套規(guī)則[5]。
交互語義(IS)可以用 1 個 5 元組來表示[5]:IS =〈object,rule,action,task,feedback〉,object,rule,action,task,feedback 分別表示交互對象、規(guī)則、用戶行為、任務(wù)和反饋信息,并將語義分為供給語義(AS)和關(guān)聯(lián)語義(RS)。
文獻 [6]定義了語義對象的概念,提出了通用領(lǐng)域中的語義交互體系結(jié)構(gòu)和過程,語義對象由圖形、行為、規(guī)則、交互和應(yīng)用等構(gòu)件構(gòu)成。這些構(gòu)件形成了通用領(lǐng)域的交互框架。
由于水利工程中的交互具有領(lǐng)域性,語義交互體系結(jié)構(gòu)需要進一步改進。為保證水利工程中的水工建筑物正常、安全地運行,通過三維實時仿真有助于管理人員的培訓(xùn)和預(yù)演。目前水利工程三維仿真很少能為工作人員提供一個易于操作的交互界面,往往將簡單的操作復(fù)雜化,雖然實現(xiàn)了控制水工建筑物運行的功能,卻不能“理解”用戶的操作意圖。目前在文獻中還沒有水利工程中使用語義技術(shù)進行交互設(shè)計的先例。因此,將語義交互技術(shù)結(jié)合到水利工程仿真環(huán)境中具有很高的實用價值。
為了適應(yīng)水利領(lǐng)域中語義對象的應(yīng)用,需對現(xiàn)有語義交互體系結(jié)構(gòu)作進一步改進。水利工程中的語義對象由外觀、交互、規(guī)則、行為和任務(wù)等部件構(gòu)成,交互體系結(jié)構(gòu)如圖 1 所示[7]。
圖1 水利工程語義對象的交互體系結(jié)構(gòu)
將語義對象看成 1 個黑盒,接收交互事件,部件之間通過調(diào)用和反饋完成一系列的變換后輸出外觀上的反饋信息。水利虛擬環(huán)境中的語義對象包括水工建筑物、設(shè)備、水流對象等。
外觀部件描述了對象的外觀信息,定義了對象的物理屬性,包括水工建筑物的運行屬性、設(shè)備的顏色和紋理屬性等。交互部件接收交互事件,包括用戶的操作事件和由關(guān)聯(lián)語義描述的狀態(tài)變化事件。規(guī)則部件描述了語義對象必須遵循的規(guī)則、約束條件等。行為部件描述了語義對象完成任務(wù)過程中的一系列行為(即狀態(tài)的轉(zhuǎn)化)。任務(wù)部件描述的是語義對象要完成的任務(wù),即達到用戶意圖的中間步驟。
交互事件分發(fā)給特定的語義對象,交互部件負責接收交互事件和行為,并調(diào)用規(guī)則和任務(wù)部件解析交互事件,創(chuàng)建交互任務(wù),最后將任務(wù)交付給行為部件執(zhí)行。用戶與虛擬環(huán)境進行交互時,系統(tǒng)執(zhí)行用戶的交互意圖,完成 1 個交互應(yīng)用。交互應(yīng)用的實現(xiàn)需要若干相關(guān)聯(lián)的語義對象協(xié)同完成。
水利工程場景中的語義對象用場景圖組織和描述,場景圖是有向非循環(huán)圖,提供了一種面向?qū)ο蟮膶蛹壗Y(jié)構(gòu)方式來描述和組織三維虛擬場景,廣泛應(yīng)用于交互式三維應(yīng)用程序中。
語義交互技術(shù)與具體應(yīng)用領(lǐng)域密切關(guān)聯(lián),有必要對水利工程環(huán)境進行語義研究。語義交互模型描述交互的運作過程,提供了一個創(chuàng)建交互式系統(tǒng)的框架[8]。對水工建筑物的運行特點進行建模,為用戶提供一個控制虛擬水工建筑物運行的交互環(huán)境。
從交互的角度出發(fā),水工建筑物可分為 2 類:一類是固定的,如各種壩、堤、廠房、隧洞等;另一類是可以控制運行的,如閘門、水泵等。本文主要考慮水利工程虛擬環(huán)境中可運行的水工建筑物、操作設(shè)備及場景變化。閘門和水泵是水工建筑物的重要組成部分,可以是泄水和引水建筑物,在仿真環(huán)境中最為常見。
水工建筑物的結(jié)構(gòu)為運行控制提供了重要的物質(zhì)基礎(chǔ),物理特征往往是其他特征的載體。借鑒文獻 [9]中對虛擬裝配零件信息的描述方式,水利工程虛擬交互環(huán)境中水工建筑物的物理特征用 BNF 范式表示如下:
<物理特征>:: = <標識><名稱><模型><位置屬性>[<運行屬性>]
<位置屬性>:: = <位置><方向>
<運行屬性>:: = <運行狀態(tài)><運行類型><運行速度>
<運行狀態(tài)>:: = <靜止>|<運行>
<運行類型>:: = <直線類型><旋轉(zhuǎn)類型>
<運動速度>:: = <平移線速度><旋轉(zhuǎn)角速度>
可以利用 XML 文檔描述語義對象的物理模型,易于在任何應(yīng)用程序中讀寫數(shù)據(jù),足以表示水工建筑物的物理特征,便于用戶靈活配置和修改語義對象的屬性。
交互對象是在交互過程中物理特征會發(fā)生變化的語義對象,變化的物理特征由外觀部件體現(xiàn)。水利工程虛擬環(huán)境中,按鈕是響應(yīng)交互事件的語義對象,用戶通過操作按鈕觸發(fā)三維交互過程。閘門的升降、水泵的開啟關(guān)閉及引起的泄水和引水現(xiàn)象是最終的交互應(yīng)用,體現(xiàn)了用戶的交互意圖。三維交互過程中每個交互對象完成各自的交互任務(wù),這些交互任務(wù)共同構(gòu)成 1 個交互應(yīng)用。
水利工程環(huán)境中有關(guān)虛擬水工建筑物運行的語義對象主要有閘門、水泵、按鈕設(shè)備及水流對象等。語義對象的交互部件調(diào)用規(guī)則和任務(wù)部件對交互事件進行解析,創(chuàng)建交互任務(wù)。這里的交互事件既包括用戶的操作,也包括對象自身的狀態(tài)變化事件,交互事件觸發(fā)交互部件的運行。語義建模的工作是對以上解析過程進行描述,并對交互事件、規(guī)則及任務(wù)進行分析,最后完成交互任務(wù)的創(chuàng)建。交互任務(wù)本質(zhì)上描述了語義交互對象狀態(tài)的改變過程,由行為部件實現(xiàn)狀態(tài)的轉(zhuǎn)化。
2.2.1 按鈕設(shè)備對象的語義建模
水利工程虛擬環(huán)境中用戶不能直接操作水工建筑物,為了約束用戶的交互,通過按鈕設(shè)備觸發(fā)對應(yīng)的建筑物運行。用戶通過操作按鈕控制相應(yīng)水工建筑物的運行,系統(tǒng)同時給用戶相應(yīng)的反饋,表明交互的進度和結(jié)果。按鈕設(shè)備對象的交互任務(wù)可描述為:
1)改變按鈕設(shè)備(操作箱和按鈕)對象的狀態(tài);
2)按鈕控制水工建筑物的運行。
用戶的靠近、遠離、push 和 release 等交互操作由系統(tǒng)轉(zhuǎn)化為交互事件并傳遞給交互部件。交互部件調(diào)用按鈕對象的規(guī)則部件(可激活的距離)查詢按鈕是否在可操作范圍之內(nèi),并進行語義解析,確定要完成的任務(wù),交互部件調(diào)用行為部件進行按鈕狀態(tài)的轉(zhuǎn)化。
按鈕設(shè)備語義模型的形式化表達如下:
公式左側(cè)描述了交互事件和規(guī)則等,公式右側(cè)是語義對象要完成的交互任務(wù),一般是狀態(tài)的改變。active 表示按鈕設(shè)備的激活語義。設(shè)備包括操作箱和按鈕 2 部分,active (d) 表示操作箱打開,按鈕處于可操作狀態(tài)。用戶化身 a 與設(shè)備 b 的距離小于 x 時設(shè)備激活。交互過程為:用戶在場景中漫游時,系統(tǒng)將漫游操作轉(zhuǎn)化成交互事件,交互部件調(diào)用規(guī)則部件查詢與化身的距離是否在可操作范圍之內(nèi),規(guī)則部件返回設(shè)備的狀態(tài)值。按鈕未激活時用戶對按鈕的按下操作是無效的。當規(guī)則部件返回按鈕可操作(激活)的信息時,交互部件調(diào)用行為部件完成按鈕從未激活狀態(tài)到激活狀態(tài)的轉(zhuǎn)化,行為部件進一步調(diào)用外觀部件反映狀態(tài)轉(zhuǎn)化的可視反饋。這樣就完成了 1 個按鈕設(shè)備激活的任務(wù)。
inactive 表示按鈕設(shè)備的未激活語義,a 與 d 的距離大于等于 x 時操作箱關(guān)閉,按鈕不能操作。設(shè)備激活后用戶就可以操作設(shè)備中的按鈕,控制相應(yīng)的水工建筑物運行。
假設(shè)設(shè)備 d 中有 n 個按鈕,b ={b1,b2,…,bn},按鈕彈出和按下狀態(tài)的轉(zhuǎn)換如式(3)所示:
在設(shè)備 d 被激活并且按鈕 b 彈出的狀態(tài)下,用戶的 push 操作使按鈕轉(zhuǎn)化成按下狀態(tài);
式(4)中設(shè)備 d 被激活并且按鈕 b 按下,用戶的 release 操作使按鈕彈出。
按鈕控制水工建筑物的過程可描述為:設(shè)備被激活后,用戶利用外部設(shè)備進行操作(鼠標點擊、虛擬手或語音命令等),轉(zhuǎn)化成按下或彈起事件后傳遞給交互部件。交互部件調(diào)用規(guī)則和任務(wù)部件并得到響應(yīng)后,行為部件即調(diào)用外觀部件實現(xiàn)按下和彈起狀態(tài)之間的轉(zhuǎn)換。
2.2.2 閘門對象的語義建模
閘門對象的任務(wù)部件描述的是閘門的運行情況,包括運行方式(上升或下降),開啟和關(guān)閉的速度等,以及閘門與水流的關(guān)聯(lián)語義。
可以將閘門看成 1 個語義對象,也可以將閘門的各個部件拆分成多個語義對象,描述各部件之間的關(guān)聯(lián)語義,根據(jù)應(yīng)用的要求選擇不同的處理方式。在注重環(huán)境變化的應(yīng)用中不需要過多的閘門細節(jié),將閘門封裝成 1 個對象即可;在檢修培訓(xùn)系統(tǒng)的應(yīng)用場合下則需要注重閘門各個部件的細節(jié),以便為學(xué)員呈現(xiàn) 1 個閘門的詳細結(jié)構(gòu)模型。
按鈕的控制事件由交互部件描述,交互部件調(diào)用規(guī)則部件查詢閘門的運行狀態(tài),啟閉速度等,并與任務(wù)部件完成對交互事件的解析,創(chuàng)建交互任務(wù)。交互任務(wù)描述了閘門(各個部件)狀態(tài)的變化,行為部件調(diào)用外觀部件實現(xiàn)閘門開度的變化和對水流、水位狀態(tài)參數(shù)的設(shè)置。用戶有手動和自動 2 種方式控制閘門的升降,手動控制有上升、下降和停止 3 個按鈕,用戶可隨意控制閘門的開度;自動模式使閘門由當前狀態(tài)自動運行到一個設(shè)定的高度。
閘門對象的語義模型:水工建筑物的狀態(tài)變化由按鈕的按下狀態(tài)瞬間觸發(fā),按鈕由按下到彈起狀態(tài)的轉(zhuǎn)換沒有控制作用,水工建筑物永遠按照最近的按鈕按下事件和相應(yīng)的規(guī)則運行。其交互語義可形式化表示如下:
若 F (b) :b 是使閘門上升的按鈕;
按下控制閘門 g 的上升按鈕,并且 g 的當前高度未達到上限時,閘門 g 上升。
若 F (b):b 是使閘門下降的按鈕;
按下控制閘門 g 的“下降”按鈕,并且閘門開度大于 0 時,閘門 g 下降。
若 F (b) :b 是使閘門停止的按鈕;
閘門 g 的停止按鈕被按下時,閘門停止運行。
若 F (b) :b 是使閘門按設(shè)定值運行的按鈕;
“按設(shè)定值升/降”是自動模式下按鈕,控制閘門運行至設(shè)定的高度 h。當前高度高于 h 時閘門下降,反之上升。
2.2.3 水流對象的語義建模
閘門的狀態(tài)變化是引起水流對象狀態(tài)變換的交互事件。水流對象的交互部件接收事件,通過規(guī)則部件查詢引起水流水位的變化效果,并獲得水流水位的各種參數(shù),然后調(diào)用任務(wù)部件創(chuàng)建水流狀態(tài)變化的交互任務(wù),調(diào)用行為部件實現(xiàn)水流和水位相應(yīng)的狀態(tài)變化。行為部件則調(diào)用外觀部件反饋給用戶逼真的水流效果。
與閘門相關(guān)的水流對象語義交互的形式化表示:
relate (s, g ) 描述了閘門與水流的關(guān)聯(lián)關(guān)系。當閘門關(guān)閉(即開度為 0)時,不會有水閘泄流的場景,水流對象未激活;閘門的閘位高于 0 時,水流對象被激活,場景中添加水流對象。交互部件通過規(guī)則部件獲得各種參數(shù)后,行為部件調(diào)用外觀部件反饋水閘泄流的場景,并且使上游水位降低,下游水位升高。從而完成一個水閘泄流及水位變化的任務(wù)。
本文采用 OpenSceneGraph(簡稱 OSG)來組織環(huán)境中的語義對象。OSG 提供了多種類型的節(jié)點以執(zhí)行各種各樣的交互功能,用以實現(xiàn)每個葉子節(jié)點的空間屬性、運動特性等變換,因此可以描述水利工程虛擬環(huán)境中的場景組織和語義交互對象的物理及語義特征。
用戶利用按鈕設(shè)備對水工建筑物進行控制,它是通過按鈕語義對象的調(diào)用執(zhí)行來實現(xiàn)的。
1)設(shè)備激活和未激活狀態(tài)的轉(zhuǎn)化實現(xiàn)
用戶遠離按鈕設(shè)備時,操作箱的蓋子合上表明設(shè)備未激活;靠近設(shè)備時,操作箱的蓋子打開,告訴用戶現(xiàn)在可以操作設(shè)備。
按鈕設(shè)備包括外部的操作箱和內(nèi)部的按鈕,包圍盒碰撞檢測前將設(shè)備的按鈕節(jié)點從遍歷過程中刪除[10]。設(shè)備未激活時刪除按鈕子節(jié)點,保留操作箱關(guān)閉狀態(tài)的節(jié)點,使用戶只能與外部的操作箱交互;設(shè)備激活時操作箱的蓋子打開,并添加按鈕節(jié)點。
2)按鈕按下和彈出狀態(tài)轉(zhuǎn)化的實現(xiàn)
按鈕對象被操作時需要給用戶 1 個可視反饋。按鈕外觀顯示紅色表示某個功能按鈕已被按下。
3)交互事件及關(guān)聯(lián)語義的實現(xiàn)
按鈕的作用是控制水工建筑物的運行。用戶按下按鈕時系統(tǒng)將接收到用戶的操作(如鼠標點擊、虛擬手觸摸)轉(zhuǎn)化成鼠標按下事件。這個過程的實現(xiàn)可以在 OSG 中重寫 osgGA::GUIEventHandler handle 函數(shù),程序運行時 Viewer 將調(diào)用每個 GUI 事件的 handle( ) 函數(shù),直到其中 1 個的 handle ( ) 函數(shù)返回 true 為止。
語義對象通過各個部件的協(xié)同工作完成交互過程,外觀部件反饋語義對象物理特征的變化。行為部件實現(xiàn)交互任務(wù),完成水工建筑物狀態(tài)的轉(zhuǎn)化及關(guān)聯(lián)語義的實現(xiàn)。
1)水工建筑物狀態(tài)轉(zhuǎn)化的實現(xiàn)
在場景圖中為水工建筑物模型節(jié)點添加變換節(jié)點,交互信息根據(jù)規(guī)則部件設(shè)置變換節(jié)點的變換方式。規(guī)則部件主要描述水工建筑物的運動屬性,包括運動類型和運行速度等,其中運動類型決定了對象平移或旋轉(zhuǎn)的變換方式。每個水工建筑物都有 1 個變換和模型節(jié)點。
水工建筑物交互對象的物理信息由 XML 形式化描述,系統(tǒng)初始化時讀取 XML 中的信息設(shè)定對象的屬性。
2)關(guān)聯(lián)語義的實現(xiàn)
水工建筑物狀態(tài)的變化會引起水流的變化。水流的狀態(tài)定義為開啟和關(guān)閉,開啟狀態(tài)對應(yīng)場景圖中水流節(jié)點。閘門在上升或下降過程中會引起水流形態(tài)的變化,而水流的狀態(tài)由閘門的開度決定:當開度為 0 時水流關(guān)閉,開度大于 0 時水流開啟。
以水庫為例,主要建筑物有擋水壩、引水建筑物、電站廠房等,實驗原型為壩上有閘控制泄洪,閘門形式為平板閘門。
大壩、地形、設(shè)備等使用 3DS MAX 建模,采用OSG 組織場景,在 Visual Studio 2005 集成開發(fā)環(huán)境下進行仿真控制和三維效果展示如圖 2 所示。
圖2 閘門運行的仿真控制和三維效果
圖2 中,a 圖表示按下第 2 個閘門的上升按鈕,閘門上升并產(chǎn)生泄流現(xiàn)象。下降按鈕控制閘門下降,如果閘門上升或下降過程中按下停止按鈕,閘門停止,否則閘門會一直上升到上限或下降至閘門的下限。b 圖表示第 2 個閘門上升到最大值,第 3 個閘門按設(shè)定值升/降時的運行效果。
當設(shè)備操作箱打開時,用戶才可以操作設(shè)備。用戶可以通過鼠標點擊功能按鈕,按鈕接收交互事件后進行狀態(tài)改變,并設(shè)置閘門的運行狀態(tài),然后啟動閘門,水流根據(jù)閘門的高度展示泄流場景。
自然、逼真、高效的三維交互已成為新一代人機交互技術(shù),其技術(shù)關(guān)鍵是計算機對人的意圖的理解。本文以水利工程建筑物中最常見的水閘為例,研究了閘門運行場景中的交互模型,采用形式化描述定義了閘門、控制柜、水流等交互對象的語義,并運用于仿真控制和三維效果展示之中,為三維交互技術(shù)開辟了一個新的研究領(lǐng)域。
[1]Chris Hand. A Survey of 3D Interaction Techniques[J]. Computer Graphics Forum(S0167-7055), 1997, 16(5): 269-281.
[2]G. Smith, W. Stuerzlinger. On the Utility of Semantic Constraints[C]// B. Froehlich, J. Deisinger, H.-J. Bullinger.Immersive Projection Technology and Virtual Environments.Springer(0946-2767), 2001: 41-50.
[3]W.Stuerzlinger, G.Smith. Efficient Manipulation of Object Groups in Virtual Environments[C]//Proceedings of the IEEE Virtual Reality 2002, Orlando, 2002: 251-260.
[4]王亮,付永剛,紀連恩,等.基于約束語義的雙手交互場景布局系統(tǒng)[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報,2006,18(8): 1243-1249.
[5]董士海. 人機交互的進展及面臨的挑戰(zhàn)[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報,2004, 16(1): 1-13.
[6]紀連恩,張鳳軍,王亮,等. 基于場景語義的 3D 交互體系結(jié)構(gòu)[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報,2006, 18(8):1236-1242.
[7]紀連恩,張鳳軍,付永剛,等. 虛擬環(huán)境下基于語義的三維交互技術(shù)[J]. 軟件學(xué)報,2006, 17(07): 1535-1543.
[8]Michel Beaudouin-Lafon. Designing interaction, not interfaces[C]//Proceedings of the Working Conference on Advanced Visual Interfaces, Gallipoli, 2004: 15-22.
[9]程成. 虛擬環(huán)境人機交互技術(shù)研究[D]. 北京:中國科學(xué)院研究生院,2002, 12.
[10]李蔚清. 分布式仿真系統(tǒng)中的虛擬環(huán)境生成技術(shù)研究[D].南京:南京理工大學(xué),2007,6.