官术网_书友最值得收藏!

第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)。

主站蜘蛛池模板: 华亭县| 尤溪县| 惠来县| 德庆县| 澳门| 新民市| 华阴市| 通辽市| 大同市| 布尔津县| 礼泉县| 亚东县| 邵阳县| 宁国市| 贡山| 唐河县| 灵璧县| 东平县| 深泽县| 鄂州市| 安平县| 讷河市| 锡林浩特市| 长治县| 渝中区| 南通市| 五家渠市| 濮阳县| 壶关县| 航空| 无棣县| 吴旗县| 延安市| 哈巴河县| 孙吴县| 隆回县| 伊川县| 沐川县| 昌江| 门头沟区| 鄂托克旗|