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

3.1 引言

在2015年參與的某跑酷類游戲中,策劃者不滿足于普通的、平直的跑動場景,想要嘗試一些有趣的、彎曲的跑動場景,例如滑軌、過山車跑道等。對于當時的手游跑酷類游戲而言,跑動實際是沿著一條一維的直線路徑移動的,跳躍等垂直方向的移動也是以這個路徑為基準的,而水平方向左右移動可以被看作是路徑的切換,那么自然而然想到用曲線路徑代替直線路徑來引導角色的跑動,并將簡單的物理運動轉換到曲線路徑上。

結合游戲側的需求,對這樣一個曲線路徑系統有如下要求:

(1)路徑布置簡單,最直觀的就是布置路點。

(2)修改具有局部性,修改一個路點只會影響上、下游。

(3)曲線至少具有C1連續性,滿足基本的光滑需求。

(4)兩個路點間的曲線可以是異面曲線,等同于可以自由控制鄰接路點曲線的方向。

(5)與曲線相關的計算要盡量簡單,盡量少地進行迭代計算。

要求(1)意味著曲線要過每一個控制點,所以排除了Bezier曲線。要求(2)則排除了Natural曲線這類會影響全局的曲線,剩下可選的流行曲線有Catmull-Rom[2]。在要求(5)中,希望曲線的計算盡量簡單,特別是長度的計算和與平面求交的計算,這兩類計算和各種邏輯操作相關,而曲線形式簡單也會讓一些迭代的計算量變小。所以最終并沒有采用三次曲線,而是選擇在兩個控制點之間生成二次樣條,兩條二次曲線的拼接點用方程確定,并不需要手工編輯。另外,在路徑編輯的過程中,模仿Catmull-Rom引入了Cardinal類曲線的構造方式以方便操作。

主站蜘蛛池模板: 杂多县| 商水县| 房山区| 合山市| 射洪县| 平谷区| 偏关县| 蛟河市| 昭通市| 双江| 宝清县| 久治县| 平遥县| 青川县| 大荔县| 佛教| 红河县| 沙湾县| 广丰县| 浦东新区| 互助| 富川| 镇平县| 抚顺县| 文昌市| 高台县| 咸宁市| 河津市| 呼伦贝尔市| 藁城市| 莱芜市| 盈江县| 阿合奇县| 乌拉特前旗| 信丰县| 临颍县| 石门县| 吴堡县| 昭苏县| 台东县| 鄂温|