趙 謙,張新家,萬 苗
(西北工業大學 自動化學院,陜西 西安 710129)
伴隨著計算機技術的不斷發展,虛擬現實技術必然會進入社會的各個領域。虛擬現實是多種技術的綜合,包括三維計算機圖形技術,廣角立體顯示技術,對人肢體的跟蹤技術,以及觸覺/力量反饋、立體聲、網絡傳輸、語音輸入輸出技術等。三維計算機圖形技術為虛擬現實技術提供三維實體建模,環境模擬等基本的技術支撐。現有的建模技術已經能夠逼真模擬現實中的物體并且得到了廣泛的應用。系列電影《生化危機》在人體建模方面的成功就是建模技術成熟的一種客觀寫照。建立完備的模型之后,還要讓模型能夠動起來[1]。Xsens moven慣性動作捕捉系統,能夠實時捕捉人體六自由度的動作數據,為模型的運動提供接近真實的動作效果[2-3]。然而,這些系統不僅將實體建模和動作信息分開考慮,而且將模型孤立了起來。伴隨著虛擬現實技術研究的深入和應用的推廣,越來越復雜的系統必然會在虛擬現實環境下實驗和測試,現有的建模方法在應用到這些多對象復雜聯系的系統中顯然不能得到滿意的效果。針對這類問題,本文做一些探討。
復雜系統包含的實體對象可能不止一個,而且對象間也存在各類關系。我們將一個系統定義為一個過程。一個過程最基本的三個要素便是實體對象,關系以及行為[5]。所謂實體對象就是過程的參與者;關系是指實體對象之間的約束條件;行為是指實體對象的動態特征。
我們給過程一個廣泛的定義,凡是滿足下面約束條件的事件,我們都可以定義為一個過程。諸如動態場景,物理碰撞試驗等等都可以定義為一個過程。
1)過程必須要有實體對象參與。一個過程可以沒有關系,但是不能沒有實體對象。
2)關系是實體對象與實體對象之間的聯系。
3)行為本身是實體對象的一個屬性,不能脫離實體對象而存在。
在1.1中我們給過程一個定義,這個定義給出過程一個必要的條件,即一個過程至少有一個實體對象。然而,現實中我們遇到的情況可能要復雜得多。一個復雜系統或復雜過程可能包含多類實體對象,錯綜復雜的關系,多約束的運動特征。一個典型的例子就是虛擬戰場環境[6]。就實體對象而言,它包括地形,作戰工具,參戰人員,建筑等幾類,每類中又包含多種實體對象,比如地形就有山地,河川,草地,森林等多種情況;這些對象之間相互的關系則更為復雜,比如一輛坦克要受到地形的約束,與其他物體碰撞等。顯然對于這種情況,我們如果只是考慮單個對象而不將其放在環境中,仿真效果顯然不能令人滿意。
針對多對象復雜關系的情況,僅僅孤立的建模方法不能滿足要求,還有另外一種情況也不能不考慮。在工程機械仿真應用[7]中,常常會碰到大型的機械或部件,這些器械由一些簡單的零件裝配成,這些零件不僅具備自己的屬性而且零件間可以進行相對運動,如果在仿真時,我們只是一次性完成仿真,那么對于零部件之間的關系就不能表達,這顯然違背了仿真設計的初衷。
特別提出的是,所謂的復雜過程和復合對象只是過程定義框架內的兩種情況(下文會給你這兩種情況的區別),它們都可以定義為一個過程。
我們將一個復雜過程依據空間,邏輯等關系,劃分為若干個子過程。當然需要說明的是:第一:無論如何劃分,每個子過程必須滿足上面的約束性條件;第二:劃分過程的可行性。為了描述劃分的可行性,我們使用兩個定性的要求來限制,即獨立性和協調性。所謂獨立性,就是子過程應當具有自身的屬性,在離開上一層過程時可以獨立存在;協調性是指每個子過程應該具備一定的能力,這個能力使得其能夠參與上一層過程的行為。
復雜過程總可以劃分為若干個子過程,最終的結果是子過程只包含一個實體對象。實體對象應具備自己的完備屬性,并且能夠以關系的要求與其他實體對象相互聯系。如圖一所示[8]。我們將帶有運動特性的實體對象以關系為媒介組織起來,那么一個復雜過程最終會形成一種“網”的結構,網的每個結點是一個簡單的子過程。這種形式,不僅使得每個“結點”有很強的獨立性,而且在實現時,具有很強的拓展性和靈活性。

圖1 子過程與子過程之間的關系Fig.1 The relationship between subprocesses
子過程和子過程之間以關系的形式相互關聯,這個關聯作用的結果以行為的形式表現在實體對象上。我們將研究的對象定義為主體,與之有聯系的對象定義為客體。那么主體在具備基本屬性的前提下,應該擁有記錄與它直接相關的客體的關系以及這些關系對于主體行為作用結果的能力。我們為實體對象建立下面的結構[9]:
object{
對象ID;
頂點信息;
材質信息;
紋理信息;
關系表;
行為信息;
自定義(擴展);
}
對象ID表征了對象的身份。將頂點信息,材質信息和紋理信息稱為對象的繪制信息,關系表稱為動態信息。關系表表征了主體對象與直接相關的客體對象的聯系,這個聯系包含客體對于主體的約束性條件,約束性條件可能是復雜的方程,也可能是一個條件限制。行為信息直接表達了客體對象集合對于主體對象作用的結果,這個結果是客體對象約束性條件的疊加。
需要特別指出的是,行為信息記錄了行為結果,而對于各種約束性條件的控制卻單獨完成。如圖二所示。我們必須考慮主體對象的材質等屬性,因為來自客體的影響施加于主體,受到材質等屬性的制約。一種特殊的情況是,某個主體對象和客體對象為同一實體對象,此時的約束條件是實體對象本身具備的一種“能力”。提供這些能力對于快速實現動態化表達有重要意義,而且對于實現交互式操作也提供了可能[10]。

圖2 行為信息的獲得Fig.2 Acquire the movement information
在1.2節中,我們列舉了兩種比較復雜的情況,這兩種情況都可以定義為一個過程,也可以同時出現在一個復雜系統中,然而他們在實現時卻有本質的不同。首先,我們將一個過程劃分為多個子過程,最終的結果是第N層的子過程只包含一個實體對象。這里會出現兩種情況,當N-1層子過程包含多個實體對象時,那么向上整個劃分過程定義為一個復雜過程的過程建模實現;當第N-1層包含多個實體對象,第N層子過程只包含一個實體對象,第N+M層也只有一個實體對象時,那么第N層向下整個劃分過程稱為復合對象的過程建模實現。由此看出,復雜過程實現是針對一個多實體對象的建模實現,而復合對象實現是針對一個多部件對象的“拆卸”的實現過程。
針對復雜過程建模方法的實質是將一個動態的場景,拆分為幾個實體對象的運動,然后將這些實體對象再融入一個畫面中,實現對于動態場景的近似。在計算機圖形學中,場景的動態特性是通過每個靜態場景或幀的微小變化的快速切換近似模擬的。因此在建模時我們關心的并不是實體對象為什么變化,而是在下一幀中圖形的行為信息。這需要一個控制器為我們準備這些變化信息。
通過上面的內容,我們可以總結這個控制器的功能。首先,這個控制器要返回行為信息;其次,能夠訪問關系表中的實體對象本身具備的運動能力和它受到的約束條件;最后,控制器應該具備強大的復雜方程解析能力和快速的運算能力,只有具備這些能力才能保證畫面的流暢。整個過程,我們用圖3表示。

圖3 復雜過程的實現Fig.3 The implementation of complex process
過程建模方法,應用于復合對象實質上是不斷拆分的過程。復合對象首先是一個完整的實體對象,具備自身的繪制信息,動態信息和行為信息,這樣它才具備獨立性和協調性;然后我們應該賦予其拆分的能力。這個能力允許復合對象的某個子過程能夠相對其它子過程完成一系列動作。我們使用樹來描述。這包含兩層意思,第一,復合對象只記錄它下一層的相關信息,即復合對象的節點只記錄它的孩子節點的關系信息,不記錄它的孩子節點的子節點;第二,這個關系信息只包含組裝的位置關系,相對的動作在子節點中。我們將這個拆分樹放在關系表中,并設立一個開關來管理拆分樹的開啟。我們為拆分樹建立如下結構。
tree_node{
obeject;//復合對象或最簡子過程;
int*child[];//指向它的孩子節點;
bool simple_obj;//表征該對象是否能拆分;position_recorder;//創建一個數據結構,這個結構以
//child指針為頭,以它的位置為數據單元;
}
我們以太陽-地球-月球系統來驗證上邊提出的方法。
在太陽-地球-月球系統中,太陽位于中心位置,并且假定靜止,地球繞太陽公轉,地球的自轉;月球繞地球公轉,月球的自轉。我們將這個系統定義為一個過程,這個過程的第一層可以劃分為3個子過程,第二層出現3種子過程,這3種子過程每個只包含一個實體對象。如圖4所示。
我們使用下邊的數據結構來實現這些過程:
Pro{
ProcessID;//用于表征這個過程的身份;
int*child[];//用于指向他的孩子;

圖4 太陽-地球-月球系統的過程建模實現Fig.4 The implementation of process modeling for sun-earth-moon system
bool simple_pro,simple_obj;//第一個表示該子過程只包含
一個//實體對象,第二個表示該復合對象能否再劃分;
void pro_split();//用于劃分過程;包含兩重意思,一個是對于//多對象的劃分,一個是對復合對象的拆分;
}
對于最終的3種子過程,它們只包含一個實體對象,我們使用3DS來保存繪制信息,使用樹結構來記錄關系表,使用下面的數據結構來實現:
Object{
int ID;
char name;
bool com_true,switch;//第一個表征該對象是否為復合對象,第二//個控制復合對象拆分樹的開啟;
3dsobject;//讀取繪制信息;
relative_tree;//這個樹包含對象能力,對象關系,以及復合對象的//拆分樹;
Cvector location;//以下為行為信息;此條為位置信息;
Cvector scale;//此條為旋轉信息
}
我們來看這個例子的實現過程。其繪制信息都是一個球體,只是它們的大小不同。用下圖來分別表示他們的關系表。

圖5 各個對象的關系表匯總Fig.5 The relationship between objects
3個實體對象的行為信息,體現在每幀中的位置變化,為了獲得這些位置變化,同時獲得圖像刷新的速率(幀速率),我們調用timeGetTime()來提供一個參考值。我們取幀速率為V(一般在25~30),那么更新每幀的時間為1/V。我們取地球的公轉周期為Year,那么每幀地球的角位移為2π/(Year*V)。同理,月球的角位移為 2π/(Month*V)(注意,這個是在地月坐標系中),地球和月球的旋轉矩陣為Re和Rm。獲取了這些位置信息之后,我們調用display()函數來更新行為信息,使用RenderScene()來繪制圖形,程序的框架如下圖所示。

圖6 太陽-地球-月球系統的實現流程Fig.6 The implementation of sun-earth-moon system
使用上面的方法,我們得到的效果如圖7所示。

圖7 太陽-地球-月球系統的實現效果圖Fig.7 The simulated effect
文中提供了一種復雜過程和復合對象三維建模的方法,著重解決了復雜環境下過程實現和對象建模中遇到的問題,并提出了一種有效的解決方法。然而正如圖5所示那樣,實體對象之間的關系表存在比較嚴重的重復,這對于系統消耗來說是一種浪費,有待于進一步的改進。另外,虛擬現實技術是對于視聽觸等多感官的模擬,文中模型只是著眼于視覺的一種考慮,如何為模型提供更多感官接口,提供更強大的集成,有待于進一步的研究。
[1]楊四亦.計算機動畫運動生成的方法和原理[J].電子出版,1995.YANG Si-yi.The method and principle of computer animation motion generated by[J].Electron Publishing,1995.
[2]唐斌.3D角色動作生成技術現狀[J].黑龍江科技信息,2009(19):080.TANG Bin.The actuality of 3D movement generated technology[J].Heilongjiang Science and Technology Information,2009(19):080.
[3]Wachter S,Nagel H H.Tracking of persons in monocular image sequences [C]//Nonrigid and Articulated Motion Workshop, 1997.Proceedings., IEEE.IEEE,1997:2-9.
[4]王建坡.三維實體模型相關技術研究[D].鄭州:解放軍信息工程大學,2011.
[5]張合,劉小紅.面向對象的對象建模技術及其應用研究[J].軟件,2011,32(3):66-68.ZHANG He,LIU Xiao-hong.Researches on object-oriented object modeling technology and its application[J].Software,2011,32(3):66-68.
[6]Smelik R M,Tutenel T,de Kraker K J,et al.A declarative approach to proceduralmodeling ofvirtualworlds[J].Computers&Graphics,2011,35(2):352-363.
[7]張晉西,郭學琴.SolidWorks及COSMOSMotion機械仿真設計[M].北京:清華大學出版社,2007.
[8]劉茗.淺論動畫制作的技巧[J].淮海工學院學報,2001(5):79-82.LIU Ming.A Brief Study on the techniques of animation[J].Journal of huaihai institute of technology,2001(5):79-82.
[9]蔡勇,楊振中.基于 OpenGL的三維建模仿真軟件開發[J].兵工自動化,2004,23(4):9l-92.CAI Yong,YANG Zhen-zhong.Development of 3D modeling and simulation software based on OpenGl[J].Ordnance Industry Automation,2004,23(4):9l-92.
[10]Angel E.Interactive computer graphics[M].Addison-Wesley Longman Publishing Co., Inc.,1999.