書名: 騰訊游戲開發(fā)精粹作者名: 騰訊游戲編著本章字?jǐn)?shù): 526字更新時(shí)間: 2019-08-30 16:20:47
3.2 端點(diǎn)間二次樣條的構(gòu)建
在兩個(gè)路點(diǎn)之間生成曲線,并且要求兩個(gè)路點(diǎn)可以自由控制位置和朝向(切線方向)時(shí),使用單一的一段二次曲線會(huì)遇到自由度不夠的問題。這里構(gòu)造了如下兩條拼接的二次曲線來解決這個(gè)問題(見圖3.1)。

圖3.1 二次樣條曲線示意圖
給定起點(diǎn)P0、起點(diǎn)切線T0、終點(diǎn)P1和終點(diǎn)切線T1,有二次曲線f1(t)和f2(t),令其滿足如下條件:

對(duì)于f1(1)和f2(0),假設(shè)有一動(dòng)點(diǎn)Pm,在該點(diǎn)處曲線滿足:

從而可以得到兩條曲線的系數(shù)方程組:

該方程組的解為

則有

可以看到,最終動(dòng)點(diǎn)Pm不會(huì)出現(xiàn)在方程中,它為隱含的點(diǎn),對(duì)外部是透明的。為了將分段曲線當(dāng)作一段曲線使用,還需要將兩段子曲線的參數(shù)t歸一化到統(tǒng)一的[0,1]范圍內(nèi)。令為參數(shù)t歸一化后的分段二次曲線,有
,
。這里使用每段子曲線占拼接曲線的比例來歸一化曲線參數(shù)。設(shè)L1、L2分別為曲線
和
的長(zhǎng)度,則有

類似的,也可以得到曲線的長(zhǎng)度方程,由子曲線長(zhǎng)度方程
和
表示的歸一化方程:

為此需要計(jì)算曲線f1(t)和f2(t)的曲線段和
的長(zhǎng)度。對(duì)于二次曲線而言,曲線的線積分有解析解(分部積分):

其中:


這些系數(shù)可以離線預(yù)計(jì)算好(靜態(tài)路徑),或者在運(yùn)行時(shí)初始化曲線的時(shí)候計(jì)算(動(dòng)態(tài)構(gòu)建路徑)。該公式較為復(fù)雜,但是多用于曲線歸一化的預(yù)處理過程中。如果進(jìn)一步完成了曲線的弧長(zhǎng)參數(shù)化,將會(huì)使用更為簡(jiǎn)單的線性長(zhǎng)度計(jì)算。
- 精通Unreal游戲引擎
- 微信小游戲開發(fā):后端篇
- Android游戲開發(fā)實(shí)踐指南
- OpenGL ES 3.x游戲開發(fā)(上卷)
- Unity 5.X 3D游戲開發(fā)技術(shù)詳解與典型案例
- 游戲開發(fā)實(shí)戰(zhàn)寶典
- 3ds max+Photoshop游戲場(chǎng)景設(shè)計(jì)(第4版)
- 傳奇 奇幻插畫創(chuàng)作藝術(shù)
- 妙趣橫生的游戲制作之旅
- 實(shí)例妙解Cocos2D-X游戲開發(fā)
- 游戲開發(fā)者訪談錄
- 電子游戲與多元智能培養(yǎng)
- Unreal Engine 虛擬現(xiàn)實(shí)開發(fā)
- 《餓殍:明末千里行》藝術(shù)設(shè)定集
- 新印象Unity 2020游戲開發(fā)基礎(chǔ)與實(shí)戰(zhàn)