專利名稱:一種基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字家庭技術(shù)領(lǐng)域,尤其涉及一種基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法。
背景技術(shù):
隨著數(shù)字電視市場(chǎng)競(jìng)爭(zhēng)壓力增大,各個(gè)數(shù)字電視機(jī)頂盒提供商都以能提供多元化的增值服務(wù)為競(jìng)爭(zhēng)亮點(diǎn),當(dāng)下流行的3D游戲系統(tǒng)就是其中一例。然而機(jī)頂盒是基于嵌入式系統(tǒng)的構(gòu)架而實(shí)現(xiàn)的,需要較高運(yùn)行環(huán)境的3D游戲移植到硬件資源非常貧乏的機(jī)頂盒中,問題是顯而易見的。機(jī)由于家庭的機(jī)頂盒通常配置較低,只擁有很低的運(yùn)算速度和很小的內(nèi)存。所以傳統(tǒng)的PC三維游戲顯然是無法簡(jiǎn)單的移植過來。幾乎所有的模型和算法都需要做簡(jiǎn)化處理。怎么樣才能使得簡(jiǎn)化處理后的模型和算法在大幅度簡(jiǎn)化了的同時(shí)又能依舊 保持比較良好的效果是問題的關(guān)鍵。數(shù)字電視由于采用了數(shù)字技術(shù),在數(shù)字電視服務(wù)中能融入各類數(shù)據(jù)服務(wù)。借助于中間件應(yīng)用平臺(tái),開發(fā)出多種互動(dòng)應(yīng)用,游戲就是其中的一種應(yīng)用。基于物理模型的游戲技術(shù)是八十年代后期發(fā)展起來的一種新的游戲設(shè)計(jì)技術(shù)。經(jīng)過近幾年的發(fā)展,它已在圖形學(xué)中成為一種具有潛在優(yōu)勢(shì)的三維造型和運(yùn)動(dòng)模擬技術(shù)。盡管該技術(shù)比傳統(tǒng)游戲技術(shù)的計(jì)算復(fù)雜度要高得多,但它能逼真地模擬各種自然物理現(xiàn)象,這是基于幾何的傳統(tǒng)游戲動(dòng)畫生成技術(shù)所無法比擬的。傳統(tǒng)游戲技術(shù)要求預(yù)先描述物體在某一時(shí)刻的瞬時(shí)幾何位置、方向和形狀,其運(yùn)動(dòng)往往通過參數(shù)關(guān)鍵幀技術(shù)來完成。因而,欲模擬一個(gè)逼真的自然運(yùn)動(dòng)需要游戲設(shè)計(jì)者細(xì)致、耐心的調(diào)整,要求游戲設(shè)計(jì)者依賴其對(duì)真實(shí)物理世界的直觀感覺來設(shè)計(jì)物體在場(chǎng)景中的運(yùn)動(dòng)。但由于真實(shí)的物體運(yùn)動(dòng)往往非常復(fù)雜,采用傳統(tǒng)的游戲設(shè)計(jì)技術(shù)一般來說難以生成令人滿意的運(yùn)動(dòng)。基于物理模型的游戲技術(shù)則考慮了物體在真實(shí)世界中的屬性,如它具有質(zhì)量、轉(zhuǎn)動(dòng)慣矩、彈性、摩擦力等,并采用動(dòng)力學(xué)原理來自動(dòng)生成物體的運(yùn)動(dòng)。當(dāng)場(chǎng)景中的物體受到外力作用時(shí),牛頓力學(xué)中的標(biāo)準(zhǔn)動(dòng)力學(xué)方程可用來自動(dòng)生成物體在各個(gè)時(shí)間點(diǎn)的位置、方向及其形狀。此時(shí),游戲設(shè)計(jì)者不必關(guān)心物體運(yùn)動(dòng)過程的細(xì)節(jié),只需確定物體運(yùn)動(dòng)所需的一些物理屬性及一些約束關(guān)系,如質(zhì)量、外力等。一般來說,游戲中的物理系統(tǒng)主要包括剛體,柔體,流體等物理模型。剛體模型是指不變形的物理模型,可以實(shí)現(xiàn)游戲中的物體碰撞效果,主要包含碰撞檢測(cè)和碰撞響應(yīng)的處理。可以處理諸如重力,摩擦力等。物體運(yùn)動(dòng)的逼真性直接影響到三維游戲在視覺,聽覺和觸覺等各方面的逼真性。而剛體模型作為游戲物理系統(tǒng)方面的重要部分,是實(shí)現(xiàn)三維游戲逼真運(yùn)動(dòng)的必要途徑,也是三維游戲引擎研究中的一個(gè)難點(diǎn)和重點(diǎn)。機(jī)頂盒是基于嵌入式系統(tǒng)的構(gòu)架而實(shí)現(xiàn)的,需要較高運(yùn)行環(huán)境的3D游戲移植到硬件資源非常貧乏的機(jī)頂盒中,問題是顯而易見的。機(jī)由于家庭的機(jī)頂盒通常配置較低,只擁有很低的運(yùn)算速度和很小的內(nèi)存。所以傳統(tǒng)的PC三維游戲顯然是無法簡(jiǎn)單的移植過來。幾乎所有的模型和算法都需要做簡(jiǎn)化處理。怎么樣才能使得簡(jiǎn)化處理后的模型和算法在大幅度簡(jiǎn)化了的同時(shí)又能依舊保持比較良好的效果是問題的關(guān)鍵。
發(fā)明內(nèi)容
基于家庭的機(jī)頂盒通常配置較低,只擁有很低的運(yùn)算速度和很小的內(nèi)存,三維游戲引擎中剛體模型的設(shè)計(jì)要滿足低計(jì)算量的要求,又要能逼真模擬剛體的一般運(yùn)動(dòng)。這里設(shè)計(jì)形狀如一個(gè)膠囊的幾何模型,稱之為膠囊體。以膠囊體為三維游戲引擎中剛體的幾何模型,該模型便于碰撞檢測(cè)算法的實(shí)現(xiàn),易于滿足低計(jì)算量的要求。同時(shí),本章根據(jù)需要選取適當(dāng)?shù)奈锢砹縼斫⒑?jiǎn)化的物理模型。結(jié)合剛體的幾何模型和物理模型,建立三維游戲引擎中的剛體模型。基于上述問題,本發(fā)明實(shí)施例提供了一種基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法,所述方法包括 在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型;基于質(zhì)心坐標(biāo)和質(zhì)量值簡(jiǎn)化剛體模型;基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒;基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試,判斷圖元間是否發(fā)生碰撞;基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè);基于三維游戲系統(tǒng)獲得剛體模型碰撞響應(yīng)結(jié)果。這里對(duì)剛性物體建模,首先需要根據(jù)研究目的選擇模擬仿真的剛性對(duì)象,然后才能根據(jù)剛性對(duì)象的外部特征建立符合其外形表面的計(jì)算機(jī)描述。在三維游戲引擎中,需要模擬仿真的對(duì)象有樹木,人體,棍棒等。我們注意到,經(jīng)簡(jiǎn)化后,這些對(duì)象可由圓柱體和球體組合而成。這里考慮使用如下的幾何模型,一個(gè)圓柱體,圓柱體的上下表面均結(jié)合一個(gè)半球體。其形狀如一個(gè)膠囊,可稱之為膠囊體(Capsule)。這里的膠囊體是兼容球體的。其次,要完整描述剛體的物理運(yùn)動(dòng)效果,需要牽涉到太多的物理量和大量的數(shù)學(xué)運(yùn)算,這不便于滿足家庭的機(jī)頂盒低計(jì)算量的要求。在這里,我們會(huì)根據(jù)需要選取適當(dāng)?shù)奈锢砹縼斫⒑?jiǎn)化的物理模型。最簡(jiǎn)單的剛體就是質(zhì)點(diǎn),這需要由質(zhì)心坐標(biāo)和質(zhì)量值來描述。剛體的一般運(yùn)動(dòng)(不受任何約束的運(yùn)動(dòng))可分解為質(zhì)心的平動(dòng)+通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)。與質(zhì)心的平動(dòng)相關(guān)的物理量是質(zhì)心線速度,質(zhì)心線加速度,質(zhì)心所受合力,由公式F = ma知,質(zhì)心線加速度可由質(zhì)心所受合力及質(zhì)量值求解,為簡(jiǎn)化起見,簡(jiǎn)化模型里不記錄質(zhì)心線加速度的值。通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)即是只有質(zhì)心固定不動(dòng),剛體繞此定點(diǎn)的某一瞬時(shí)軸線的轉(zhuǎn)動(dòng)。與轉(zhuǎn)動(dòng)相關(guān)的物理量是角速度,轉(zhuǎn)動(dòng)慣量,合力矩。通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)的特點(diǎn)是轉(zhuǎn)動(dòng)軸不固定,需確定軸的方位,在這里,規(guī)定軸的方位就是角速度的方向矢量。要實(shí)現(xiàn)摩擦效果,需要最大靜摩擦力與滑動(dòng)摩擦系數(shù)值。數(shù)字電視三維游戲環(huán)境要求低計(jì)算量,連續(xù)碰撞檢測(cè)算法計(jì)算量大,且在處理剛體轉(zhuǎn)動(dòng)問題時(shí)效率更低,所以連續(xù)碰撞檢測(cè)算法在數(shù)字電視三維游戲引擎中不宜采用。本專利中的剛體碰撞檢測(cè)算法就是基于離散碰撞檢測(cè)算法的。為優(yōu)化剛體的碰撞檢測(cè)算法,引入了包圍盒方法實(shí)現(xiàn)快速碰撞檢測(cè)。碰撞檢測(cè)算法效率的關(guān)鍵是物體間的相交測(cè)試檢測(cè),這里針對(duì)膠囊體Capsule設(shè)計(jì)基于等價(jià)類劃分的相交測(cè)試算法,設(shè)計(jì)了數(shù)字電視三維游戲引擎中剛體模型的碰撞檢測(cè)算法,該算法能較好的滿足低計(jì)算量的要求
設(shè)計(jì)基于物理特性的物體運(yùn)動(dòng)表示方法,在此基礎(chǔ)上討論基于物理特性的碰撞響應(yīng)。要模擬剛體的碰撞響應(yīng)效果,主要的問題是求解碰撞點(diǎn)和接觸力。給出了碰撞點(diǎn)求解的快速算法,結(jié)合前面的剛體碰撞響應(yīng)算法,在進(jìn)行碰撞檢測(cè)的同時(shí)求解出碰撞點(diǎn)。同時(shí),使用基于沖量的方法求解出接觸力。整合剛體的碰撞檢測(cè)算法,碰撞響應(yīng)算法,再結(jié)合剛體一般運(yùn)動(dòng)模擬、重力場(chǎng)模擬、摩擦力模擬,完成對(duì)簡(jiǎn)單剛體的運(yùn)動(dòng)模擬。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。圖I是本發(fā)明實(shí)施例中的基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法流程圖; 圖2是本發(fā)明實(shí)施例中的剛體幾何模型示意圖;圖3是本發(fā)明實(shí)施例中的Sphere/Capsule相交測(cè)試示意圖;圖4是本發(fā)明實(shí)施例中的剛體碰撞響應(yīng)流程圖;圖5是本發(fā)明實(shí)施例中的實(shí)施過程的狀態(tài)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施了例中提供的基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法,該方法主要包括在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型;基于質(zhì)心坐標(biāo)和質(zhì)量值簡(jiǎn)化剛體模型;基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒;基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試,判斷圖元間是否發(fā)生碰撞;基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè);基于三維游戲系統(tǒng)獲得剛體模型碰撞響應(yīng)結(jié)果。這里的在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型包括在三維笛卡爾坐標(biāo)系里,由P(c, n, h, r)唯一確定一個(gè)膠囊體,其中c是膠囊體的中心點(diǎn)坐標(biāo)值,η是膠囊體的方向向量,h是組成膠囊體的圓柱的半高值,r是組成膠囊體的半球的半徑值;當(dāng)h值為O時(shí),P (c, n, h, r)脫化成一個(gè)球體。這里的基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒包括以剛體模型的中心為包圍盒的球心,以剛體模型的Height與radius之和為包圍盒的半徑,可形成完全包圍剛體模型的包圍盒,倉Il建Capsule的軸對(duì)稱包圍盒AABB的高效率算法,設(shè)r是Capsule的radius值,首先找到 Capsule 兩個(gè)軸線段端點(diǎn),01 (xl, yl, zl)、02 (x2, y2, z2),則由點(diǎn)(max (xl, x2)+r,max (yl, y2) +r, max (zl, z2) +r)和點(diǎn)(min (xl, x2) +r, min (yl, y2) +r, min (zl, z2) -r)可形成完全包圍Capsule的AABB包圍盒。
這里的基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試中的相交測(cè)試包括如下之一或者組合Sphere的相交測(cè)試、或者AABB/AABB相交測(cè)試、Sphere與AABB之間的相交測(cè)試、Sphere/Capsule相交測(cè)試、Capsule/Capsule的相交測(cè)試、Capsule/Plane相交測(cè)試。這里的基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè)包括設(shè)定一個(gè)運(yùn)動(dòng)速度最大值,當(dāng)物體運(yùn)動(dòng)速度超過最大值時(shí),則修正物體的運(yùn)動(dòng)速度;三維游戲引擎中的時(shí)間步是由系統(tǒng)幀更新方法FrameMove O獲取的,讀取兩幀之間的CPU時(shí)間差即為一步長(zhǎng);步長(zhǎng)受系統(tǒng)硬件運(yùn)行效率的影響,或長(zhǎng)或短,這里采用自適應(yīng)的方法細(xì)化步長(zhǎng)。具體的,圖I示出了本發(fā)明實(shí)施例的方法流程圖,本發(fā)明實(shí)施例的實(shí)施過程如下SlOl :在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型。定義在三維笛卡爾坐標(biāo)系里,由P(c,n,h,r)唯一確定一個(gè)膠囊體。其中c是膠囊體的中心點(diǎn)坐標(biāo)值,η是膠囊體的方向向量,h是組成膠囊體的圓柱的半高值,r是組成膠囊體的半球的半徑值。當(dāng)h值為O時(shí),P(c,n,h,r)蛻化成一個(gè)球體。圖2示出了本發(fā)明實(shí)施例中的剛體幾何模型示意圖。給出膠囊體在游戲引擎中的結(jié)構(gòu)
struct CAPSULE{
D3DXVECTOR3 CtrPosition; // 中心點(diǎn)坐標(biāo) D3DXVECTOR3 Normal; //軸向量 float Height; //圓柱體半高度 float Radius;Il圓柱體的圓面半徑
} * LPCapsule;S102 :基于質(zhì)心坐標(biāo)和質(zhì)量值簡(jiǎn)化剛體模型要完整描述剛體的物理運(yùn)動(dòng)效果,需要牽涉到太多的物理量和大量的數(shù)學(xué)運(yùn)算,這不便于滿足三維游戲?qū)?shí)時(shí)性的要求。在這里,我們會(huì)根據(jù)需要選取適當(dāng)?shù)奈锢砹縼斫⒑?jiǎn)化的物理模型。最簡(jiǎn)單的剛體就是質(zhì)點(diǎn),這需要由質(zhì)心坐標(biāo)和質(zhì)量值來描述。剛體的一般運(yùn)動(dòng)(不受任何約束的運(yùn)動(dòng))可分解為質(zhì)心的平動(dòng)+通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)。與質(zhì)心的平動(dòng)相關(guān)的物理量是質(zhì)心線速度,質(zhì)心線加速度,質(zhì)心所受合力,由公式F = ma知,質(zhì)心線加速度可由質(zhì)心所受合力及質(zhì)量值求解,為簡(jiǎn)化起見,簡(jiǎn)化模型里不記錄質(zhì)心線加速度的值。通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)即是只有質(zhì)心固定不動(dòng),剛體繞此定點(diǎn)的某一瞬時(shí)軸線的轉(zhuǎn)動(dòng)。與轉(zhuǎn)動(dòng)相關(guān)的物理量是角速度,轉(zhuǎn)動(dòng)慣量,合力矩。通過質(zhì)心的定點(diǎn)轉(zhuǎn)動(dòng)的特點(diǎn)是轉(zhuǎn)動(dòng)軸不固定,需確定軸的方位,在這里,規(guī)定軸的方位就是角速度的方向矢量。要實(shí)現(xiàn)摩擦效果,需要最大靜摩擦力與滑動(dòng)摩擦系數(shù)值。 所以,在游戲引擎中可以定義如下一個(gè)剛體結(jié)構(gòu)
權(quán)利要求
1.一種基于數(shù)字家庭娛樂中三維模型的剛體模型建立方法,其特征在于,所述方法包括 在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型; 基于質(zhì)心坐標(biāo)和質(zhì)量值簡(jiǎn)化剛體模型; 基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒; 基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試,判斷圖元間是否發(fā)生碰撞; 基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè); 基于三維游戲系統(tǒng)獲得剛體模型碰撞響應(yīng)結(jié)果。
2.如權(quán)利要求I所述的方法,其特征在于,所述在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型包括 在三維笛卡爾坐標(biāo)系里,由P(c,n,h,r)唯一確定一個(gè)膠囊體,其中c是膠囊體的中心點(diǎn)坐標(biāo)值,η是膠囊體的方向向量,h是組成膠囊體的圓柱的半高值,r是組成膠囊體的半球的半徑值;當(dāng)h值為O時(shí),P(c, n, h, r)脫化成一個(gè)球體。
3.如權(quán)利要求2所述的方法,其特征在于,所述基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒包括 以剛體模型的中心為包圍盒的球心,以剛體模型的Height與radius之和為包圍盒的半徑,可形成完全包圍剛體模型的包圍盒,創(chuàng)建Capsule的軸對(duì)稱包圍盒AABB的高效率算法,設(shè)r是Capsule的radius值,首先找到Capsule兩個(gè)軸線段端點(diǎn),Ol (xl,yl,zl) >02 (x2,y2, z2),貝[I 由點(diǎn)(max (xl, x2) +r, max (yl, y2) +r, max (zI, z2) +r)和點(diǎn)(min (xl, x2) +r,min(yl, y2)+r, min(zl, z2)-r)可形成完全包圍 Capsule 的 AABB 包圍盒。
4.如權(quán)利要求3所述的方法,其特征在于,所述基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試中的相交測(cè)試包括如下之一或者組合 Sphere的相交測(cè)試、或者AABB/AABB相交測(cè)試、Sphere與AABB之間的相交測(cè)試、Sphere/Capsule 相交測(cè)試、Capsule/Capsule 的相交測(cè)試、Capsule/Plane 相交測(cè)試。
5.如權(quán)利要求4所述的方法,其特征在于,所述基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè)包括 設(shè)定一個(gè)運(yùn)動(dòng)速度最大值,當(dāng)物體運(yùn)動(dòng)速度超過最大值時(shí),則修正物體的運(yùn)動(dòng)速度;三維游戲引擎中的時(shí)間步是由系統(tǒng)幀更新方法FrameMove O獲取的,讀取兩幀之間的CPU時(shí)間差即為一步長(zhǎng);步長(zhǎng)受系統(tǒng)硬件運(yùn)行效率的影響,或長(zhǎng)或短,這里采用自適應(yīng)的方法細(xì)化步長(zhǎng)。
全文摘要
本發(fā)明實(shí)施例公開了一種數(shù)字家庭娛樂中三維模型的剛體模型建立方法,所述方法包括在三維笛卡爾坐標(biāo)系中建立三維游戲引擎中的剛體模型;基于質(zhì)心坐標(biāo)和質(zhì)量值簡(jiǎn)化剛體模型;基于剛體模型創(chuàng)造碰撞檢測(cè)包圍盒;基于物理模擬系統(tǒng)對(duì)建立的剛體模型進(jìn)行相交測(cè)試,判斷圖元間是否發(fā)生碰撞;基于三維游戲系統(tǒng)進(jìn)行剛體模型的碰撞檢測(cè);基于三維游戲系統(tǒng)獲得剛體模型碰撞響應(yīng)結(jié)果。本發(fā)明實(shí)施例以膠囊體為三維游戲引擎中剛體的幾何模型,該模型便于碰撞檢測(cè)算法的實(shí)現(xiàn),易于滿足低計(jì)算量的要求。同時(shí)根據(jù)需要選取適當(dāng)?shù)奈锢砹縼斫⒑?jiǎn)化的物理模型。結(jié)合剛體的幾何模型和物理模型,建立三維游戲引擎中的剛體模型。
文檔編號(hào)G06F19/00GK102663808SQ20121004937
公開日2012年9月12日 申請(qǐng)日期2012年2月29日 優(yōu)先權(quán)日2012年2月29日
發(fā)明者何劍琪, 林淑金, 林謀廣, 羅笑南 申請(qǐng)人:中山大學(xué)