- 騰訊游戲開(kāi)發(fā)精粹
- 騰訊游戲編著
- 23字
- 2019-08-30 16:20:46
第3章 一種高效的弧長(zhǎng)參數(shù)化路徑系統(tǒng)
摘要
2015年在某跑酷類游戲中想要實(shí)現(xiàn)一些創(chuàng)意玩法,需要一個(gè)路徑系統(tǒng),人物的移動(dòng)靠路徑引導(dǎo),并且在路徑上有簡(jiǎn)單的物理運(yùn)動(dòng)(走、跑、跳和碰撞反饋)。當(dāng)時(shí)考察了一系列Unity與路徑相關(guān)的插件,它們均不能滿足需求。特別是弧長(zhǎng)參數(shù)化的特性,即令曲線的參數(shù)t與曲線的長(zhǎng)度L為線性關(guān)系,從而將參數(shù)t的線性變化映射到長(zhǎng)度的線性變化上,實(shí)現(xiàn)曲線上的勻線速度運(yùn)動(dòng),這一點(diǎn)是實(shí)現(xiàn)路徑上物理運(yùn)動(dòng)的基礎(chǔ)[1]。個(gè)別插件實(shí)現(xiàn)了類似的功能,但是其原理為暴力的線性插值,根據(jù)設(shè)定的精度將曲線拆成折線段組成的查找表,需要序列化和緩存大量的數(shù)據(jù),對(duì)內(nèi)存和包量并不友好。
該路徑系統(tǒng)的主要流程如下:
(1)使用最小二乘法,用多項(xiàng)式擬合路徑曲線的長(zhǎng)度函數(shù)的反函數(shù),利用擬合的反函數(shù)實(shí)現(xiàn)弧長(zhǎng)參數(shù)化,這樣只需要保存少數(shù)的多項(xiàng)式系數(shù),運(yùn)行時(shí)對(duì)多項(xiàng)式求值即可,無(wú)須保存一個(gè)巨大的查找表和進(jìn)行查表操作,而可以直接求解。
(2)根據(jù)實(shí)際需求,沒(méi)有使用常見(jiàn)的三次多項(xiàng)式曲線,而是構(gòu)造了一條二次多項(xiàng)式樣條曲線,目的是簡(jiǎn)化各種曲線的求交計(jì)算,同時(shí)維持C1連續(xù)。
(3)在弧長(zhǎng)參數(shù)化的基礎(chǔ)上,把普通的運(yùn)動(dòng)計(jì)算映射到曲線上,以曲線的局部切空間標(biāo)架為基準(zhǔn)實(shí)現(xiàn)了曲線上的簡(jiǎn)單物理運(yùn)動(dòng),在曲線上也有可信的運(yùn)動(dòng)表現(xiàn)。
- 精通Unreal游戲引擎
- 微信小游戲開(kāi)發(fā):后端篇
- Android游戲開(kāi)發(fā)實(shí)踐指南
- OpenGL ES 3.x游戲開(kāi)發(fā)(上卷)
- Minecraft我的世界:建筑教程大全
- 騰訊游戲開(kāi)發(fā)精粹
- 游戲開(kāi)發(fā)實(shí)戰(zhàn)寶典
- 3ds max+Photoshop游戲場(chǎng)景設(shè)計(jì)(第4版)
- 傳奇 奇幻插畫(huà)創(chuàng)作藝術(shù)
- 妙趣橫生的游戲制作之旅
- 實(shí)例妙解Cocos2D-X游戲開(kāi)發(fā)
- OpenGL ES 3.x游戲開(kāi)發(fā)(下卷)
- 傳奇 游戲角色及場(chǎng)景設(shè)定藝術(shù)
- 血戰(zhàn)到底:成都麻將實(shí)戰(zhàn)妙訣
- 精通游戲測(cè)試(第3版)