如何選擇 Bézier 曲線或 B-spline 曲線來局部調整形狀
如果你想直接控制虛擬角色輪廓上的定位點和切線方向,請選擇分段 Bézier 路徑。如果你想透過影響範圍有限的控制點來重塑連續輪廓,請選擇 B-spline。關鍵問題在於編輯會影響多大範圍,以及該範圍是否符合你想修改的特徵。
本指南著重於在外部曲線編輯器中調整虛擬角色的剪影:修改耳朵、臉頰或尾巴,同時保留周圍輪廓。以下建議會將曲線特性轉化為編輯時的選擇依據,而不會假設其中一種曲線總是能提供更局部的控制。
對角色輪廓來說,「局部調整」是什麼意思?
選擇曲線之前,先說明想要的變化,以及必須保留的邊界。「讓臉頰更圓,同時固定耳根和下巴」就是一個實用的規格。「改善輪廓」則有太多未明確之處。
局部性有兩種尺度。數學上的局部性描述曲線的哪些部分會受到控制點影響;實際上的局部性則關乎受影響區域是否符合角色的特徵範圍。數學上屬於局部的編輯,仍可能從小小的臉頰延伸到相鄰特徵。
單一 Bézier 曲線段在該段內具有全域控制能力:移動一個控制點會改變曲線段內部的形狀。B-spline 則可進行局部修改,控制點只會影響有限的參數區間。密西根理工大學的原始教材在修改控制點中示範了這項差異。
就你的繪圖而言,可將這項差異轉化為一項簡單要求:找出允許移動的輪廓區段,再確認所選控制點的影響是否維持在該範圍內。
為什麼分段 Bézier 路徑仍適合局部編輯?
「Bézier 曲線缺乏局部控制」這句話需要加上限定:它描述的是單一 Bézier 曲線段。角色輪廓可以由多個曲線段組成。只要共用錨點和編輯器約束維持不變,編輯屬於其中一段的控制點,就不一定會改變遠處的曲線段。
如果一條長曲線段涵蓋臉頰和大半個頭部,其編輯範圍可能太廣。細分可將它替換成較短的 Bézier 曲線段,同時重現原有形狀。接著你就能編輯相關部分。細分 Bézier 曲線說明了細分過程,以及如何藉此隔離不理想的區域。
在角色繪製中,如果你能在特徵周圍設定合適的邊界,Bézier 就是很好的起始選擇。在耳根放置一個錨點,在接近臉頰轉折處再放一個,然後調整兩者之間的曲線段。將這些位置視為設計決策;到處增加錨點會讓輪廓更難掌握。
共用錨點需要特別小心。移動它會改變相鄰曲線段的交接點。即使錨點固定,若控制柄彼此連動,調整所選側的控制柄也可能改變相鄰曲線段。
何時 B-spline 能更好地控制流暢輪廓?
B-spline 的次數與控制點數量彼此獨立。因此,你可以用許多控制點描述長輪廓,同時維持低多項式次數。它的節點向量會將參數域劃分為多個區間,並協助決定每個控制點的影響範圍。B-spline 曲線:重要性質說明了這些特性。
對於索引為 i、次數為 p 的曲線,其控制點影響範圍的參數區間由節點 uᵢ 和 uᵢ₊ₚ₊₁ 所界定。三次 B-spline 至多涵蓋四個非零節點區間。這些區間是參數區間,因此不一定對應到可見輪廓上等長的距離。影響範圍的規則推導於B-spline 曲線:移動控制點。
試想以下示例:一條三次曲線的節點向量為 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5。移動控制點 P₃(採用從零開始的索引)可能會影響參數值 0 到 4 之間的曲線。這種影響範圍雖然有限,卻涵蓋了五個非零區間中的四個。因此,即使曲線不大,編輯影響範圍也可能出乎意料地廣。
如果 B-spline 控制點的影響範圍已符合你想重塑的流暢區段,例如長長的尾巴輪廓,就選用它們。如果每次調整都會干擾你想保留的附近特徵,請先細化曲線表示,再繼續編輯。
平滑交接和刻意設置的角點應如何影響選擇?
對於分段 Bézier 輪廓,請檢查每個編輯過的交接點兩側的控制柄。Bézier 曲線端點的切線方向沿著控制多邊形的第一條和最後一條邊。在一般交接點,若兩個控制柄在共用錨點兩側共線延伸,就能讓切線方向相同,這稱為 G1 連續性。若要讓一階導數相同,也就是達到 C1 連續性,則還需滿足控制柄長度和曲線段次數之間的額外關係。請參閱Bézier 曲線的導數。
對於靜態角色剪影,先檢查可見的轉折:臉頰是否順暢地銜接頭部,還是出現了折角?切線對齊很有用,但本身無法確保曲率在交接點兩側均勻變化。
編輯器設定也很重要。Inkscape 指南將節點分為尖角節點(控制柄獨立)、平滑節點(控制柄對齊)、對稱節點(控制柄對齊且等長),以及控制柄會自動調整的自動平滑節點。這些行為說明了為什麼看似局部的編輯可能會影響節點的另一側。請參閱關於節點類型。
B-spline 的平滑度取決於次數和節點重數。具有簡單內部節點的三次樣條具有 C2 連續性;重複節點會降低該位置所需的連續性。因此,單說「B-spline」並不能確定每個交接點的平滑程度。B-spline 曲線:重要性質說明了兩者的關係。
若要刻意打造尖尖的耳朵,兩側可獨立控制的 Bézier 角點是容易上手的選項。若要打造不中斷的圓滑輪廓,當節點和控制點結構能讓你方便地塑造整個轉折時,可考慮使用 B-spline。
如何在不改變起始形狀的前提下增加更精細的控制?
先細化,再重塑。將這兩種操作分開,就能看出意外的變化究竟來自新增控制點,還是移動控制點。
對於 Bézier 曲線,請在適當位置使用保形細分。產生的曲線段會保留原有次數,合在一起也會重現起始曲線段。細分後,只要周圍剪影必須維持固定,就應保留邊界錨點和切線關係。細分 Bézier 曲線說明了這項建構方式。
對於 B-spline,若編輯器支援,請使用正規的節點插入。插入節點會新增一個節點,並重新計算相關控制點,但不會改變曲線幾何形狀。直接在控制多邊形上任意新增點,則是另一種操作。兩者的差異和建構方式詳見B-spline 曲線:節點插入。
完成上述任一操作後,請先將細化後的輪廓與儲存的副本比較,再調整形狀。接著每次移動一個控制點。只有在目前的表示方式無法在你指定的邊界內達成預期特徵時,才增加更多細節。
下一次調整角色時,該選哪種曲線?
找出允許移動的區域後,請使用這份決策指南。以下是依據上述特性提出的實用建議,並非不同應用程式之間的測量比較。
| 編輯需求 | 起始選擇 | 檢查事項 |
|---|---|---|
| 調整固定定位點之間的單一特徵 | 分段 Bézier | 曲線段邊界符合特徵範圍;共用控制柄的行為符合預期 |
| 反覆重塑長而流暢的輪廓 | B-spline | 控制點的影響範圍符合預期區域 |
| 刻意打造尖點或角點 | 使用獨立控制柄的 Bézier | 兩側都維持預期方向 |
| 細化已令人滿意的 Bézier 輪廓 | 保留 Bézier,並在需要處細分 | 細分能保留起始剪影 |
| 讓 B-spline 調整更精準 | 保留 B-spline,並在支援的情況下插入節點 | 插入節點後、移動控制點前,曲線幾何形狀保持不變 |
選擇時應優先考慮現有輪廓。如果其曲線類型已能支援所需編輯,就直接在原有曲線上細化。轉換表示方式會增加一個需要評估的操作,而且對於單次的臉頰或耳朵調整,可能幫助不大。
如何測試選擇是否有效?
在角色輪廓的副本上進行編輯邊界測試。這能讓你具體比較不同表示方式,不必依賴它們的名稱。
- 說明預期變化。 例如,讓臉頰變寬,同時保留耳根和下巴。
- 標出允許調整的區域。 在特徵周圍找出兩個可見邊界位置。
- 檢查表示方式。 找出會影響這個區段的 Bézier 曲線段或 B-spline 控制點。
- 進行一次小幅編輯。 觀察目標特徵和相鄰輪廓的變化。
- 檢查邊界。 如果變化超出邊界,請檢查控制柄是否連動,或先細化曲線,再重試。
- 以工作尺寸和顯示尺寸檢查結果。 檢查特徵形狀、轉折,以及調整後的形狀在預期尺寸下是否仍清晰可見。
如果臉頰位於合適的 Bézier 錨點之間,調整控制柄可能就足以完成任務,無須大幅重整。若流暢輪廓需要多次調整相鄰部分,B-spline 控制點或許能提供更方便的編輯方式。讓允許編輯的區域引導選擇:保留能讓你在塑造特徵的同時,維持原有輪廓的表示方式。
