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

3.3 路徑的構建

路徑為路點間曲線的拼接,共路點的兩段曲線在鄰接處可以共享相同的切線以保證C1連續,也可以設置成非共享切線,用來拼接切換了方向的直線路徑等。路徑系統只負責拼接和提供路點的信息,并沒有限制曲線的類型,所以路徑系統本身是支持多種類型曲線的拼接的。

路徑上的每個路點都可以設置自己的方向(切線),雖然靈活,但每一個都要手工指定,也會比較煩瑣,所以在切線的設置上模仿了Catmull-Rom這類Cardinal曲線的做法,即路點i處的切線由路點i-1和路點i+1的位置決定:

τ為切線的縮放因子(張弛因子),如圖3.2所示,這樣在大部分情況下,只需要指定路徑兩個端點路點的切線,中間的路點只需要調整端點位置來影響路點的切線方向,調整縮放因子來影響曲線的彎曲程度。

圖3.2 Cardinal曲線切線的設置

在實現上,路徑上的路點在使用鄰接路點的信息構建曲線時,總是將鄰接路點轉換到自己的局部坐標系下,即在由路點Pi Pi+1構建的曲線中,Pi處于坐標點(0,0,0)且旋轉為(0,0,0)。所以,在使用路徑時,每一段曲線的計算結果還要做一次局部坐標系到世界坐標系的轉換。這樣處理的好處是路徑作為一個整體不受剛體變換的影響,特別適合游戲中場景動態拼接的需求。

主站蜘蛛池模板: 山东省| 桂阳县| 兴海县| 滨海县| 宣城市| 大渡口区| 万安县| 古交市| 白银市| 岚皋县| 全南县| 龙陵县| 宜黄县| 稻城县| 和平区| 巴东县| 岳池县| 永吉县| 项城市| 宜黄县| 手游| 龙口市| 乡城县| 南华县| 睢宁县| 库尔勒市| 巴中市| 乌什县| 华亭县| 二连浩特市| 伊春市| 谷城县| 平乐县| 福建省| 胶州市| 黑水县| 金华市| 南康市| 邢台市| 堆龙德庆县| 色达县|