), i ^ 2 (6)
[0039] 其中,V⑴為當(dāng)前動(dòng)畫(huà)位移軌跡中的第i幀的位移,Q⑴為當(dāng)前動(dòng)畫(huà)位移軌跡中 的第i幀的位置。
[0040] 作為上述方案的改進(jìn),所述原動(dòng)畫(huà)位移軌跡中的每一幀的位置是二維平面的坐標(biāo) 點(diǎn)或三維空間的坐標(biāo)點(diǎn)。
[0041] 作為上述方案的改進(jìn),所述原動(dòng)畫(huà)位移軌跡中的每一幀的位移長(zhǎng)度為該幀與前一 幀之間的直線距離;所述位移差為原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)指向當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目 標(biāo)點(diǎn)的位移。
[0042] 本發(fā)明還公開(kāi)了一種游戲?qū)ο蟮倪\(yùn)動(dòng)控制方法,包括:
[0043] 通過(guò)如上所述的動(dòng)畫(huà)位移拉伸方法得到當(dāng)前動(dòng)畫(huà)位移軌跡;
[0044] 根據(jù)所述當(dāng)前動(dòng)畫(huà)位移軌跡驅(qū)動(dòng)游戲?qū)ο筮\(yùn)動(dòng)。
[0045] 本發(fā)明還對(duì)應(yīng)公開(kāi)了一種游戲?qū)ο蟮倪\(yùn)動(dòng)控制裝置,包括:
[0046] 如上所述的動(dòng)畫(huà)位移拉伸裝置,用于得到當(dāng)前動(dòng)畫(huà)位移軌跡;
[0047] 驅(qū)動(dòng)模塊,根據(jù)所述當(dāng)前動(dòng)畫(huà)位移軌跡驅(qū)動(dòng)游戲?qū)ο筮\(yùn)動(dòng)。
[0048] 與現(xiàn)有技術(shù)相比,本發(fā)明公開(kāi)的動(dòng)畫(huà)位移拉伸方法、裝置以及游戲?qū)ο蟮倪\(yùn)動(dòng)控 制方法、裝置基于當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)與原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)的位移差,計(jì) 算原動(dòng)畫(huà)位移軌跡中的每一幀的位移補(bǔ)償,使每一幀的位移補(bǔ)償?shù)拇笮≌扔谠搸谠瓌?dòng) 畫(huà)位移軌跡中的位移長(zhǎng)度,并使原動(dòng)畫(huà)位移軌跡中的所有幀的位移補(bǔ)償相加等于所述位移 差,然后將計(jì)算得到的每一幀的位移補(bǔ)償疊加到原動(dòng)畫(huà)位移軌跡中對(duì)應(yīng)幀的位移上,從而 得到當(dāng)前動(dòng)畫(huà)位移軌跡。由于當(dāng)前動(dòng)畫(huà)位移軌跡會(huì)按照每一幀在原動(dòng)畫(huà)位移軌跡里的位移 長(zhǎng)度與原動(dòng)畫(huà)位移軌跡的總位移長(zhǎng)度的比例來(lái)進(jìn)行分配,且每一幀所補(bǔ)償?shù)奈灰?,正比?這一幀在原動(dòng)畫(huà)位移軌跡里的位移長(zhǎng)度。這樣,就能夠使得在整個(gè)動(dòng)畫(huà)位移拉伸過(guò)程中,每 一幀的位移補(bǔ)償大小能夠?qū)?yīng)于原來(lái)動(dòng)畫(huà)里游戲?qū)ο蟮倪\(yùn)動(dòng)快慢。因此,能夠使動(dòng)畫(huà)位移 的拉伸過(guò)程(當(dāng)前動(dòng)畫(huà)位移軌跡)的運(yùn)動(dòng)快慢表現(xiàn)和原來(lái)動(dòng)畫(huà)的運(yùn)動(dòng)快慢表現(xiàn)一致,符合 玩家對(duì)該動(dòng)畫(huà)位移拉伸表現(xiàn)的預(yù)期,解決了在游戲中使用動(dòng)畫(huà)位移來(lái)移動(dòng)對(duì)象,當(dāng)需要移 動(dòng)到的目標(biāo)點(diǎn)和原來(lái)動(dòng)畫(huà)的目標(biāo)點(diǎn)間有差異,需要進(jìn)行動(dòng)畫(huà)位移拉伸操作時(shí),采用現(xiàn)有的 動(dòng)畫(huà)位移均勻拉伸的方法不能夠使動(dòng)畫(huà)位移的拉伸過(guò)程的運(yùn)動(dòng)快慢表現(xiàn)符合原來(lái)動(dòng)畫(huà)的 運(yùn)動(dòng)快慢表現(xiàn),不符合玩家對(duì)該動(dòng)畫(huà)位移拉伸表現(xiàn)的預(yù)期的技術(shù)問(wèn)題。
【附圖說(shuō)明】
[0049] 圖1是本發(fā)明實(shí)施例中一種動(dòng)畫(huà)位移拉伸方法的流程示意圖。
[0050] 圖2是圖1中的一個(gè)原動(dòng)畫(huà)位移軌跡以及實(shí)際目標(biāo)點(diǎn)的示意圖。
[0051] 圖3是利用圖1的動(dòng)畫(huà)位移拉伸方法對(duì)圖2的原動(dòng)畫(huà)位移軌跡的每一幀計(jì)算得到 的位移補(bǔ)償?shù)氖疽鈭D。
[0052] 圖4是利用圖1的動(dòng)畫(huà)位移拉伸方法對(duì)圖2的原動(dòng)畫(huà)位移軌跡進(jìn)行動(dòng)畫(huà)位移拉伸 時(shí)的過(guò)程示意圖。
[0053] 圖5是利用圖1的動(dòng)畫(huà)位移拉伸方法對(duì)圖2的原動(dòng)畫(huà)位移軌跡進(jìn)行動(dòng)畫(huà)位移拉伸 后的結(jié)果不意圖。
[0054] 圖6是利用現(xiàn)有技術(shù)的動(dòng)畫(huà)位移均勻拉伸的方法對(duì)圖2的原動(dòng)畫(huà)位移軌跡進(jìn)行動(dòng) 畫(huà)位移拉伸后的結(jié)果示意圖。
[0055] 圖7是本發(fā)明實(shí)施例中一種動(dòng)畫(huà)位移拉伸裝置的結(jié)構(gòu)框圖。
[0056] 圖8是本發(fā)明實(shí)施例中一種游戲?qū)ο蟮倪\(yùn)動(dòng)控制方法的流程示意圖。
[0057] 圖9是本發(fā)明實(shí)施例中一種游戲?qū)ο蟮倪\(yùn)動(dòng)控制裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0058] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0059] 參見(jiàn)圖1,是本發(fā)明實(shí)施例提供的一種動(dòng)畫(huà)位移拉伸方法的流程示意圖。本實(shí)施例 是針對(duì)于在游戲中使用動(dòng)畫(huà)位移來(lái)移動(dòng)對(duì)象,當(dāng)當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)(實(shí)際目標(biāo) 點(diǎn))與原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)不一致時(shí),需要進(jìn)行拉伸時(shí)的情況描述的,如圖1所示,本 發(fā)明實(shí)施例提供的一種動(dòng)畫(huà)位移拉伸方法包括步驟:
[0060] S101、計(jì)算當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)與原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)的位移差;
[0061] 其中,圖2是一個(gè)原動(dòng)畫(huà)位移軌跡的輸入示例,顯示了原動(dòng)畫(huà)位移軌跡中的每一 幀時(shí)刻美術(shù)制作的游戲?qū)ο蟮奈恢谩?梢岳斫獾?,圖2顯示的是一個(gè)平面的示例,即原動(dòng)畫(huà) 位移軌跡中的每一幀的位置是二維平面的坐標(biāo)點(diǎn)P (i) = (X1J1)。但是,在其他實(shí)施例中, 原動(dòng)畫(huà)位移軌跡中的每一幀的位置也可以是一個(gè)三維空間的坐標(biāo)點(diǎn)P(i) = (X1, Y1, Z1),并 不影響本發(fā)明的實(shí)施效果。
[0062] 對(duì)于具有N幀的原動(dòng)畫(huà),第N幀的位置(坐標(biāo)點(diǎn))即為原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn) (坐標(biāo)點(diǎn))。例如,在圖2中,原動(dòng)畫(huà)包括6幀,則第6幀的位置P(6)為原動(dòng)畫(huà)位移軌跡的 目標(biāo)點(diǎn)。
[0063] 假設(shè)美術(shù)制作的動(dòng)畫(huà)軌跡的最后一幀的位置是P(N),但實(shí)際希望將對(duì)象位移到D 處(如圖2中的所示),則它們之間存在一個(gè)位移差(D-P(N))(向量)。其中,所述位移差 D-P(N)為原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)指向當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)的位移??梢岳斫?的,由于當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)可能存在比原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)遠(yuǎn)或近(相對(duì) 起始點(diǎn))的兩種情況,因此,位移差D-P (N)的方向可能為正方向或反方向(相對(duì)起始點(diǎn))。
[0064] 當(dāng)原動(dòng)畫(huà)位移軌跡中的每一幀的位置是二維平面的坐標(biāo) 點(diǎn)時(shí),若P(N) = (XN,YN),D = (XD,YD),那么,所述位移差的大小為:
聽(tīng)述位移差的方向?yàn)樵瓌?dòng)畫(huà)位移軌跡的 目標(biāo)點(diǎn)指向當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)的方向;
[0065] 當(dāng)原動(dòng)畫(huà)位移軌跡中的每一幀的位置是三維空間的坐標(biāo)點(diǎn)時(shí),若P (N)= (XN,YN,ZN),D = (XD,YD,Zd),,那么,原動(dòng)畫(huà)位移軌跡中的第i幀在原動(dòng)畫(huà)位移軌跡中的位移 長(zhǎng)度的大小為
:,所述位 移差的方向?yàn)樵瓌?dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn)指向當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn)的方向。
[0066] S102、計(jì)算原動(dòng)畫(huà)位移軌跡中的每一幀的位移補(bǔ)償,使每一幀的位移補(bǔ)償?shù)拇笮?正比于該幀在原動(dòng)畫(huà)位移軌跡中的位移長(zhǎng)度,并使原動(dòng)畫(huà)位移軌跡中的所有幀的位移補(bǔ)償 相加等于所述位移差;
[0067] 其中,具體計(jì)算位移補(bǔ)償?shù)姆椒ㄈ缦拢?br>[0068] 假設(shè)美術(shù)制作的動(dòng)畫(huà)軌跡的最后一幀的位置是P(N),但實(shí)際希望將對(duì)象位移到D 處(如圖2中的所示),則它們之間存在一個(gè)位移差D-P (N),則我們需要在每一幀根據(jù)這個(gè) 位移差,對(duì)位移進(jìn)行補(bǔ)償。位移補(bǔ)償?shù)姆绞绞鞘沟妹恳粠奈灰蒲a(bǔ)償?shù)拇笮≌扔谶@一幀 在原動(dòng)畫(huà)位移軌跡中的位移長(zhǎng)度(標(biāo)量),并使原動(dòng)畫(huà)位移軌跡中的所有幀的位移補(bǔ)償相 加等于所述位移差(所有幀的位移補(bǔ)償?shù)姆较蚺c所述位移差的方向一致)。
[0069] 具體的,通過(guò)以下公式(1)~(2)計(jì)算原動(dòng)畫(huà)位移軌跡中的每一幀的位移補(bǔ)償:
[0070] M(i) = 0, i = I (1)
[0071] M(i) = (D-P(N))*|P(i)-P(i-l) |/S,i 彡 2 (2)
[0072] 其中,M⑴為原動(dòng)畫(huà)位移軌跡中的第i幀的位移補(bǔ)償,P⑴為原動(dòng)畫(huà)位移軌跡中 的第i幀的位置,P(N)為原動(dòng)畫(huà)位移軌跡的目標(biāo)點(diǎn),D為當(dāng)前動(dòng)畫(huà)需要移動(dòng)到的目標(biāo)點(diǎn),S 為原動(dòng)畫(huà)位移軌跡的總位移長(zhǎng)度(標(biāo)量)。
[0073] 其中,M(I) = 0,即表示原動(dòng)畫(huà)位移軌跡中的起始幀不需要進(jìn)行位移補(bǔ)償,而后續(xù) 每一幀(例如,第i幀)的位移補(bǔ)償M(i)正比于從i-Ι幀到i幀的位移長(zhǎng)度。另外,
[0074] 其