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

第3章 一種高效的弧長參數化路徑系統

作者:王清源

摘要

2015年在某跑酷類游戲中想要實現一些創意玩法,需要一個路徑系統,人物的移動靠路徑引導,并且在路徑上有簡單的物理運動(走、跑、跳和碰撞反饋)。當時考察了一系列Unity與路徑相關的插件,它們均不能滿足需求。特別是弧長參數化的特性,即令曲線的參數t與曲線的長度L為線性關系,從而將參數t的線性變化映射到長度的線性變化上,實現曲線上的勻線速度運動,這一點是實現路徑上物理運動的基礎[1]。個別插件實現了類似的功能,但是其原理為暴力的線性插值,根據設定的精度將曲線拆成折線段組成的查找表,需要序列化和緩存大量的數據,對內存和包量并不友好。

該路徑系統的主要流程如下:

(1)使用最小二乘法,用多項式擬合路徑曲線的長度函數的反函數,利用擬合的反函數實現弧長參數化,這樣只需要保存少數的多項式系數,運行時對多項式求值即可,無須保存一個巨大的查找表和進行查表操作,而可以直接求解。

(2)根據實際需求,沒有使用常見的三次多項式曲線,而是構造了一條二次多項式樣條曲線,目的是簡化各種曲線的求交計算,同時維持C1連續。

(3)在弧長參數化的基礎上,把普通的運動計算映射到曲線上,以曲線的局部切空間標架為基準實現了曲線上的簡單物理運動,在曲線上也有可信的運動表現。

主站蜘蛛池模板: 拜泉县| 达尔| 三明市| 镇康县| 招远市| 视频| 内黄县| 兴山县| 万全县| 固原市| 景东| 泽普县| 咸阳市| 西城区| 任丘市| 都昌县| 涡阳县| 白沙| 陈巴尔虎旗| 合肥市| 栾城县| 佛学| 武威市| 天全县| 贺兰县| 班玛县| 新竹县| 柳州市| 迭部县| 伊金霍洛旗| 孝义市| 台东市| 灵武市| 屏东县| 玉溪市| 嘉兴市| 宁都县| 黄梅县| 湘潭市| 筠连县| 崇礼县|