專利名稱:基于微分域技術(shù)的人物群組細節(jié)保持方法
技術(shù)領(lǐng)域:
本發(fā)明涉及群組動畫中人物移動的方法,特別涉及到用來實現(xiàn)人物群組細節(jié)保持的方法。
技術(shù)背景人物群組細節(jié),是指在一組(群)人物模型之間的各種聯(lián)系關(guān)系形態(tài)記錄。這里所說的關(guān)系指的是多 方面的信息當人物以戰(zhàn)斗隊形的形式出現(xiàn)時,關(guān)系指人物之間的空間位置關(guān)系和隊形關(guān)系(例如在軍事 戰(zhàn)術(shù)編隊過程中,遠距離攻擊武器多需要近距離攻擊武器在一定距離處進行積極的防御和戰(zhàn)術(shù)性的火力配 合);當人物以血緣或熟悉程度來共同出現(xiàn)時,關(guān)系指的是人物之間通過空間位置反映出的親密程度(例 如,在城市中漫游的行人,三五成群走在一起的均為一起逛街的家庭成員或好友)當人物以競技對手的 關(guān)系來出現(xiàn)時,關(guān)系指的是對對手的運動特點設(shè)計的防守隊形的保持(例如,在籃球項目中,簡單的擋 拆配合會打亂初始的盯人防守,這時就需要改變盯人,通過分析防守隊員和對方隊員的空間距離產(chǎn)生的對 對方防守關(guān)系效果來輪轉(zhuǎn)換位,達到對對方每一個危險人物的各自進攻特點達到一個壓迫的最佳效果。人 物群組細節(jié)的保持,就是在考慮以上這些關(guān)系細節(jié),并在人物各自獨立運動過程當中,使其每個人物都將 這些關(guān)系細節(jié)因素看作為路徑規(guī)劃的一個考慮因素,從而當在整體上觀察所有人物的運動時,他們之間的 運動細節(jié)得以保持。例如,在即時戰(zhàn)略游戲當中,每次進行戰(zhàn)斗的初始階段要對戰(zhàn)斗隊形進行編輯,以保證各個戰(zhàn)斗單位 都可以發(fā)揮最大的戰(zhàn)斗效能。理論上,在這個戰(zhàn)斗團隊運動的過程當中,這個陣型是要保持不變的,這樣 才可以在苛刻的突發(fā)時間情況下做出有利的戰(zhàn)斗部署。然而,實際在運動過程當中,由于每一個個體都是 按照各自的運動特點和各自面對的地形和目標來對立的規(guī)劃每一個人物的運動路徑。這樣就導(dǎo)致在一個戰(zhàn) 斗團隊的運動過程當中,每個戰(zhàn)斗單位獨自運動(在已經(jīng)實現(xiàn)的主流游戲當中,基本上運動是按照所有 人物一字長蛇的方式在向前運動)。這種情況下,任何初始情況下靜態(tài)的戰(zhàn)斗隊形的編輯都失去了意義。 對于玩家來說,游戲的勝負就不再關(guān)注于隊伍的隊形謀劃,而變?yōu)楦雨P(guān)注于面對突發(fā)事件時通過微操作 來操控戰(zhàn)斗中的每一個人進入最佳位置。從而,游戲的可玩性就有策略級下降為戰(zhàn)術(shù)級的游戲風格。對于 非專業(yè)的游戲玩家,微操作的苛刻要求無形中提高了游戲門檻,降低了游戲興趣。因此,我們這里試圖找 出一種辦法來讓本身各自獨立的人物相互之間關(guān)聯(lián)起來,自發(fā)的,始終的來貫徹玩家布置給他們的戰(zhàn)術(shù)隊 形和戰(zhàn)術(shù)任務(wù)。從而將玩家從專業(yè)的枯燥的微操作訓(xùn)練中解放出來,參與到更加高級的戰(zhàn)略謀劃工作當中。如果將人物群組細節(jié)研究歸類,可以看作是一種局部細節(jié)保持研究(對于人物研究,局部細節(jié)指的就 是人物群組的戰(zhàn)術(shù)隊形細節(jié))。在圖形建模研究當中,局部細節(jié)研究是一個很重要的研究方向。本方法就 是借鑒局部細節(jié)研究的方法而來的。其中微分域網(wǎng)格變形方法是模型變形領(lǐng)域最新的研究方法,我們的方通過分析,我們發(fā)現(xiàn)群組細節(jié)研究同微分域網(wǎng)格技術(shù)之間存在著天然的聯(lián)系。微分域網(wǎng)格技術(shù)通過對 組成模型的點之間的距離關(guān)系加以控制來保持模型整體上的細節(jié)特征的相似性。同理,我們可以將人物模 型場景看成是由一個個一個人物的點所組成的一個模型。這樣,人物群組細節(jié)保持的問題就抽象成了人物 模型的局部細節(jié)保持方法。于是,我們通過將微分域網(wǎng)格技術(shù)作用于一個一個人的點上,就可以達到將場 景中的人物構(gòu)成的群組細節(jié)保持下去的目的。以下介紹一下微分域技術(shù)設(shè)G- (V, E )為一個模型的3D三角面片網(wǎng)格。其中,v表示網(wǎng)格當中的點的位置,E表示點與 點之間的邊的連接。我們用Pj表示點集中某一個向的空間坐標位置。接下來,我們希望找到一個合適的算子來保存記錄三角形當中的局部細節(jié)關(guān)系。將這個算子表示為D(Pj)。我們希望這個算子可以有效的記錄某個點所在處的局部細節(jié)信息。目前,在微分域網(wǎng)格計算處理變形的研究當中,提出了許多箅子的模 型。這里為了說明問題,我們將簡單的下面箅子引入到人物群組細節(jié)保持的方法當中。《■ ,:(乂V)e五這個算子,實際上就是記錄了點Pj同他的所有的鄰接點之間的距離關(guān)系,表示了點Pj同周圍的點的空間位置關(guān)系的差異的程度。其中,算子的計箅為點的線性加和,這樣,我們就可以通過算子的表達式來 達到我們的期望即將新的點的位置的計算表示為若干個相關(guān)的點的線性組合關(guān)系。/7乂 Sfesup(y),i".其中,S(&)是一個近似函數(shù),通過對s的計算得到新的巧的新的值。suP^)表示j點的鄰接點,或者說,上面的公式中的i表示所有與j有邊連接的點。這樣,我們的任務(wù)分解為兩個任務(wù) 一,由算子計算得到一個15(7^),從而得到Pj的新的值;二,使變形后的每一個點重新計算出來的2^^》,與原來的D(^)保持盡量小的差距(由于算子是都點之間的空間位置,或者說,細節(jié)的保持,保持盡量小的差距也就保證了細節(jié)的一致)?;蛘哒f,在由n個算子組成的n維歐式空間里,我們要求某個新的點的位置使它距離原來的點的距離最小。這是,我們很容易地想到利用最小二乘法來解決以上的問題。觀察算子^(P》的計算公式,我們可以將它看成是關(guān)于所有n個點的一個線性組合。對于n個點的ii個算子,如果我們將他們合并起來成為一個WxW的矩陣。又通過算子的計算公式,.我們可以得到<formula>formula see original document page 5</formula>我們就得到了一個可以表示上面算子公式的線性方程:AX = b其中,A就表示為矩陣長度X為包括所有的點的空間位置的向量^'P"Pv"'/VJ , b則表示所有為了保持b的變化最小,或者說,在n維歐氏空間中的距離最小,我們采用最小二乘法來計算方程這樣,我們就得到了更新后的點的位置。 發(fā)明內(nèi)容本發(fā)明的目的就是提出一種實現(xiàn)人物群組細節(jié)保持的方法,該方法將微分域技術(shù)應(yīng)用到人物群組細節(jié) 研究當中,并將原有的最小二乘法簡化和離散化,實現(xiàn)人物群組細節(jié)的保持。將兩種方法統(tǒng)一在一起,主要結(jié)合點就在于算子的意義。新算子的提出基于下面三條引理(1) 方向差距越大,算子的距離就會越大。(2) 兩人物之間距離變大時,細節(jié)的變化會得到放大。(3) 方向上和距離上對細節(jié)的影響各自產(chǎn)生貢獻。在上面三條引理的指導(dǎo)下,我們設(shè)計出新的算子,并釆用了以下的步驟來實現(xiàn)人物群組細節(jié)保持方法:(a) 初^化初始化各項數(shù)據(jù),同時根據(jù)算子方程來計算每個人物的細節(jié)算子。設(shè)置恒定點和任意移 動點。(b) 變形根據(jù)最小二乘法,找出使算子整體最小的人物移動方式,并將人物移動到新的位置。
圖1方法的,2記錄的原始的戰(zhàn)術(shù)隊形站位圖3移動可任意移動人物后隊形的變化4移動可任意移動人物后隊形的變化5移動可任意移動人物后隊形的變化閣具'體實施方式 (1)設(shè)計算子在這一部分當中,最為重要的是設(shè)計一個算子方程,能夠最好的保存和記錄人物之間的距離關(guān)系。 原始的微,域網(wǎng)格技術(shù)當中,箅子保存的是每一個點和之間的鄰接點的拉普拉斯參數(shù),也就是與鄰接 點的距離空間向量加權(quán)和。對于一個封閉的多邊體,這種方法被實驗證明是有效的。但是對于空間上 并不封閉的人物運動,這個算子的效果達不到要求,因此我們基于舊的算子重新設(shè)計新的算子。舊的算子的表達公式為"乂- i:(力i)e五觀察這個算子,我們就會發(fā)現(xiàn),在這個箅子方程當中只是考慮了點和點之間的距離關(guān)系,而沒有考慮 點和點之間的在方向上的關(guān)系。換句話說對于兩個點來說, 一個點只要繞著一個固定的半徑圍繞另一 個點來旋轉(zhuǎn),我們就可以說兩個點之間的箅子不變!對于模型的變型來說,由于點的數(shù)量和鄰接關(guān)系較多 和較固定,且模型本身的點是一個封閉的集合。這樣,對于網(wǎng)格模型,原來的算子仍能夠起到作用。但是, 對與人物模型,原有的效果很難達到效果。因此,我們嘗試采用新的算子。我們嘗試在原來的算子的基礎(chǔ)上增加記錄新的細節(jié)信息,即點與點之間的向量的方向。根據(jù)上面所說的三條引理,我們得到如下的箅子計算公式上面的算子方程當中,sm"y'(Py—A)由引理一、二得到,根據(jù)引理三,我們又將距離的部分和方 向的部分各自相乘并相加到一起,最終得到上面的公式。這樣,我們就可以根據(jù)這個算子來計算每個人物的初始算子。同時,我們又可以將上面的公式看作是每一個點的基準^^0(P》。這樣根據(jù)連續(xù)流方法,每一次的C都可以根據(jù)'=wAi^7 '=nu^7來作為c在每一個格針對每一個人的值。這樣,算子就可以被引 用到連續(xù)流的方法當中。 (2)變形中的離散化最小二乘法在這一部分當中,我們主要要處理人物的移動問題(對應(yīng)到模型數(shù)字幾何處理當中,就是幾何點的變形 問題)。其中最重要的問題,就是如何對人物之間的距離進行簡單的最小二乘法計算。根據(jù)模型數(shù)字幾何變形研究的分類,我們也可以將人物分為三類(a) 任意移動的人物。這些人物可能為用戶操控,或某些特定程序控制,這些人物的運動自由度最大,可以隨意按照操控移 動到任何地方。(b) 禁止移動的入物。這些人物由于實際程序的限制或者戰(zhàn)術(shù)的要求,無法移動到新的點。(c) 自主調(diào)節(jié)的人物這些人物將根據(jù)移動的人物和禁止移動的人物的位置來調(diào)整自己的位置,來達到整體細節(jié)得到保持的 效果。根據(jù)以上分類,我們得知,方法的關(guān)鍵在于最后的自主調(diào)節(jié)人物的運動方法。按照最小二乘法,我們 需要根據(jù)公式來計算每一個人的新位置。但是考慮到人物移動的特點,我們嘗試構(gòu)造一個化簡的方法。首先,每個人的移動都是圍繞自己的周圍的幾個格來進行的。換句話說,每個人只需要計算自己的周圍可移動的幾個有限的方向上的單元格(4方向或者8方向)。因此,我們可以嘗試采用如下的簡化方法初始化設(shè)計一個臨時變量maxtotal,為它賦一個很大的值;還有一個用于指向場景中點的指針point。 對場景中可以自主調(diào)節(jié)的人物都設(shè)定為未標記。當有任意移動的人物移動時(a) 對于場景中每一個可以自主調(diào)節(jié)的人物,如果該人未被標記,則轉(zhuǎn)向(b)。否則搜索下一位未被標 記的人物。如果所有人物全被標記,則退出等待下一次驅(qū)動條件。(b) 搜索該人物下—時刻所能到達的點,選出沒被標記的點《z'e(l,加),其中m為該人物所能到達的 所有點的總數(shù);如果全部都給標記了,則將人物下一個時刻所要到達的點設(shè)為point所指向的點,設(shè)置速度 和其他人物運動參數(shù),標記此人后轉(zhuǎn)到(a);否則將該人物設(shè)定為該位置/J,轉(zhuǎn)到(c);(c) 計算該人物在/)點的新算子的估計值,記錄為A,并標記此點。(d) 如果A-該人物初始算子的值〈maxtotal ,則記錄maxtotal=/),-該人物初始算子的值,point指向《.。最后標記該點,轉(zhuǎn)向(b)。步驟(C)中的計算該人物在《點的新算子的估計值采用以下方法(1) 對場景中任意移動的人物和禁止移動的人物,用我們的算子計算出靜態(tài)cost(2) 對場景中自主調(diào)節(jié)的每一個人物,對該人物所能到達的每一點ct計算此人到q的概率P,然后加權(quán) 算出動態(tài)cost(3) 該點的細節(jié)算子為靜態(tài)cost+動態(tài)cost上面說提及的概率P在我們的方法里可以先簡單地假設(shè)到各點的概率是相等的。通過以上方法,我們就最終得出了自主調(diào)節(jié)人物每一步所能走到的位置。我們用程序?qū)崿F(xiàn)了關(guān)于新的算子的演示程序,取得了非常好的效果。結(jié)果請看附圖。
權(quán)利要求
1一個基于微分域技術(shù)的人物群組細節(jié)保持方法,其特征是采用了新的算子作為記錄人物的局部細節(jié)信息,方法步驟為初始化設(shè)計一個臨時變量maxtotal,為它賦一個很大的值;還有一個用于指向場景中點的指針point。對場景中可以自主調(diào)節(jié)的人物都設(shè)定為未標記。當有任意移動的人物移動時(a)對于場景中每一個可以自主調(diào)節(jié)的人物,如果該人未被標記,則轉(zhuǎn)向(b)。否則搜索下一位未被標記的人物。如果所有人物全被標記,則退出等待下一次驅(qū)動條件。(b)搜索該人物下一時刻所能到達的點,選出沒被標記的點Pi i∈(1,m),其中m為該人物所能到達的所有點的總數(shù);如果全部都給標記了,則將人物下一個時刻所要到達的點設(shè)為point所指向的點,設(shè)置速度和其他人物運動參數(shù),轉(zhuǎn)到(a);否則將該人物設(shè)定為該位置Pi,轉(zhuǎn)到(c);(c)計算該人物在Pi點的新算子的估計值,記錄為Di。(d)如果Di-該人物初始算子的值<maxtotal,則記錄maxtotal=Di-該人物初始算子的值,point指向Pi。最后標記該點,轉(zhuǎn)向(b)。
2.根據(jù)權(quán)利要求l所述的新的算子,其特征是該算子的表達式為= J" -丁 Z p,)2 + J] ii sin",.(凡-a) ii2 ,其中尸.為要求算子的點, 《為與^有鄰接關(guān)系的點,aj表示的是向量《到^與向量A到與它鄰接點之間的質(zhì)心的夾角,
3.根據(jù)權(quán)利要求1所述的計算該人物在《點的新算子的估計值,其特征為采用方法為(a) 對場景中任意移動的人物和禁止移動的人物,用權(quán)利要求2所述的算子計算出靜態(tài)cost(b) 對場景中自主調(diào)節(jié)的每一個人物,對該人物所能到達的每一點q,計算此人到q的概率P,然 后加權(quán)算出動態(tài)cost(c) 該點的細節(jié)算子為靜態(tài)cos&動態(tài)cost 。
4.根據(jù)權(quán)利要求1所述的新的算子,其特征是該算子應(yīng)遵循以下n個引理(a) 方向差距越大,算子的距離就會越大。(b) 兩人物之間距離變大時,細節(jié)的變化會得到放大,(c) 方向上和距離上對細節(jié)的影響各自產(chǎn)生貢獻。
全文摘要
一個基于微分域技術(shù)的人物群組細節(jié)保持方法。通過借鑒微分域技術(shù)中的用于保持變形過程中的局部細節(jié)的算子,我們提出了新的算子,并利用了人物移動的特點簡化了最小二乘方法,從以實現(xiàn)了一個高效的用于實現(xiàn)人物群組細節(jié)保持的方法。該方法可以用于足球類游戲中的戰(zhàn)術(shù)配合或者其他人物策略游戲中的人物智能問題。
文檔編號G06T13/00GK101231759SQ200710030730
公開日2008年7月30日 申請日期2007年10月9日 優(yōu)先權(quán)日2007年10月9日
發(fā)明者博 李, 紀慶革 申請人:中山大學(xué)