欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)及方法

文檔序號(hào):6425804閱讀:258來源:國(guó)知局
專利名稱:群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)及方法,屬于自主智能體動(dòng)畫技術(shù)領(lǐng)域。
背景技術(shù)
群體動(dòng)畫的運(yùn)動(dòng)控制方法主要為強(qiáng)調(diào)群體性和可控性的自上而下方法和強(qiáng)調(diào)個(gè)體自主性的自下而上方法兩種。自上而下的方法先由動(dòng)畫師確定群體的行為,并由群體行為決定個(gè)體的行為。而自下而上的方法中,個(gè)體自主地確定運(yùn)動(dòng)行為,所有個(gè)體的自主運(yùn)動(dòng)決定群體性。目前,群體動(dòng)畫運(yùn)動(dòng)控制中可控性的研究往往忽略了自主性要求,難以達(dá)到真實(shí)的運(yùn)動(dòng)模擬效果,對(duì)實(shí)時(shí)交互控制的研究也較少;而對(duì)自主性為主的運(yùn)動(dòng)控制研究,又缺乏動(dòng)畫師的交互控制,動(dòng)畫師僅能控制群體運(yùn)動(dòng)的目標(biāo),很難預(yù)知群體的運(yùn)動(dòng)趨勢(shì)。

發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提出了一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)及方法,將自主性與可控性的兩種群體動(dòng)畫的運(yùn)動(dòng)控制方法相結(jié)合,在沒有動(dòng)畫師干預(yù)的情況下,群體可以根據(jù)路徑規(guī)劃的結(jié)果自主地運(yùn)動(dòng),而當(dāng)動(dòng)畫師需要對(duì)運(yùn)動(dòng)進(jìn)行干預(yù)時(shí),則可以實(shí)時(shí)地改變?nèi)后w的運(yùn)動(dòng)路徑和個(gè)體運(yùn)動(dòng)方向,不用暫停動(dòng)畫就可實(shí)現(xiàn)運(yùn)動(dòng)控制中的交互操作。本發(fā)明為解決其技術(shù)問題采用如下技術(shù)方案
一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng),包括場(chǎng)景劃分模塊、路徑規(guī)劃模塊、群體控制模塊、個(gè)體控制模塊、碰撞處理模塊、數(shù)學(xué)運(yùn)算模塊、系統(tǒng)模塊和渲染模塊,其中,場(chǎng)景劃分模塊、路徑規(guī)劃模塊和群體控制模塊順序連接、碰撞處理模塊的輸入端、個(gè)體控制模塊的輸入端分別與群體控制模塊的輸出端連接,碰撞處理模塊的輸出端、個(gè)體控制模塊的輸出端分別與系統(tǒng)模塊的輸入端相連接,系統(tǒng)模塊和渲染模塊順序連接,數(shù)學(xué)運(yùn)算模塊分別與群體控制模塊和個(gè)體控制模塊連接。所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,包括群體運(yùn)動(dòng)控制階段和個(gè)體運(yùn)動(dòng)控制階段,并且這兩個(gè)控制階段分別進(jìn)行,
其中,所述群體運(yùn)動(dòng)控制階段包括以下步驟
1)場(chǎng)景輸入步驟,將三維場(chǎng)景利用平行投影投影到二維運(yùn)動(dòng)平面上,并進(jìn)行二值化,障礙物為黑色,通行部分為白色,并存在圖像文件中;
2)場(chǎng)景處理步驟,包括分割步驟、節(jié)點(diǎn)存儲(chǔ)步驟和鄰域查找步驟;
3)路徑規(guī)劃步驟,確定起始點(diǎn)和目標(biāo)點(diǎn),用人工智能中的搜索算法搜索群體的運(yùn)動(dòng)路徑,完成路徑規(guī)劃;
4)運(yùn)動(dòng)曲線生成步驟,用分段三次Bezier曲線連接搜索到的路徑節(jié)點(diǎn),進(jìn)行平滑處
理;
5)運(yùn)動(dòng)曲線編輯步驟,動(dòng)畫師根據(jù)需求編輯生成的運(yùn)動(dòng)曲線; 其中,所述個(gè)體運(yùn)動(dòng)控制階段包括以下步驟
1)運(yùn)動(dòng)分量計(jì)算步驟,根據(jù)群體的運(yùn)動(dòng)路徑,確定中心控制點(diǎn),計(jì)算個(gè)體運(yùn)動(dòng)的引導(dǎo)分量和范圍保持分量;
42)運(yùn)動(dòng)分量加權(quán)疊加步驟,動(dòng)畫師確定引導(dǎo)分量和范圍保持分量的權(quán)值,并將兩分量加權(quán)后進(jìn)行疊加;
3)個(gè)體間碰撞檢測(cè)步驟,采用弓丨力和斥力法實(shí)現(xiàn)個(gè)體間的碰撞檢測(cè);對(duì)于每個(gè)個(gè)體,碰撞處理模塊先確定其在引力和斥力的有效范圍內(nèi)的其他個(gè)體,計(jì)算該個(gè)體與其他個(gè)體間的距離,并根據(jù)該距離計(jì)算各自所受的引力或者斥力所產(chǎn)生的速度分量,過于靠近則產(chǎn)生斥力生成相互遠(yuǎn)離的運(yùn)動(dòng)分量,以避免碰撞,反之則產(chǎn)生引力生成相互靠近的運(yùn)動(dòng)分量;
4)個(gè)體與障礙物碰撞檢測(cè)步驟,根據(jù)上述運(yùn)動(dòng)分量計(jì)算步驟、運(yùn)動(dòng)分量加權(quán)疊加步驟和個(gè)體間碰撞檢測(cè)步驟生成的個(gè)體速度,碰撞處理模塊計(jì)算下一幀中每個(gè)個(gè)體的位置并判斷是否與障礙物發(fā)生碰撞,若判斷某個(gè)個(gè)體即將發(fā)生碰撞,則對(duì)該個(gè)體執(zhí)行緊急避障過程;
5)實(shí)時(shí)控制步驟,動(dòng)畫師確定交互控制的權(quán)值,系統(tǒng)模塊判斷并接受動(dòng)畫師通過鍵盤輸入的控制指令,生成方向分量,進(jìn)行加權(quán)操作后與個(gè)體運(yùn)動(dòng)控制模塊所生成引導(dǎo)分量進(jìn)行疊加,生成新的引導(dǎo)分量以改變個(gè)體的運(yùn)動(dòng)。所述群體運(yùn)動(dòng)控制階段步驟2)場(chǎng)景處理步驟中,
所述的分割步驟,對(duì)場(chǎng)景進(jìn)行四叉樹分割,得到場(chǎng)景節(jié)點(diǎn)并利用Morton碼對(duì)場(chǎng)景節(jié)點(diǎn)進(jìn)行編碼,從左上開始直到左下按順時(shí)針的方向分別標(biāo)記位置碼,同時(shí)將葉節(jié)點(diǎn)標(biāo)示為可通行或障礙物;
所述的節(jié)點(diǎn)存儲(chǔ)步驟,用Vector容器存儲(chǔ)分割步驟中所得到的所有葉節(jié)點(diǎn),包括葉節(jié)點(diǎn)的位置編碼、所表示的場(chǎng)景區(qū)域以及是否通行的信息;
所述的鄰域查找步驟,對(duì)存儲(chǔ)的每個(gè)可通行的節(jié)點(diǎn),利用編碼轉(zhuǎn)換的方法查找其在場(chǎng)景中東南西北方向上的鄰域節(jié)點(diǎn),并存在Vector容器中對(duì)應(yīng)的節(jié)點(diǎn)的位置。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟2)中,引導(dǎo)分量和范圍保持分量的權(quán)值取值范圍分別為
以及
,并且兩者的和必須滿足小于等于1。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)或者步驟4)中的個(gè)體采用圓柱體包圍盒。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟4)中的障礙物采用長(zhǎng)方體包圍盒。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)中所述引力和斥力的有效范圍為1. ,引力和斥力所生成的速度分量方向均為兩個(gè)個(gè)體的中心連線方向。所述的個(gè)體運(yùn)動(dòng)控制階段中,在執(zhí)行步驟5)實(shí)時(shí)控制步驟的同時(shí)也需執(zhí)行步驟 3)個(gè)體間碰撞檢測(cè)步驟和步驟4)個(gè)體與障礙物碰撞檢測(cè)步驟,若檢測(cè)到動(dòng)畫師的交互控制會(huì)導(dǎo)致碰撞,則檢測(cè)出會(huì)發(fā)生碰撞的個(gè)體不響應(yīng)該控制指令,即對(duì)該個(gè)體不執(zhí)行引導(dǎo)分量和控制分量的疊加操作。本發(fā)明的有益效果如下
本發(fā)明將群體的運(yùn)動(dòng)控制和個(gè)體的運(yùn)動(dòng)控制分開進(jìn)行,使得動(dòng)畫師在制作過程中可以對(duì)群體的運(yùn)動(dòng)趨勢(shì)有整體的把握,同時(shí)也提高了個(gè)體的各個(gè)運(yùn)動(dòng)分量的計(jì)算效率,提高了運(yùn)動(dòng)控制的效率。在個(gè)體運(yùn)動(dòng)控制方面,各個(gè)運(yùn)動(dòng)分量的計(jì)算只需經(jīng)過簡(jiǎn)單的線性計(jì)算就可完成,在每幀動(dòng)畫中都可以動(dòng)態(tài)生成,動(dòng)畫師可以在運(yùn)動(dòng)模擬的過程輸入相應(yīng)的方向矢量就可以很容易地改變?nèi)后w的運(yùn)動(dòng)路徑和每個(gè)個(gè)體的速度方向。每個(gè)個(gè)體的運(yùn)動(dòng)分量都可以自主生成,既實(shí)現(xiàn)了群體的自主性運(yùn)動(dòng)又提出了一種實(shí)時(shí)交互控制的方案,既體現(xiàn)了群體動(dòng)畫運(yùn)動(dòng)控制的自主性,又體現(xiàn)了可控性。


圖1群體動(dòng)畫控制運(yùn)動(dòng)控制系統(tǒng)的模塊連接圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明創(chuàng)造做進(jìn)一步詳細(xì)說明。如圖1為群體動(dòng)畫控制運(yùn)動(dòng)控制系統(tǒng)的模塊連接圖。該系統(tǒng)包括場(chǎng)景劃分模塊、 路徑規(guī)劃模塊、群體控制模塊、個(gè)體控制模塊、碰撞處理模塊、數(shù)學(xué)運(yùn)算模塊、系統(tǒng)模塊和渲染模塊,其中,場(chǎng)景劃分模塊、路徑規(guī)劃模塊和群體控制模塊順序連接、碰撞處理模塊的輸入端、個(gè)體控制模塊的輸入端分別與群體控制模塊的輸出端連接,碰撞處理模塊的輸出端、 個(gè)體控制模塊的輸出端分別與系統(tǒng)模塊的輸入端相連接,系統(tǒng)模塊和渲染模塊順序連接, 數(shù)學(xué)運(yùn)算模塊分別與群體控制模塊和個(gè)體控制模塊連接。所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,包括群體運(yùn)動(dòng)控制階段和個(gè)體運(yùn)動(dòng)控制階段,并且這兩個(gè)控制階段分別進(jìn)行,
其中,所述群體運(yùn)動(dòng)控制階段包括以下步驟
1)場(chǎng)景輸入步驟,將三維場(chǎng)景利用平行投影投影到二維運(yùn)動(dòng)平面上,并進(jìn)行二值化,障礙物為黑色,通行部分為白色,并存在圖像文件中;
2)場(chǎng)景處理步驟,包括分割步驟、節(jié)點(diǎn)存儲(chǔ)步驟和鄰域查找步驟;
3)路徑規(guī)劃步驟,確定起始點(diǎn)和目標(biāo)點(diǎn),用人工智能中的搜索算法搜索群體的運(yùn)動(dòng)路徑,完成路徑規(guī)劃;
4)運(yùn)動(dòng)曲線生成步驟,用分段三次Bezier曲線連接搜索到的路徑節(jié)點(diǎn),進(jìn)行平滑處
理;
5)運(yùn)動(dòng)曲線編輯步驟,動(dòng)畫師根據(jù)需求編輯生成的運(yùn)動(dòng)曲線; 其中,所述個(gè)體運(yùn)動(dòng)控制階段包括以下步驟
1)運(yùn)動(dòng)分量計(jì)算步驟,根據(jù)群體的運(yùn)動(dòng)路徑,確定中心控制點(diǎn),計(jì)算個(gè)體運(yùn)動(dòng)的引導(dǎo)分量和范圍保持分量;
2)運(yùn)動(dòng)分量加權(quán)疊加步驟,動(dòng)畫師確定引導(dǎo)分量和范圍保持分量的權(quán)值,并將兩分量加權(quán)后進(jìn)行疊加;
3)個(gè)體間碰撞檢測(cè)步驟,采用弓丨力和斥力法實(shí)現(xiàn)個(gè)體間的碰撞檢測(cè);對(duì)于每個(gè)個(gè)體,碰撞處理模塊先確定其在引力和斥力的有效范圍內(nèi)的其他個(gè)體,計(jì)算該個(gè)體與其他個(gè)體間的距離,并根據(jù)該距離計(jì)算各自所受的引力或者斥力所產(chǎn)生的速度分量,過于靠近則產(chǎn)生斥力生成相互遠(yuǎn)離的運(yùn)動(dòng)分量,以避免碰撞,反之則產(chǎn)生引力生成相互靠近的運(yùn)動(dòng)分量;
4)個(gè)體與障礙物碰撞檢測(cè)步驟,根據(jù)上述運(yùn)動(dòng)分量計(jì)算步驟、運(yùn)動(dòng)分量加權(quán)疊加步驟和個(gè)體間碰撞檢測(cè)步驟生成的個(gè)體速度,碰撞處理模塊計(jì)算下一幀中每個(gè)個(gè)體的位置并判斷是否與障礙物發(fā)生碰撞,若判斷某個(gè)個(gè)體即將發(fā)生碰撞,則對(duì)該個(gè)體執(zhí)行緊急避障過程;
5)實(shí)時(shí)控制步驟,動(dòng)畫師確定交互控制的權(quán)值,系統(tǒng)模塊判斷并接受動(dòng)畫師通過鍵盤輸入的控制指令,生成方向分量,進(jìn)行加權(quán)操作后與個(gè)體運(yùn)動(dòng)控制模塊所生成引導(dǎo)分量進(jìn)行疊加,生成新的引導(dǎo)分量以改變個(gè)體的運(yùn)動(dòng)。所述群體運(yùn)動(dòng)控制階段步驟2)場(chǎng)景處理步驟中, 所述的分割步驟,對(duì)場(chǎng)景進(jìn)行四叉樹分割,得到場(chǎng)景節(jié)點(diǎn)并利用Morton碼對(duì)場(chǎng)景節(jié)點(diǎn)進(jìn)行編碼,從左上開始直到左下按順時(shí)針的方向分別標(biāo)記位置碼,同時(shí)將葉節(jié)點(diǎn)標(biāo)示為可通行或障礙物;
所述的節(jié)點(diǎn)存儲(chǔ)步驟,用Vector容器存儲(chǔ)分割步驟中所得到的所有葉節(jié)點(diǎn),包括葉節(jié)點(diǎn)的位置編碼、所表示的場(chǎng)景區(qū)域以及是否通行的信息;
所述的鄰域查找步驟,對(duì)存儲(chǔ)的每個(gè)可通行的節(jié)點(diǎn),利用編碼轉(zhuǎn)換的方法查找其在場(chǎng)景中東南西北方向上的鄰域節(jié)點(diǎn),并存在Vector容器中對(duì)應(yīng)的節(jié)點(diǎn)的位置。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟2)中,引導(dǎo)分量和范圍保持分量的權(quán)值取值范圍分別為
以及
,并且兩者的和必須滿足小于等于1。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)或者步驟4)中的個(gè)體采用圓柱體包圍盒。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟4)中的障礙物采用長(zhǎng)方體包圍盒。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)中所述引力和斥力的有效范圍為1. ,引力和斥力所生成的速度分量方向均為兩個(gè)個(gè)體的中心連線方向。所述的群體運(yùn)動(dòng)控制階段的步驟2)場(chǎng)景處理步驟中,節(jié)點(diǎn)存儲(chǔ)步驟將每個(gè)葉節(jié)點(diǎn)的相關(guān)信息存儲(chǔ)到所述的場(chǎng)景分割模塊中所述的Vector容器中,所述相關(guān)信息包括節(jié)點(diǎn)在Vector容器中的位置號(hào)、節(jié)點(diǎn)的位置編碼、所包含區(qū)域的左上角點(diǎn)坐標(biāo)和右下角點(diǎn)坐標(biāo)、所在的層、節(jié)點(diǎn)是障礙物節(jié)點(diǎn)還是可通行節(jié)點(diǎn)、可通行節(jié)點(diǎn)在東南西北方向上的鄰域節(jié)
點(diǎn)ο所述的群體運(yùn)動(dòng)控制階段的步驟2)場(chǎng)景處理步驟中,分割步驟中從左上開始直到左下按順時(shí)針的方向分別標(biāo)記位置碼,分別為1,2,3,4。所述的群體運(yùn)動(dòng)控制階段2)場(chǎng)景處理步驟中,,鄰域查找步驟所述的鄰域指某個(gè)可通行節(jié)點(diǎn)在東南西北四個(gè)方向上的可通行鄰域節(jié)點(diǎn),對(duì)每個(gè)可通行節(jié)點(diǎn),利用編碼轉(zhuǎn)換規(guī)則先求出其在各個(gè)方向上的相同大小的鄰域節(jié)點(diǎn)的編碼,之后在所述的Vector容器中查找,若有則記錄其在Vector容器的位置號(hào),否則在Vector容器中查找是否存在其子節(jié)點(diǎn)或父節(jié)點(diǎn),若查找到則記錄所述Vector容器的位置號(hào),沒有則說明在該方向上鄰域不存在。所述的群體運(yùn)動(dòng)控制階段2)場(chǎng)景處理步驟中,,鄰域查找步驟中的編碼轉(zhuǎn)換規(guī)則為,求東鄰域或西鄰域,編碼值1和2互相轉(zhuǎn)換,編碼值3和4相互轉(zhuǎn)換;求南鄰域或北鄰域,編碼值2和3互相轉(zhuǎn)換。求出其在各個(gè)方向上的相同大小的鄰域節(jié)點(diǎn)的編碼,具體步驟為
求東鄰域,若編碼值末位為1或4,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,求解結(jié)束,若編碼值末位為2或3,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,去掉末位后再進(jìn)行判斷求解;
求南鄰域,若編碼值末位為1或2,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,求解結(jié)束,若編碼值末位為3或4,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,去掉末位后再進(jìn)行判斷求解;
求西鄰域,若編碼值末位為2或3,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,求解結(jié)束,若編碼值末位為1或4,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,去掉末位后再進(jìn)行判斷求解;
求北鄰域,若編碼值末位為3或4,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,求解結(jié)束,若編碼值末位為1或2,則對(duì)該位進(jìn)行相應(yīng)的編碼轉(zhuǎn)換,去掉末位后再進(jìn)行判斷求解。所述的群體運(yùn)動(dòng)控制階段的步驟3)的路徑規(guī)劃步驟,采用A*算法完成全局路徑規(guī)劃,A*算法的啟發(fā)式函數(shù)用當(dāng)前點(diǎn)和目標(biāo)點(diǎn)的歐幾里得距離表示,搜索到的路徑節(jié)點(diǎn)用
7鏈表存儲(chǔ)在所述的群體控制模塊中。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟1)運(yùn)動(dòng)分量計(jì)算步驟中,將路徑規(guī)劃模塊所生成的群體運(yùn)動(dòng)曲線作為輸入存儲(chǔ)到所述的個(gè)體運(yùn)動(dòng)控制模塊中。個(gè)體運(yùn)動(dòng)控制模塊根據(jù)該運(yùn)動(dòng)曲線以及群體所處位置的中心,在曲線上設(shè)定中心控制點(diǎn),取曲線在該點(diǎn)處的切向方向?yàn)橐龑?dǎo)分量的方向,大小則由動(dòng)畫師事先輸入,生成引導(dǎo)分量。個(gè)體運(yùn)動(dòng)控制模塊計(jì)算每個(gè)個(gè)體離中心控制點(diǎn)的距離,根據(jù)該距離計(jì)算每個(gè)個(gè)體范圍保持分量的大小。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟1)運(yùn)動(dòng)分量計(jì)算步驟中,確定中心控制點(diǎn),其確定規(guī)則為選取運(yùn)動(dòng)曲線起始點(diǎn)為第一個(gè)中心控制點(diǎn),其后每個(gè)中心控制點(diǎn)都與前一個(gè)中心控制點(diǎn)在曲線上相隔ν匪的長(zhǎng)度,其中,所述指群體最大的運(yùn)動(dòng)速率,由動(dòng)畫師指定。所述的個(gè)體運(yùn)動(dòng)控制階段的步驟4)個(gè)體與障礙物碰撞檢測(cè)步驟中,緊急避障方法的實(shí)現(xiàn)方法以個(gè)體當(dāng)前位置/V鄰域節(jié)點(diǎn)的中心點(diǎn)巧,A和當(dāng)前鄰域的角點(diǎn)A為控制頂點(diǎn),生成一條Bezier曲線的局部路徑。當(dāng)某個(gè)體沿該曲線路徑運(yùn)動(dòng)時(shí),需預(yù)檢測(cè)該個(gè)體下一位置與其它個(gè)體是否發(fā)生碰撞,如果檢測(cè)出有碰撞發(fā)生,則將該個(gè)體的速度設(shè)為0。當(dāng)個(gè)體沿該曲線路徑運(yùn)動(dòng)到A時(shí),再以引導(dǎo)分量和范圍保持分量對(duì)個(gè)體進(jìn)行運(yùn)動(dòng)控制。所述的個(gè)體運(yùn)動(dòng)控制階段中,在執(zhí)行實(shí)時(shí)控制步驟的同時(shí)也需執(zhí)行個(gè)體間碰撞檢測(cè)步驟和個(gè)體與障礙物碰撞檢測(cè)步驟,若檢測(cè)到動(dòng)畫師的交互控制會(huì)導(dǎo)致碰撞,則檢測(cè)出會(huì)發(fā)生碰撞的個(gè)體不響應(yīng)該控制指令,即對(duì)該個(gè)體不執(zhí)行引導(dǎo)分量和控制分量的疊加操作。本發(fā)明將群體的運(yùn)動(dòng)控制和個(gè)體的運(yùn)動(dòng)控制分開進(jìn)行,可以使動(dòng)畫師在群體運(yùn)動(dòng)控制階段對(duì)群體的運(yùn)動(dòng)情況有整體地把握,同時(shí)也利于實(shí)現(xiàn)群體運(yùn)動(dòng)的自主性,對(duì)個(gè)體運(yùn)動(dòng)采用動(dòng)態(tài)生成運(yùn)動(dòng)分量并疊加的方法進(jìn)行控制,既實(shí)現(xiàn)了個(gè)體運(yùn)動(dòng)的自主性,又可以使動(dòng)畫師進(jìn)行實(shí)時(shí)的交互控制。
權(quán)利要求
1.一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng),其特征在于包括場(chǎng)景劃分模塊、路徑規(guī)劃模塊、群體控制模塊、個(gè)體控制模塊、碰撞處理模塊、數(shù)學(xué)運(yùn)算模塊、系統(tǒng)模塊和渲染模塊,其中,場(chǎng)景劃分模塊、路徑規(guī)劃模塊和群體控制模塊順序連接、碰撞處理模塊的輸入端、個(gè)體控制模塊的輸入端分別與群體控制模塊的輸出端連接,碰撞處理模塊的輸出端、個(gè)體控制模塊的輸出端分別與系統(tǒng)模塊的輸入端相連接,系統(tǒng)模塊和渲染模塊順序連接,數(shù)學(xué)運(yùn)算模塊分別與群體控制模塊和個(gè)體控制模塊連接。
2.一種基于權(quán)利要求1所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于包括群體運(yùn)動(dòng)控制階段和個(gè)體運(yùn)動(dòng)控制階段,并且這兩個(gè)控制階段分別進(jìn)行,其中,所述群體運(yùn)動(dòng)控制階段包括以下步驟1)場(chǎng)景輸入步驟,將三維場(chǎng)景利用平行投影投影到二維運(yùn)動(dòng)平面上,并進(jìn)行二值化,障礙物為黑色,通行部分為白色,并存在圖像文件中;2)場(chǎng)景處理步驟,包括分割步驟、節(jié)點(diǎn)存儲(chǔ)步驟和鄰域查找步驟;3)路徑規(guī)劃步驟,確定起始點(diǎn)和目標(biāo)點(diǎn),用人工智能中的搜索算法搜索群體的運(yùn)動(dòng)路徑,完成路徑規(guī)劃;4)運(yùn)動(dòng)曲線生成步驟,用分段三次Bezier曲線連接搜索到的路徑節(jié)點(diǎn),進(jìn)行平滑處理;5)運(yùn)動(dòng)曲線編輯步驟,動(dòng)畫師根據(jù)需求編輯生成的運(yùn)動(dòng)曲線;其中,所述個(gè)體運(yùn)動(dòng)控制階段包括以下步驟1)運(yùn)動(dòng)分量計(jì)算步驟,根據(jù)群體的運(yùn)動(dòng)路徑,確定中心控制點(diǎn),計(jì)算個(gè)體運(yùn)動(dòng)的引導(dǎo)分量和范圍保持分量;2)運(yùn)動(dòng)分量加權(quán)疊加步驟,動(dòng)畫師確定引導(dǎo)分量和范圍保持分量的權(quán)值,并將兩分量加權(quán)后進(jìn)行疊加;3)個(gè)體間碰撞檢測(cè)步驟,采用引力和斥力法實(shí)現(xiàn)個(gè)體間的碰撞檢測(cè);對(duì)于每個(gè)個(gè)體,碰撞處理模塊先確定其在引力和斥力的有效范圍內(nèi)的其他個(gè)體,計(jì)算該個(gè)體與其他個(gè)體間的距離,并根據(jù)該距離計(jì)算各自所受的引力或者斥力所產(chǎn)生的速度分量,過于靠近則產(chǎn)生斥力生成相互遠(yuǎn)離的運(yùn)動(dòng)分量,以避免碰撞,反之則產(chǎn)生引力生成相互靠近的運(yùn)動(dòng)分量;4)個(gè)體與障礙物碰撞檢測(cè)步驟,根據(jù)上述運(yùn)動(dòng)分量計(jì)算步驟、運(yùn)動(dòng)分量加權(quán)疊加步驟和個(gè)體間碰撞檢測(cè)步驟生成的個(gè)體速度,碰撞處理模塊計(jì)算下一幀中每個(gè)個(gè)體的位置并判斷是否與障礙物發(fā)生碰撞,若判斷某個(gè)個(gè)體即將發(fā)生碰撞,則對(duì)該個(gè)體執(zhí)行緊急避障過程;5)實(shí)時(shí)控制步驟,動(dòng)畫師確定交互控制的權(quán)值,系統(tǒng)模塊判斷并接受動(dòng)畫師通過鍵盤輸入的控制指令,生成方向分量,進(jìn)行加權(quán)操作后與個(gè)體運(yùn)動(dòng)控制模塊所生成引導(dǎo)分量進(jìn)行疊加,生成新的引導(dǎo)分量以改變個(gè)體的運(yùn)動(dòng)。
3.根據(jù)權(quán)利要求2所述的一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述群體運(yùn)動(dòng)控制階段步驟2)場(chǎng)景處理步驟中,所述的分割步驟,對(duì)場(chǎng)景進(jìn)行四叉樹分割,得到場(chǎng)景節(jié)點(diǎn)并利用Morton碼對(duì)場(chǎng)景節(jié)點(diǎn)進(jìn)行編碼,從左上開始直到左下按順時(shí)針的方向分別標(biāo)記位置碼,同時(shí)將葉節(jié)點(diǎn)標(biāo)示為可通行或障礙物;所述的節(jié)點(diǎn)存儲(chǔ)步驟,用Vector容器存儲(chǔ)分割步驟中所得到的所有葉節(jié)點(diǎn),包括葉節(jié)點(diǎn)的位置編碼、所表示的場(chǎng)景區(qū)域以及是否通行的信息;所述的鄰域查找步驟,對(duì)存儲(chǔ)的每個(gè)可通行的節(jié)點(diǎn),利用編碼轉(zhuǎn)換的方法查找其在場(chǎng)景中東南西北方向上的鄰域節(jié)點(diǎn),并存在Vector容器中對(duì)應(yīng)的節(jié)點(diǎn)的位置。
4.根據(jù)權(quán)利要求2所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述的個(gè)體運(yùn)動(dòng)控制階段的步驟2)中,引導(dǎo)分量和范圍保持分量的權(quán)值取值范圍分別為W,l]以及
,并且兩者的和必須滿足小于等于1。
5.根據(jù)權(quán)利要求2所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)或者步驟4)中的個(gè)體采用圓柱體包圍盒。
6.根據(jù)權(quán)利要求2所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述的個(gè)體運(yùn)動(dòng)控制階段的步驟4)中的障礙物采用長(zhǎng)方體包圍盒。
7.根據(jù)權(quán)利要求2所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述的個(gè)體運(yùn)動(dòng)控制階段的步驟3)中所述引力和斥力的有效范圍為1. ,引力和斥力所生成的速度分量方向均為兩個(gè)個(gè)體的中心連線方向。
8.根據(jù)權(quán)利要求2所述的群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)的控制方法,其特征在于所述的個(gè)體運(yùn)動(dòng)控制階段中,在執(zhí)行步驟5)實(shí)時(shí)控制步驟的同時(shí)也需執(zhí)行步驟3)個(gè)體間碰撞檢測(cè)步驟和步驟4)個(gè)體與障礙物碰撞檢測(cè)步驟,若檢測(cè)到動(dòng)畫師的交互控制會(huì)導(dǎo)致碰撞,則檢測(cè)出會(huì)發(fā)生碰撞的個(gè)體不響應(yīng)該控制指令,即對(duì)該個(gè)體不執(zhí)行引導(dǎo)分量和控制分量的疊加操作。
全文摘要
一種群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)及方法,屬于自主智能體動(dòng)畫技術(shù)領(lǐng)域。群體動(dòng)畫運(yùn)動(dòng)控制系統(tǒng)包括場(chǎng)景劃分模塊、路徑規(guī)劃模塊、群體控制模塊、個(gè)體控制模塊、碰撞處理模塊、數(shù)學(xué)運(yùn)算模塊、系統(tǒng)模塊和渲染模塊。采用該控制方法,將群體運(yùn)動(dòng)控制階段和個(gè)體運(yùn)動(dòng)控制階段分別進(jìn)行,使得動(dòng)畫師在制作過程中可以對(duì)群體的運(yùn)動(dòng)趨勢(shì)有整體的把握,同時(shí)也提高了個(gè)體的各個(gè)運(yùn)動(dòng)分量的計(jì)算效率,提高了運(yùn)動(dòng)控制的效率,實(shí)現(xiàn)了實(shí)時(shí)交互控制的功能。
文檔編號(hào)G06T13/00GK102208111SQ20111015274
公開日2011年10月5日 申請(qǐng)日期2011年6月9日 優(yōu)先權(quán)日2011年6月9日
發(fā)明者劉惠義, 姚巍, 沈赟芳 申請(qǐng)人:河海大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
西吉县| 黔西县| 永嘉县| 黔南| 南岸区| 唐山市| 怀化市| 绍兴县| 长葛市| 亚东县| 肇东市| 外汇| 长武县| 东莞市| 营口市| 宿迁市| 绥化市| 兴和县| 黎平县| 盈江县| 肥乡县| 新丰县| 连平县| 平安县| 新丰县| 商城县| 武宣县| 巴彦县| 大庆市| 临汾市| 汾阳市| 海口市| 化隆| 海晏县| 遂昌县| 阿勒泰市| 同心县| 三台县| 尚志市| 喜德县| 辉县市|