《計算機動畫設計指南:運動捕捉、角色特征、點圖及MayaWinning技術》詳細闡述了與計算機動畫相關的高效解決方案及相應的數據結構和算法,主要包括計算機動畫概述、技術背景、運動捕捉入門、運動數據、面部特征動畫、實體空間的動畫、流體和氣體的動畫化、動畫生物學、基于點的動畫、Maya內部原理解析、MEL動畫、MEL的剛體動力學范例、MEL的角色裝配范例、建立你的角色以及MEL命令基礎等內容。此外,書中還提供了相應的算法、代碼以及偽代碼,以幫助讀者進一步理解相關方案的實現過程。
《計算機動畫設計指南:運動捕捉、角色特征、點圖及MayaWinning技術》適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
這是一本“大而全”的計算機動畫方面的權威著作,其內容可謂無所不包。本書從動畫的起源和歷史變遷著手,系統而不失詳盡地介紹了運動捕捉技術、角色和面部動畫技術、剛體動畫、流體動畫、動畫相關的生物學知識,以及基于頂點的動畫。本書的另一大亮點就是充分運用Maya這一計算機動畫制作軟件,向讀者展示了快速制作各種復雜的剛體與粒子動畫、基于物理的動畫,以及角色動畫的技巧。其主要的制作方法并不是通過傳統的用戶界面調用,而是直接使用MEL腳本語言來執行動畫的構建。有了這些更為清晰和有價值的參考內容,相信可以幫助相關從業人員快速而系統地學習Maya動畫制作的深層次技巧,而非簡單地照貓畫虎。
作為一本理應偏重于具體技術實踐的圖書,本書重視理論的講解、數學模型的建立,以及相關過程的推導;而另一部分章節則包含了大量與實踐密切相關的源代碼或偽代碼內容。因此,無論是動畫的具體實施人員,還是從事相關理論研究的人士,都應將這本書徹底讀懂吃透。事實上,它所包含的大量的數學、生物學和物理學的理論知識,讓筆者在翻譯過程中也遇到了極大的挑戰。
總體來說,本書是一本全面、系統、詳盡地講解計算機動畫技術以及相關知名軟件產品的著作,相關的作者也足有18人之多。他們多年來在第一線積累下來的寶貴經驗,理應被更多的計算機動畫行業從業者和愛好者所了解,以及傳承。
本書的翻譯工作由王銳主持,其中第1、2、4、6、8、9章由王銳負責,第3、5章由冷林霞負責,第10~15章由王冠群、遲亮負責,第7章由劉椮楠負責,全書由王銳統籌并定稿。此外,冷琴、陳節、劉劍也參與了本書的部分翻譯工作,在此向他們表示感謝。
由于譯者水平有限,而本書的內容又十分繁雜,涉及知識面很廣,書中難免有疏漏和錯誤之處,敬請讀者指出和諒解。
王 銳
1.1 感知
1.2 動畫的變遷
1.2.1 早期設備
1.2.2 早期的傳統動畫
1.2.3 迪斯尼(Disney)
1.2.4 其他貢獻者
1.2.5 其他動畫媒介
1.2.6 動畫的原理
1.2.7 電影制作的原理
1.3 動畫的生產
1.4 計算機動畫的生產
1.4.1 計算機動畫的生產任務
1.4.2 數字編輯
1.4.3 數字視頻
1.4.4 數字音頻
1.5 計算機動畫簡史
1.5.1 早期的活躍者(1980年以前)
1.5.2 中間的幾年(1980年左右)
1.5.3 動畫時代(20世紀80年代中期至今)
1.6 本章總結
參考文獻
第2章 技術背景
2.1 空間與變換
2.1.1 顯示流水線
2.1.2 齊次坐標和變換矩陣
2.1.3 變換的合成:級聯變換矩陣
2.1.4 基本變換
2.1.5 任意方位的重新表達
2.1.6 從矩陣中分解變換
2.1.7 顯示流水線中的變換操作
2.1.8 誤差估計
2.2 方位的表達
2.2.1 固定角度(Fixed-Angle)表示法
2.2.2 歐拉角度(Euler Angle)表示法
2.2.3 角度與軸(Angle and Axis)表示法
2.2.4 四元數(Quaternion)表示法
2.2.5 指數映射(Exponential Map)表示法
2.3 本章總結
參考文獻
第3章 運動捕捉入門
3.1 運動捕捉與表演動畫
3.2 表演動畫在娛樂業的發展歷史
3.2.1 轉描(Rotoscope)
3.2.2 Brilliance
3.2.3 Pacific Data Images
3.2.4 deGraf/Wahrman
3.2.5 Kleiser-Walczak公司
3.2.6 Homer and Associates
3.3 動作捕捉的類型
3.3.1 光學動作捕捉系統
3.3.2 電磁追蹤器
3.3.3 機電設備
3.3.4 數字電樞
3.3.5 其他動作捕捉系統
3.4 動作捕捉在各行各業中的應用
3.4.1 醫學界
3.4.2 體育界
3.4.3 娛樂界
3.4.4 法律界
第4章 運動數據
4.1 運動數據類型與格式
4.1.1 Acclaim文件格式
4.1.2 .asf文件
4.1.3 .amc文件
4.1.4 .bva文件格式
4.1.5 .bvh文件格式
4.1.6 .trc文件格式
4.1.7 .htr文件格式
4.2 編寫運動捕捉解析工具
第5章 面部特征動畫
5.1 人臉
5.1.1 面部結構解析
5.1.2 面部表情編碼系統(FACS)
5.2 面部模型
5.2.1 構建連續的表面模型
5.2.2 紋理
5.3 制作面部動畫
5.3.1 參數化模型
5.3.2 融合變形
5.3.3 肌肉模型
5.3.4 表情
5.3.5 總結
5.4 口型同步動畫制作
5.4.1 發音器
5.4.2 音素
5.4.3 協同發音
5.4.4 韻律學
5.5 本章總結
參考文獻
第6章 實體空間的動畫
6.1 動畫路徑
6.2 實體紋理(solid texture)的動畫化
6.2.1 大理石生成
6.2.2 大理石運動
6.2.3 實體紋理透明(solid-textured transparency)的動畫
6.3 氣體體積的動畫
6.4 三維晶格體
6.4.1 訪問晶格體數據
6.4.2 功能流程形式的晶格體
6.4.3 功能流程函數
6.4.4 功能的集合
6.5 超紋理(hypertexture)的動畫化
6.6 粒子系統:另一種過程動畫技術
6.7 本章總結
參考文獻
第7章 流體和氣體的動畫化
7.1 特殊的流體類型
7.1.1 水的模型
7.1.2 云的模型(作者:David Ebert)
7.1.3 火的模型
7.2 計算流體力學
7.2.1 建模流體的一般方法
7.2.2 計算流體力學方程
7.3 本章總結
參考文獻
第8章 動畫生物學
8.1 概述
8.2 動畫和電影的感知
8.2.1 視覺的簡述
8.2.2 運動和動畫的視覺
8.3 動畫師的工作流程
8.4 工作流程三段論
8.4.1 流程階段1:預生產
8.4.2 流程階段2:生產
8.4.3 流程階段3:生產后處理
8.4.4 放在一起考慮
8.5 動畫
8.6 Maya
8.6.1 過程式動畫與關鍵幀動畫
8.6.2 關鍵幀與內存
8.6.3 Animation菜單集
8.6.4 設置關鍵幀
8.6.5 自動關鍵幀
8.6.6 圖示動畫
8.6.7 刪除關鍵幀
8.6.8 時間單位
8.6.9 回放設置
8.7 教程08.01:關鍵幀動畫
8.7.1 準備工作
8.7.2 設置關鍵幀
8.7.3 播放、拖動和停止動畫
8.7.4 編輯動畫曲線
8.7.5 Graph Editor
8.7.6 Graph Editor的Graph View
8.7.7 Graph Editor工具欄
8.7.8 移動關鍵幀項
8.8 Hypergraph和Attribute Editor中的動畫節點
8.9 教程08.02:簡單的過程式動畫
8.9.1 動畫表達式概述
8.9.2 創建動畫表達式
8.9.3 動畫表達式節點
8.10 本章總結
參考文獻
第9章 基于點的動畫
9.1 導言
9.2 無網格的有限元
9.2.1 概述
9.2.2 連續彈力
9.2.3 無網格的離散化
9.2.4 移動最小二乘法
9.2.5 更新應變與應力
9.2.6 通過應變能量計算受力
9.2.7 彈性物體的動畫化
9.2.8 塑料
9.2.9 被動的表面點集(surfel)對流
9.2.10 總結
9.3 碎裂材質的動畫
9.3.1 概述
9.3.2 歷史背景
9.3.3 不連續的建模
9.3.4 表面模型
9.3.5 裂縫的初始化和增殖
9.3.6 拓撲控制
9.3.7 體積采樣
9.3.8 破碎的控制
9.3.9 模擬流水線
9.3.10 結論
9.4 流體模擬
9.4.1 概述
9.4.2 模擬方法
9.4.3 平滑粒子的流體動力學
9.4.4 表面表達
9.4.5 使用采樣點進行表面跟蹤
9.4.6 總結
參考文獻
第10章 Maya內部原理解析
10.1 為什么要剖析Maya內部原理
10.2 從屬圖、屬性、屬性連接
10.3 范例1:使用Hypergraph瀏覽從屬圖
10.4 變換層次與父子關系
10.5 檢查層次結構
10.6 變換節點(Transform)和形狀節點(Shape)
10.7 范例2:了解變換節點和形狀節點、實例化,以及歷史節點
10.8 MEL和Maya用戶界面
10.9 Maya場景的后臺處理備忘錄
第11章 MEL動畫
11.1 動畫
11.1.1 時間
11.1.2 實時回放
11.1.3 動畫曲線
11.1.4 骨骼系統
11.1.5 運動路徑(motion path)
第12章 MEL的剛體動力學范例
12.1 范例1:粒子碰撞
12.1.1 創建場景
12.1.2 與粒子碰撞
12.1.3 對碰撞進行控制
12.1.4 geoConnector中的其他控制手段
12.1.5 在MEL中完成場景
12.2 范例2:碰撞事件
12.2.1 概述
12.2.2 添加發射器和粒子
12.2.3 動力學關系
12.2.4 限制粒子數目,添加重力
12.2.5 添加更多的碰撞
12.2.6 事件
12.2.7 籃子的表達式
12.2.8 編輯設置來修復問題
12.2.9 速度
12.3 范例3:剛體動力學的物體間碰撞
12.3.1 編寫復制和定位的腳本
12.3.2 組裝字符串變量時的常見錯誤
12.3.3 創建碰撞盒
12.3.4 反轉碰撞盒的法線
12.3.5 主動和被動的剛體
12.3.6 將每個網格平面都變成被動碰撞對象
12.3.7 打開碰撞數據選項
12.3.8 改變網格碰撞時的顏色
12.4 范例4:剛體動力學與粒子
12.4.1 使用MEL創建瞄準窗口
12.4.2 向工具欄添加新的窗口控件
12.4.3 將平面轉換為多邊形,并且分解為多片
12.4.4 向分片添加動力學和表達式
12.4.5 創建完整的MEL腳本
12.4.6 加載場景并運行腳本
12.4.7 向panelBreakup傳遞一個浮點數
第13章 MEL的角色裝配范例
13.1 范例1:角色控制
13.1.1 場景載入
13.1.2 場景概述
13.1.3 mrBlah控制的概述
13.1.4 鎖定屬性
13.1.5 手臂控制
13.1.6 建立mrBlah的脊柱控制
13.1.7 選中足部時產生搖擺的效果
13.2 范例2:創建角色的用戶界面
13.2.1 加載保存的mrBlah場景
13.2.2 設計用戶控件
13.2.3 創建 mrBlahControls.mel
13.2.4 創建滑塊來控制spinCtrl的屬性
13.2.5 為窗口空間創建布局
13.2.6 測試窗口
13.2.7 向用戶顯示有限的信息
13.2.8 給窗口創建一個腳本節點
13.2.9 創建工具欄圖標來打開窗口
13.2.10 mrBlahControls.mel的完整代碼
第14章 建立你的角色
14.1 設置角色的旋轉數據
14.2 設置角色的平移數據
14.3 提示與技巧
14.3.1 改變旋轉的順序
14.3.2 旋轉的分配
14.3.3 使用三次參數曲線
14.3.4 插值
14.3.5 關鍵幀簡化
14.3.6 捕捉數據的重適應
第15章 MEL命令基礎
15.1 不寫腳本也能使用MEL嗎
15.2 命令行和命令反饋行
15.3 Shell
15.4 腳本編輯器
15.5 腳本編輯器 VS Shell
15.6 腳本編輯器的信息作為MEL代碼
15.7 把一個MEL腳本制作成工具欄按鈕
15.8 保存一個MEL腳本
15.9 狀態消息區的危險誘惑
15.10 whatIs命令
15.11 MEL命令的基本結構
15.12 在網絡上哪里可以找到關于Maya 和MEL的信息
15.13 如何使用在網上找到的MEL腳本
15.14 備忘錄