實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體碰撞探測(cè)的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,特別是涉及一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體 之間碰撞探測(cè)的方法和裝置。
【背景技術(shù)】
[0002] 虛擬場(chǎng)景是指通過計(jì)算機(jī)模擬出來的場(chǎng)景,例如游戲場(chǎng)景、動(dòng)漫場(chǎng)景等。以游戲場(chǎng) 景為例,當(dāng)一個(gè)虛擬對(duì)象遇到一個(gè)障礙物,需要繞過該障礙物,即虛擬對(duì)象與障礙物之間的 碰撞,傳統(tǒng)的處理方式是將虛擬對(duì)象和障礙物都簡(jiǎn)化處理為軸對(duì)齊包圍盒的碰撞體,如圖1 所示,虛擬對(duì)象簡(jiǎn)化成的碰撞體110要繞過墻角120,則按照?qǐng)D中所示的移動(dòng)變化過程,需要 等碰撞體110在整個(gè)移出墻角后,才能繼續(xù)沿著墻的下邊沿前進(jìn)。
[0003] 然而,這樣的碰撞體110碰撞路過墻角時(shí)會(huì)讓操作者操作不順暢,需要控制碰撞體 移動(dòng)整個(gè)身體才能越過墻角,移動(dòng)效率低。
【發(fā)明內(nèi)容】
[0004] 基于此,有必要針對(duì)傳統(tǒng)的碰撞體之間碰撞操作不順暢且移動(dòng)效率低的問題,提 供一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的方法,能提高操作的流暢度,且 能提高移動(dòng)效率。
[0005] 此外,還有必要提供一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的裝 置,能提高操作的流暢度,且能提高移動(dòng)效率。
[0006] -種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的方法,包括以下步驟:
[0007] 將虛擬場(chǎng)景中虛擬對(duì)象所對(duì)應(yīng)的圓柱碰撞體轉(zhuǎn)化為與圓柱碰撞體同中心點(diǎn)的預(yù) 設(shè)多邊形棱柱;
[0008] 將所述預(yù)設(shè)多邊形棱柱變換到凸體的局部坐標(biāo)系,得到預(yù)設(shè)多邊形棱柱在凸體的 局部坐標(biāo)系下的位置;
[0009] 根據(jù)所述預(yù)設(shè)多邊形棱柱在凸體的局部坐標(biāo)系下的位置獲取預(yù)設(shè)多邊形棱柱各 個(gè)面的法向、預(yù)設(shè)多邊形的邊方向和棱柱的棱的邊方向;
[0010] 獲取所述凸體的各個(gè)面的法向和各個(gè)邊方向;
[0011] 將所述凸體的各個(gè)邊方向與所述預(yù)設(shè)多邊形的邊方向和棱柱的棱的邊方向分別 做向量積;
[0012] 將所述預(yù)設(shè)多邊形棱柱各個(gè)面的法向、凸體的各個(gè)面的法向及所述向量積中一種 或多種作為測(cè)試軸;
[0013] 根據(jù)各測(cè)試軸及預(yù)設(shè)多邊形棱柱在凸體的局部坐標(biāo)系下的位置得到圓柱碰撞體 在測(cè)試軸上的投影長(zhǎng)度及投影位置,并獲取凸體在各測(cè)試軸上的投影;
[0014] 若所述圓柱碰撞體和凸體在各測(cè)試軸上投影均相交,則判定圓柱碰撞體與凸體之 間有碰撞。
[0015] -種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的裝置,包括:
[0016] 轉(zhuǎn)化模塊,用于將虛擬場(chǎng)景中虛擬對(duì)象所對(duì)應(yīng)的圓柱碰撞體轉(zhuǎn)化為與圓柱碰撞體 同中心點(diǎn)的預(yù)設(shè)多邊形棱柱;
[0017] 變換模塊,用于將所述預(yù)設(shè)多邊形棱柱變換到凸體的局部坐標(biāo)系,得到預(yù)設(shè)多邊 形棱柱在凸體的局部坐標(biāo)系下的位置;
[0018] 第一獲取模塊,用于根據(jù)所述預(yù)設(shè)多邊形棱柱在凸體的局部坐標(biāo)系下的位置獲取 預(yù)設(shè)多邊形棱柱各個(gè)面的法向、預(yù)設(shè)多邊形的邊方向和棱柱的棱的邊方向;
[0019] 第二獲取模塊,用于獲取所述凸體的各個(gè)面的法向和各個(gè)邊方向;
[0020] 向量積獲取模塊,用于將所述凸體的各個(gè)邊方向與所述預(yù)設(shè)多邊形的邊方向和棱 柱的棱的邊方向分別做向量積;
[0021] 測(cè)試軸獲取模塊,用于將所述預(yù)設(shè)多邊形棱柱各個(gè)面的法向、凸體的各個(gè)面的法 向及所述向量積一種或多種作為測(cè)試軸;
[0022] 投影模塊,用于根據(jù)各測(cè)試軸及預(yù)設(shè)多邊形棱柱在凸體的局部坐標(biāo)系下的位置得 到圓柱碰撞體在測(cè)試軸上的投影長(zhǎng)度及投影位置,并獲取凸體在各測(cè)試軸上的投影;
[0023] 判定模塊,用于若所述圓柱碰撞體和凸體在各測(cè)試軸上投影均相交,則判定圓柱 碰撞體與凸體之間有碰撞。
[0024] 上述實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的方法和裝置,將虛擬場(chǎng)景 中的虛擬對(duì)象作為圓柱碰撞體與凸體進(jìn)行碰撞,代替了原來的軸對(duì)齊包圍盒與凸體進(jìn)行碰 撞,縮短了移動(dòng)距離,提高了移動(dòng)效率,也提高了操作的流暢度,將圓柱碰撞體轉(zhuǎn)化為預(yù)設(shè) 多邊形棱柱,可得到圓柱碰撞體的面的法向和邊方向,便于選取測(cè)試軸,通過測(cè)試軸的合理 選擇,以及圓柱碰撞體和凸體在測(cè)試軸上的投影相交情況判斷圓柱碰撞體和凸體之間的碰 撞情況,提高了判斷的準(zhǔn)確性。
【附圖說明】
[0025] 圖1為傳統(tǒng)的實(shí)時(shí)虛擬場(chǎng)景中碰撞體之間碰撞的過程示意圖;
[0026] 圖2為一個(gè)實(shí)施例中實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)方法及裝置 的應(yīng)用環(huán)境不意圖;
[0027] 圖3A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖;
[0028]圖3B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
[0029]圖4為Component類包含的場(chǎng)景對(duì)象的示意圖;
[0030] 圖5為兩凸體投影在同一軸上不相交的示意圖;
[0031] 圖6為圓柱碰撞體的示意圖;
[0032] 圖7為一個(gè)實(shí)施例中實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的方法的流 程圖;
[0033]圖8為正八棱柱俯視示意圖;
[0034] 圖9為一個(gè)實(shí)施例中將該預(yù)設(shè)多邊形棱柱變換到凸體的局部坐標(biāo)系,得到預(yù)設(shè)多 邊形棱柱在凸體的局部坐標(biāo)系下的位置步驟的具體流程圖;
[0035] 圖10為獲取八多邊形棱柱的頂點(diǎn)示意圖;
[0036] 圖11為八邊形棱柱的法向獲取示意圖;
[0037]圖12為采用圓柱碰撞體碰撞使用傳統(tǒng)的算法效果和理論結(jié)果示意圖;
[0038]圖13為一個(gè)實(shí)施例中實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)的裝置的 結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0039]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0040]圖2為一個(gè)實(shí)施例中實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)方法及裝置 的應(yīng)用環(huán)境示意圖。如圖2所示,該應(yīng)用環(huán)境包括終端210和服務(wù)器220,終端210可為多個(gè)。 多個(gè)終端210與服務(wù)器220進(jìn)行通信。實(shí)時(shí)虛擬場(chǎng)景中碰撞體之間碰撞探測(cè)的方法可運(yùn)行于 終端210上,終端210從服務(wù)器220上獲取虛擬場(chǎng)景數(shù)據(jù),終端210獲取虛擬場(chǎng)景中凸體和虛 擬對(duì)象所對(duì)應(yīng)的圓柱碰撞體,對(duì)凸體和圓柱碰撞體進(jìn)行碰撞探測(cè)。實(shí)時(shí)虛擬場(chǎng)景可為實(shí)時(shí) 游戲場(chǎng)景或?qū)崟r(shí)動(dòng)漫場(chǎng)景等,虛擬對(duì)象可為人物或物體。凸體可為人物或物體等。
[00411圖3A為一個(gè)實(shí)施例中終端210的內(nèi)部結(jié)構(gòu)示意圖。如圖3A所示,該終端210包括通 過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口、聲音采集裝置、顯示屏、揚(yáng)聲器和輸 入裝置。其中,終端的存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng),還包括一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與 凸體之間碰撞探測(cè)裝置,該實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)裝置用于實(shí)現(xiàn) 一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)方法。該處理器用于提供計(jì)算和控制 能力,支撐整個(gè)終端的運(yùn)行。終端中的內(nèi)存為存儲(chǔ)介質(zhì)中的實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與 凸體之間碰撞探測(cè)裝置的運(yùn)行提供環(huán)境,網(wǎng)絡(luò)接口用于與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信,如發(fā)送數(shù) 據(jù)請(qǐng)求至服務(wù)器,接收服務(wù)器返回的相應(yīng)數(shù)據(jù)等。終端的顯示屏可以是液晶顯示屏或者電 子墨水顯示屏等,輸入裝置可以是顯示屏上覆蓋的觸摸層,也可以是終端外殼上設(shè)置的按 鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸控板或鼠標(biāo)等。該終端可以是手機(jī)、臺(tái)式計(jì)算 機(jī)、平板電腦或者個(gè)人數(shù)字助理等。本領(lǐng)域技術(shù)人員可以理解,圖3A中示出的結(jié)構(gòu),僅僅是 與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的終端的限 定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同 的部件布置。
[0042]圖3B為一個(gè)實(shí)施例中服務(wù)器220的內(nèi)部結(jié)構(gòu)示意圖。如圖3B所示,該服務(wù)器包括通 過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存、網(wǎng)絡(luò)接口、顯示屏、輸入裝置。其中,該服務(wù)器的 存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫和實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)裝 置,數(shù)據(jù)庫中存儲(chǔ)有實(shí)時(shí)虛擬場(chǎng)景數(shù)據(jù)等,該實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞 探測(cè)裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè) 方法。該服務(wù)器的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi) 存為存儲(chǔ)介質(zhì)中的實(shí)時(shí)虛擬場(chǎng)景中圓柱碰撞體與凸體之間碰撞探測(cè)裝置的運(yùn)行提供環(huán)境。 該服務(wù)器的顯示屏可以是液晶顯示屏或者電子墨水顯示屏等,輸入裝置可以是顯示屏上覆 蓋的觸摸層,也可以是終端外殼上設(shè)置的按鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸 控板或鼠標(biāo)等。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過網(wǎng)絡(luò)連接通信,比如接收 終端發(fā)送的數(shù)據(jù)交互請(qǐng)求以及向終端返回?cái)?shù)據(jù)等。服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè) 服務(wù)器組成的服務(wù)器集群來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖3B中示出的結(jié)構(gòu),僅僅是與 本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限 定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不 同的部件布置。
[0043] 在其他應(yīng)用環(huán)境中,可只包括終端210或服務(wù)器220,即實(shí)時(shí)虛擬場(chǎng)景中碰撞體之 間的碰撞的方法可只需運(yùn)行于終端或服務(wù)器上,例如單機(jī)的游戲場(chǎng)景或動(dòng)漫場(chǎng)景中虛擬對(duì) 象的移動(dòng)等。用戶在終端上運(yùn)行下載的單機(jī)游戲或測(cè)試人