內容簡介
角色骨骼綁定是CG動畫製作的重要組成部分,骨骼綁定的每一個步驟都影響著最終的動畫效果。《綁定的藝術——Maya高級角色骨骼綁定技法》對動畫製作中骨骼綁定環節涉及的人體關節活動範圍、骨骼創建、約束、蒙皮等基本概念和動畫技術進行了全面系統的介紹,並以圖文並茂的形式向讀者講述了利用Maya軟體進行角色骨骼綁定的高級技法。
《綁定的藝術——Maya高級角色骨骼綁定技法》分為3篇,共17章。第1篇為角色設定基礎,主要講解創建骨骼裝配常用的各項命令及實例;第2篇為角色高級設定,主要講解綁定中的常用技巧,包括骨骼拉伸、IKFK無縫轉換、膝蓋鎖定、手部無縫跟隨頭和腰、軀幹IKFK共存等;第3篇為MEL套用,主要講解設定中常用的MEL命令。書中的每個實例都來自實際動畫製作過程並經過作者多次測試。附錄中包含了骨骼綁定規範及各部分骨骼常用名稱,以供讀者參考。隨書光碟中提供了書中所有教學案例的源檔案,以及第7章~第15章的視頻教學檔案,以方便讀者深入學習並儘快掌握所學知識。
《綁定的藝術——Maya高級角色骨骼綁定技法》適合CG遊戲骨骼綁定師和CG動畫製作相關專業的學生閱讀、參考。
目錄
目 錄
第1篇 角色設定基礎
第1章 人體關節正常活動範圍 22
1.1 人體骨骼概述 22
1.2 上肢關節活動範圍 22
1.2.1 頭部活動範圍 22
1.2.2 肩部活動範圍 23
1.2.3 手臂活動範圍 24
1.2.4 肘部活動範圍 25
1.2.5 手部活動範圍 25
1.2.6 腰部活動範圍 26
1.3 下肢關節活動範圍 26
1.3.1 腿部活動範圍 26
1.3.2 膝部活動範圍 27
1.3.3 腳部活動範圍 27
第2章 骨骼創建 29
2.1 骨骼創建命令 29
2.1.1 Maya骨骼概述 29
2.1.2 骨骼創建工具(Joint Tool) 29
2.1.3 插入骨骼工具(Insert Joint Tool) 31
2.1.4 重置根關節(Reroot Skeleton) 31
2.1.5 清除骨骼(Remove Joint) 32
2.1.6 斷開骨骼(Disconnect Joint) 33
2.1.7 連線骨骼(Connect Joint) 34
2.1.8 鏡像骨骼(Mirror Joint) 35
2.1.9 定向骨骼(Orient Joint) 36
2.2 正向動力學與反向動力學 37
2.2.1 正向動力學與反向動力學概述 37
2.2.2 正向動力學(FK) 37
2.2.3 反向動力學(IK)概述 39
2.2.4 IK手柄工具(IK Handle Tool) 39
2.2.5 樣條IK(IK Spline Handle Tool)概述 41
2.2.6 樣條IK範例 41
2.3 父子層級控制 44
2.3.1 父子層級概述 44
2.3.2 創建父子層級關係 44
2.3.3 解開父子層級關係 45
2.4 組及控制器定位 46
2.4.1 組及控制器定位的重要性 46
2.4.2 通過組定位控制器 47
2.5 自定義屬性及驅動關鍵幀 49
2.5.1 自定義屬性概述 49
2.5.2 自定義屬性範例 49
2.5.3 屬性關聯 50
2.5.4 驅動關鍵幀(Set Driven Key) 53
2.5.5 驅動關鍵幀範例 53
2.6 角色身體骨骼定位 54
2.6.1 軀幹骨骼的結構 54
2.6.2 軀幹骨骼定位 55
2.6.3 腿部骨骼定位 55
2.6.4 手臂骨骼定位 56
2.6.5 橈骨骨骼解決方案 57
2.6.6 鎖骨定位 59
2.6.7 手指骨骼定位 60
2.6.8 骨骼軸向檢查 62
2.6.9 鏡像骨骼 62
第3章 約束 64
3.1 約束(Constrain)概述 64
3.2 點約束(Point) 64
3.2.1 創建點約束 64
3.2.2 X衣架範例 67
3.3 方向約束(Orient) 73
3.4 縮放約束(Scale) 74
3.5 父子約束(Parent) 74
3.6 極向量約束(Pole Vector) 74
3.7 目標約束(Arm) 75
3.7.1 創建目標約束 75
3.7.2 液壓系統範例 76
3.7.3 活塞系統範例 78
3.8 其他約束 80
3.8.1 幾何體約束(Geometry) 80
3.8.2 法線約束(Normal) 80
3.8.3 切線約束(Tangent) 80
第4章 角色蒙皮設定 81
4.1 蒙皮概述 81
4.2 光滑蒙皮(Smooth Bind) 81
4.2.1 屬性編輯器來調整蒙皮的權重 83
4.2.2 權重的繪製 83
4.3 鏡像權重(Mirror Skin Weights) 84
4.4 添加影響(Add influence) 85
4.5 剛體蒙皮命令(Rigid Bind) 87
4.6 分離權重(Detach Skin) 88
4.7 轉到綁定姿勢(Go To Bind Pose) 89
4.8 cometScripts外掛程式 89
4.8.1 cometScripts外掛程式介紹 89
4.8.2 cometScripts外掛程式安裝方法 89
4.8.3 重命名工具 89
4.8.4 權重繪製 92
4.8.5 權重保存 94
4.8.6 權重鏡像 95
第5章 變形器 99
5.1 變形的概念和用途 99
5.2 變形的種類 99
5.3 融合變形(Blend Shape) 100
5.3.1 創建融合變形 100
5.3.2 融合變形添加、移除及交換 101
5.4 晶格變形(Lattice) 102
5.4.1 創建晶格變形效果 102
5.4.2 重設影響晶格點和去除曲扭 103
5.5 包裹變形(Wrap) 103
5.5.1 創建包裹變形 103
5.5.2 添加和去除包裹影響體 104
5.6 簇變形(Cluster) 105
5.6.1 創建簇變形 105
5.6.2 繪畫簇權重 106
5.7 軟變形(Soft Modification) 107
5.8 非線性變形工具(Nonlinear)概述 108
5.8.1 創建彎曲變形(Blend) 108
5.8.2 創建擴張變形(Flare) 109
5.8.3 創建正弦變形(Sine) 110
5.8.4 正弦變形創建骨骼自動尾隨 111
5.8.5 創建擠壓變形(Squash) 113
5.8.6 創建扭曲變形(Twist) 114
5.8.7 創建波形變形(Wave) 114
5.9 造型變形(Sculpt Deformer) 115
5.10 顫動變形(Jiggle Deformer) 117
5.10.1 創建顫動變形 117
5.10.2 創建顫動快取 117
5.10.3 刪除顫動快取 118
5.11 線變形(Wire Tool) 118
5.12 褶皺變形(Wrinkle Tool) 120
5.12.1 褶皺變形的種類 120
5.12.2 創建褶皺變形 120
第6章 Maya設定常用材質節點工具 122
6.1 材質節點概述 122
6.2 節點創建方法 122
6.3 節點的輸入和輸出 123
6.4 乘除節點(Multiply Divide) 123
6.5 平均數節點(Plus Minus Average) 125
6.6 翻轉節點(Reverse) 128
6.7 條件節點(Condition) 129
6.8 融合節點(blendColors) 132
6.9 限制節點(Clamp) 134
6.10 距離節點(distanceBetween) 137
第2篇 角色高級設定
第7章 胳膊系統設定 140
7.1 胳膊不跟隨肩部 140
7.1.1 肩部帶動胳膊概述 140
7.1.2 手臂骨骼創建 140
7.1.3 手臂控制器創建 141
7.1.4 通過約束控制不跟隨肩部 142
7.1.5 創建跟隨開關 143
7.1.6 跟隨開關參數關聯 143
7.2 肩部無翻轉 144
7.2.1 肩部無翻轉概述 144
7.2.2 無翻轉的原理 145
7.2.3 手臂骨骼創建 145
7.2.4 創建手臂控制器 146
7.2.5 創建肩部輔助骨骼 147
7.2.6 鎖定肩部骨骼 147
7.2.7 二頭肌骨骼遞減表達式 148
7.3 胳膊自動扭曲系統 148
7.3.1 製作思路 148
7.3.2 創建骨骼及IK 148
7.3.3 設定高級扭曲系統 149
7.3.4 創建輔助控制骨骼 150
7.3.5 創建層級 150
7.3.6 創建簇控制樣條曲線 150
7.3.7 創建輔助骨骼拉伸 151
7.3.8 創建其他輔助骨骼 151
7.3.9 匹配手臂骨骼 152
7.4 肢體次級骨骼 153
7.4.1 肢體次級骨骼原理 153
7.4.2 創建毛髮系統 153
7.4.3 創建次級骨骼 154
7.4.4 創建控制骨骼 155
7.4.5 創建locator輔助控制器 155
7.4.6 為nurbus刷權重 156
7.4.7 約束控制骨骼 156
7.4.8 為平面繪製權重 158
7.4.9 次級骨骼匹配到手臂上 159
第8章 軀幹系統設定 161
8.1 軀幹單骨骼線性IKFK共存 161
8.1.1 製作思路 161
8.1.2 創建軀幹骨骼及IK 161
8.1.3 創建軀幹IK控制器及層級關係 162
8.1.4 創建軀幹FK控制器 163
8.1.5 IK與FK控制器之間層級 163
8.2 軀幹IKFK共存技術 164
8.2.1 製作思路 164
8.2.2 軀幹IKFK共存原理 164
8.2.3 骨骼及控制器創建 166
8.2.4 創建軀幹控制器 166
8.2.5 創建軀幹約束 167
8.3 軀幹IKFK共存JS法 169
8.3.1 軀幹骨骼及IK創建 169
8.3.2 輔助骨骼控制樣條IK 170
8.3.3 創建輔助控制骨骼及控制器 171
8.3.4 輔助骨骼約束控制 171
8.4 軀幹無翻轉系統 173
8.4.1 軀幹控制骨骼及控制器創建 173
8.4.2 輔助Locator創建 176
8.4.3 平均節點控制Locator組 177
第9章 三套骨骼及骨骼拉伸系統設定 181
9.1 IK骨骼拉伸——表達式方式 181
9.1.1 Transfor方式骨骼拉伸等長原理 181
9.1.2 Transfor方式骨骼拉伸不等長原理 181
9.1.3 Scale方式骨骼拉伸原理 182
9.1.4 創建腿部骨骼及IK 182
9.1.5 創建腿部骨骼測量及控制器 182
9.1.6 骨骼常規拉伸 183
9.1.7 骨骼無限拉伸 184
9.1.8 骨骼拉伸開關 185
9.1.9 骨骼拉伸後腿部形狀保持 186
9.1.10 線性IK骨骼拉伸及擠壓 187
9.2 IK骨骼拉伸——節點方式 191
9.2.1 節點方式製作概述 191
9.2.2 創建腿部骨骼空組 191
9.2.3 創建拉伸所需節點 191
9.2.4 連線距離節點 192
9.2.5 連線條件節點 192
9.2.6 連線乘除節點 193
9.2.7 連線融合節點 193
9.2.8 融合節點輸出值分配給各骨骼 194
9.3 三套骨骼——表達式方式 195
9.3.1 三套骨骼製作思路 195
9.3.2 三套骨骼創建 195
9.3.3 創建IK控制手柄及控制器 195
9.3.4 創建FK控制器 196
9.3.5 FK控制器約束骨骼 197
9.3.6 IK控制骨骼約束綁定骨骼 197
9.3.7 FK控制骨骼約束綁定骨骼 198
9.3.8 骨骼及控制器顯示表達式 198
9.3.9 約束開關表達式 199
9.3.10 約束開關表達式原理 200
9.4 三套骨骼——節點方式 200
9.4.1 三套骨骼——節點方式概述 200
9.4.2 創建融合節點 201
9.4.3 融合節點控制三套骨骼顯示原理 202
9.4.4 節點連線控制控制器顯示 202
9.4.5 融合節點控制約束節點 203
第10章 腳部系統設定 205
10.1 腳部設定——打組法 205
10.1.1 腳部打組法概述 205
10.1.2 腳部打組方法一:腿部骨骼及IK手柄創建 205
10.1.3 創建腿部控制器 205
10.1.4 腳部打組確定旋轉軸 206
10.1.5 控制器屬性關聯 208
10.1.6 限制腳部組旋轉 210
10.1.7 腳部打組方法二 210
10.1.8 腳部打組方法三 213
10.2 腳部設定——反轉腳 216
10.2.1 反轉腳概述 216
10.2.2 創建腿部骨骼及IK 216
10.2.3 創建IK手柄及控制器 216
10.2.4 腳部屬性關聯 217
10.2.5 創建其他旋轉軸 218
10.2.6 使用min和max創建腳部side系統 219
10.3 腳部設定——Roll系統 220
10.3.1 使用條件語句和clamp函式創建Roll系統 220
10.3.2 使用linstep創建Roll系統 221
10.3.3 linstep函式Roll系統所用表達式詳解 223
第11章 膝蓋鎖定系統設定 225
11.1 膝蓋肘部鎖定——節點 225
11.1.1 膝蓋肘部鎖定製作思路 225
11.1.2 創建手臂骨骼及控制器 225
11.1.3 創建距離測量 226
11.1.4 通過節點創建骨骼拉伸 228
11.1.5 肘部鎖定節點 230
11.2 膝蓋鎖定——表達式 233
11.2.1 表達式製作膝蓋肘部鎖定 234
11.2.2 嵌套條件語句製作膝蓋肘部鎖定 235
11.2.3 嵌套語句原理 237
第12章 無縫轉換系統設定 238
12.1 parent控制器製作及IKFK控制器顏色技巧 238
12.1.1 Parent控制器製作思路 238
12.1.2 創建形體 238
12.1.3 Parent命令結合形體節點 239
12.1.4 表示式控制形體顏色變化 240
12.2 IKFK無縫轉換 241
12.2.1 無縫轉換製作思路 242
12.2.2 創建Locator定位 242
12.2.3 MEL控制無縫轉換 242
12.2.4 無縫轉換MEL命令說明 244
12.3 手部無縫跟隨頭和腰 245
12.3.1 無縫跟隨製作思路 245
12.3.2 創建手部及控制器 245
12.3.3 創建頭腰約束 245
12.3.4 MEL控制無縫跟隨 246
12.4 頭部無縫跟隨脖子切換 247
12.4.1 創建骨骼及控制器 247
12.4.2 創建約束及添加自定義屬性 248
12.4.3 MEL控制無縫跟隨 249
12.5 自定義右鍵彈出命令 250
12.5.1 自定義右鍵彈出命令概述 250
12.5.2 IKFK無縫轉換MEL打包 250
12.5.3 Reset MEL打包 251
12.5.4 製作滑鼠右鍵快捷鍵 252
12.5.5 修改dagMenuProc.mel 255
12.5.6 將上述MEL輸入到表達式中 256
第13章 手部系統設定 258
13.1 手部翻轉控制 258
13.1.1 翻轉原理 258
13.1.2 創建手部及輔助骨骼 258
13.1.3 創建手部IK及控制器 259
13.1.4 創建定位Locator 260
13.1.5 創建手部層級關係 261
13.1.6 參數關聯控制手腕翻轉 262
13.2 手指控制——表達式 263
13.2.1 製作思路 263
13.2.2 創建手部骨骼及控制器 264
13.2.3 手部控制器屬性及參數關聯 265
13.2.4 表達式控制手指彎曲及分開 266
13.3 Gimbal Lock萬象節鎖 268
13.3.1 萬象節鎖原理 268
13.3.2 萬向節鎖解決辦法 269
第14章 面部系統設定 271
14.1 面部骨骼直接控制 271
14.1.1 眉毛骨骼定位 271
14.1.2 眼睛骨骼定位 271
14.1.3 顴骨骨骼定位 271
14.1.4 臉頰骨骼定位 272
14.1.5 下巴骨骼定位 272
14.1.6 頭骨及脖子骨骼定位 272
14.1.7 下頜骨骼定位 272
14.1.8 舌頭骨骼定位 273
14.1.9 下巴層級骨骼定位 273
14.2 面部融合變形UI面板製作 275
14.2.1 軟選工具套用 275
14.2.2 創建BlendShape 275
14.2.3 創建UI控制器 276
14.2.4 表達式控制UI面板 277
14.2.5 控制器x軸位移控制左右嘴角 277
14.2.6 左右嘴角控制原理 278
14.2.7 控制器在左上角和右上角起作用 278
14.2.8 控制器y軸為1時,左右嘴角起作用 278
14.3 面部次級骨骼 279
14.3.1 製作思路 279
14.3.2 模型及Blend Shape創建 279
14.3.3 創建粒子發射器 280
14.3.4 創建次級骨骼及繪製權重 281
14.3.5 參數關聯及表達式 283
14.3.6 其他附著表面工具製作方法及優缺點 284
14.4 眼球自動跟隨眼皮 285
14.4.1 自動跟隨眼皮製作思路 285
14.4.2 約束控制 285
14.4.3 眼球向下自動閉眼表達式 286
14.4.4 眼球旋轉帶動眼皮輕微運動表達式 287
14.5 頭部擠壓拉伸 287
14.5.1 骨骼及控制器創建 288
14.5.2 表達式控制骨骼擠壓 289
第15章 骨骼動力學及尾巴系統設定 291
15.1 骨骼動力學 291
15.1.1 製作思路 291
15.1.2 創建骨骼及IK 291
15.1.3 創建柔體 291
15.1.4 創建彈簧系統 292
15.2 自動尾隨系統設定 293
15.2.1 sin函式原理 293
15.2.2 默認sin函式效果 294
15.2.3 改變上下幅度 295
15.2.4 改變左右幅度 296
15.2.5 創建骨骼及控制器 296
15.2.6 表達式控制尾隨 297
15.3 自動尾巴捲曲技術 297
15.3.1 製作思路 297
15.3.2 創建骨骼及控制器 298
15.3.3 表達式控制捲曲 299
15.3.4 表達式原理 300
第3篇 MEL套用
第16章 MEL基礎 302
16.1 理解MEL 302
16.2 MEL的重要性 302
16.3 如何學習MEL 302
16.4 MEL和表達式的區別 302
16.5 MEL編輯器 303
16.6 命令行(Command Line) 303
16.7 腳本編輯器 303
16.8 Mel命令(Command) 304
16.9 Mel命令快速幫助 304
16.10 建立快捷按鈕(Shelf) 305
16.11 編輯快捷按鈕 306
16.12 自定義快捷選單 306
16.13 其他常用選單命令及快捷按鈕 307
16.14 Maya外掛程式的一般安裝方法 308
16.15 MEL運算符 308
16.15.1 數學運算符 308
16.15.2 關係運算符 308
16.15.3 邏輯運算符 309
16.15.4 賦值運算符 309
16.16 變數 309
16.16.1 浮點型變數 309
16.16.2 整數型變數 309
16.16.3 字元串變數 309
16.16.4 矢量變數 309
16.16.5 預定義變數 310
16.16.6 在全局中使用自定義變數 310
16.16.7 變數(variable)的規範 310
16.17 數組 310
16.17.1 數組聲明 310
16.17.2 給數組賦值 310
16.18 print命令 311
16.19 條件語句 312
16.20 select命令 312
16.21 setAttr命令 313
16.22 表達式 314
16.23 headsUpMessage命令 316
16.24 ls-sl命令 316
16.25 函式 318
16.25.1 min最小值函式 318
16.25.2 max函式 318
16.25.3 Clamp函式 318
16.25.4 sin三角函式 319
16.25.5 cos三角函式 319
16.25.6 linstep曲線函式 319
16.25.7 linstep函式算法 319
第17章 MEL高級視窗 320
17.1 MEL視窗概述 320
17.2 創建視窗 320
17.2.1 window命令(創建視窗) 320
17.2.2 showWindow命令(顯示視窗) 321
17.2.3 標籤命名 321
17.2.4 設定視窗的大小 321
17.2.5 視窗命名 322
17.2.6 deleteUI命令(銷毀界面元素) 322
17.2.7 條件語句使用deleteUI命令 323
17.2.8 window常用子命令 323
17.3 控制項(Control)及布局(Layout) 324
17.3.1 控制項及布局概述 324
17.3.2 rowColumnLayout命令(橫豎布局) 325
17.3.3 text命令(靜態文本) 326
17.3.4 改變文字與按鈕之間間隔 327
17.3.5 separator命令(分割線) 329
17.3.6 symbolBotton命令(圖示按鈕) 332
17.3.7 command命令(執行命令) 334
17.3.8 層級關係 335
17.3.9 setParent命令(指定當前布局) 335
17.3.10 columnLayout命令(豎布局) 335
17.3.11 將文本框內名稱與創建的球體名稱相同 336
17.3.12 rowLayout命令(橫布局) 337
17.3.13 rowColumnLayout命令(橫豎布局) 338
17.3.14 scrollLayout命令(滾動布局) 339
17.3.15 frameLayout命令(框線布局) 340
17.3.16 paneLayout命令(窗格布局) 344
17.3.17 tabLayout命令( 標籤布局) 345
17.3.18 formLayout命令(表單布局) 346
17.3.19 gridLayout命令(格子布局) 351
17.3.20 menuBarLayout命令(選單條布局) 352
17.3.21 shelfLayout命令(工具架布局) 353
17.3.22 shelfTabLayout命令(工具架標籤布局) 354
17.3.23 “confirmDialog”命令(確認對話框) 355
附錄 角色設定規範
附錄A 骨骼綁定規範 358
附錄B 骨骼常用名稱 367