出版時間:2011-1 出版社:清華大學(xué) 作者:張榮寶,呂新欣 編著 頁數(shù):602
Tag標(biāo)簽:無
前言
當(dāng)今三維動畫領(lǐng)域(包括影視動畫、電視廣告、3D動畫片、游戲、建筑、產(chǎn)品展示、可視化……)的軟件可謂是百花爭鳴,但其中卻是良莠不齊,絕大部分軟件功能都不是很全面,因此嚴(yán)重地影響了軟件的使用率。而唯獨(dú)Maya擁有著全面的功能,而且用戶群非常之大,因此Maya也就成為了影視動畫的工業(yè)標(biāo)準(zhǔn)。Maya這個軟件工具,作為3D動畫領(lǐng)域中的著名軟件,其強(qiáng)大的功能已經(jīng)被世人所熟知。在中國幾乎所有的三維制作公司都用Maya作為制作工具。但無奈,由于技術(shù)原因,Maya功能的利用率在國內(nèi)是很可憐的,基本都在20%以下,遠(yuǎn)遠(yuǎn)達(dá)不到國外的利用率。究其原因,就是國內(nèi)的制作人員大多是學(xué)藝術(shù)出身,所以在Maya程序這一塊很難躍進(jìn),使Maya這一最強(qiáng)有力、最核心的工具無法發(fā)揮出它強(qiáng)大的威力,這樣就造成了國內(nèi)制作水準(zhǔn)較之國外要差很多。我們經(jīng)??吹膰獯笃纭?012》、《阿凡達(dá)》、《變形金剛》、《指環(huán)王》、《哈利波特》、《金剛》、《黑客帝國》、《后天》等,幾乎所有品質(zhì)一流的影片,都使用Maya作為其主要制作工具。而眾多制作公司選用Maya的唯一一個原因,就是Maya的開放性非常好。所謂Maya的開放性就是利用Maya的編程工具進(jìn)行程序設(shè)計(jì),以拓展Maya的功能。而在這一塊,恰恰是國內(nèi)無法涉及的領(lǐng)域,現(xiàn)在市面上幾乎所有的書,都是圍繞Maya軟件界面的某些現(xiàn)成的功能來講述的,都是千篇一律,不外乎就是建模、材質(zhì)燈光、角色動畫、動力學(xué)特效等。整體來說技術(shù)價(jià)值不高,含金量低。如果想在Maya技術(shù)上有所突破,真正達(dá)到或是近似于好萊塢大片的效果,那必須利用Maya的程序拓展功能來實(shí)現(xiàn),這是一條必由之路。Maya在國內(nèi)已發(fā)展了十多年,它的精髓何在大家都心知肚明,那就是Maya強(qiáng)大的程序內(nèi)容。其實(shí)很多人都對Maya的程序開發(fā)這一塊內(nèi)容垂涎已久,但無奈的是目前國內(nèi)還沒有系統(tǒng)全面介紹該技術(shù)的書籍或是資料,使廣大Maya用戶只能觀望而無法有效利用。藉于此,我們看到了國內(nèi)用戶之所求,看到Maya編程技術(shù)之空白,所以十分有必要策劃一部內(nèi)容全面翔實(shí)的Maya程序使用書籍。
內(nèi)容概要
本書以Maya 2010版及Maya 2011版本為依托,詳細(xì)地介紹了各種Maya動畫編程技術(shù)。具體內(nèi)容包括動畫表達(dá)式、粒子表達(dá)式、常用函數(shù)、表達(dá)式編輯器、MEL腳本基礎(chǔ)內(nèi)容、數(shù)值與變量、數(shù)據(jù)類型、創(chuàng)建界面、句法、腳本范例、Python的使用、Python和線程、MEL與Python的重要差異、程序編譯簡介、導(dǎo)出插件程序、使用API編輯節(jié)點(diǎn)、API多線程插件、多邊形API和Maya Python API、分配Maya插件等。 本書附帶4張DVD,近20小時的視頻教學(xué),全方位地以視頻教學(xué)的方式展現(xiàn)了Maya的強(qiáng)大程序功能,使學(xué)習(xí)枯燥的程序編寫變得簡單易懂。光盤內(nèi)容包括表達(dá)式的常用函數(shù)學(xué)習(xí)、表達(dá)式的應(yīng)用、粒子表達(dá)式應(yīng)用、MEL腳本命令操作、函數(shù)定義操作、自定義窗口、Python介紹、Python語法規(guī)則、Python元素的引用方法、Python內(nèi)置函數(shù)、Maya API插件編寫及應(yīng)用實(shí)例等。光盤內(nèi)容是圖書內(nèi)容的延伸和補(bǔ)充,是全面學(xué)習(xí)Maya程序高級功能最為經(jīng)典的不可多得的珍貴教學(xué)資料。
作者簡介
總動員公司創(chuàng)始人,Maya專家。國內(nèi)第一代三維動畫技術(shù)的研究者與教學(xué)者,曾擔(dān)任過多部電影、電視劇的特技導(dǎo)演,有豐富的行業(yè)技術(shù)經(jīng)驗(yàn)。曾任多家知名學(xué)府及培訓(xùn)機(jī)構(gòu)的技術(shù)總監(jiān)和教學(xué)總監(jiān),具有豐富的三維動畫教學(xué)經(jīng)驗(yàn)。著有多部動畫技術(shù)專著,出版有《Maya總動員》系列大型多媒體教學(xué)軟件。
呂新欣
Houdini專家,Maya專家。從事三維動畫工作十多年,曾供職于多家知名動畫制作企業(yè),任職技術(shù)總監(jiān),并在多家高校及培訓(xùn)機(jī)構(gòu)任教,是一位技術(shù)全面而精湛的三維動畫專家。
書籍目錄
第1章 表達(dá)式 1.1 動畫表達(dá)式 1.1.1 動畫表達(dá)式 1.1.2 創(chuàng)建動畫表達(dá)式 1.1.3 每個屬性只有一個驅(qū)動程序 1.1.4 時間和幀關(guān)鍵詞 1.1.5 找到之前創(chuàng)建的動畫表達(dá)式 1.1.6 編輯動畫表達(dá)式中的文本 1.1.7 使用文本編輯器編輯動畫表達(dá)式 1.1.8 刪除動畫表達(dá)式 1.2 粒子表達(dá)式 1.2.1 關(guān)于粒子表達(dá)式 1.2.2 粒子表達(dá)式 1.2.3 創(chuàng)建表達(dá)式的執(zhí)行 1.2.4 運(yùn)行時間表達(dá)式的執(zhí)行 1.2.5 設(shè)置動態(tài)開始幀 1.2.6 設(shè)置原始狀態(tài)使用的屬性 1.2.7 編寫創(chuàng)建表達(dá)式 1.2.8 編寫運(yùn)行時間表達(dá)式 1.2.9 運(yùn)行粒子屬性 1.2.10 添加動態(tài)屬性 1.2.11 了解每粒子和每對象屬性 1.2.12 了解原始狀態(tài)屬性 1.2.13 賦值自定義屬性 1.2.14 賦值不同長度的粒子排列屬性 1.2.15 在運(yùn)行表達(dá)式中使用創(chuàng)建表達(dá)式的數(shù)值 1.2.16 運(yùn)行位置、速度和加速度 1.2.17 運(yùn)行顏色 1.2.18 運(yùn)行發(fā)散的粒子 1.2.19 運(yùn)行碰撞 1.2.20 運(yùn)行使用期 1.2.21 運(yùn)行特定粒子 1.2.22 賦值矢量和矢量排列 1.3 常用函數(shù) 1.3.1 極限函數(shù) 1.3.2 指數(shù)函數(shù) 1.3.3 三角函數(shù) 1.3.4 矢量函數(shù) 1.3.5 轉(zhuǎn)化函數(shù) 1.3.6 數(shù)組函數(shù) 1.3.7 隨機(jī)數(shù)函數(shù) 1.3.8 曲線函數(shù) 1.3.9 通用命令 1.4 表達(dá)式編輯器 第2章 MEL腳本 2.1 背景情況 2.1.1 MEL概述 2.1.2 MEL和表達(dá)式手冊 2.1.3 編程器的MEL 2.2 運(yùn)行MEL 2.2.1 運(yùn)行MEL命令 2.2.2 查看或記錄與作用相關(guān)的MEL命令 2.2.3 為腳本制作一個工具欄按鈕 2.2.4 從MEL命令上得到幫助 2.3 數(shù)值和變量 2.3.1 整數(shù)和浮點(diǎn)數(shù) 2.3.2 字符串 2.3.3 顯式輸入和隱式輸入 2.3.4 變量 2.3.5 分配數(shù)值到變量和屬性上 2.3.6 輸出數(shù)值 2.3.7 選擇任意數(shù)字 2.4 排列、矢量和矩陣 2.4.1 排列 2.4.2 獲取和改變排列的大小 2.4.3 矢量 2.4.4 矩陣 2.5 類型 2.5.1 MEL合適類型 2.5.2 使用空白區(qū)域 2.5.3 添加注釋 2.5.4 變量命名 2.5.5 程序和腳本 2.5.6 完美腳本 2.6 控制腳本流量 2.6.1 測試和比較數(shù)值 2.6.2 布爾值 2.6.3 if…else if…else 2.6.4 ?:運(yùn)算符 2.6.5 switch…case 2.6.6 while 2.6.7 do…while 2.6.8 for 2.6.9 for-in 2.6.10 break 2.6.11 continue 2.6.12 測試命令、對象和屬性的存在 2.6.13 =和= =的不同 2.6.14 常見問題 2.7 屬性 2.7.1 屬性概述 2.7.2 屬性名稱 2.7.3 屬性的數(shù)據(jù)類型 2.7.4 獲取和設(shè)置屬性 2.7.5 獲取和設(shè)置多值屬性 2.8 程序 2.8.1 程序 2.8.2 定義程序 2.8.3 調(diào)用程序 2.8.4 全局和本地變量 2.8.5 測試功能在MEL中是否可用 2.8.6 檢查程序的來源 2.9 I/O和互動 2.9.1 用戶互動 2.9.2 讀取和編寫文件 2.9.3 測試文件存在、權(quán)限和其他屬性 2.9.4 控制文件 2.9.5 運(yùn)行目錄 2.9.6 執(zhí)行系統(tǒng)命令 2.9.7 讀取并寫入系統(tǒng)命令管線 2.9.8 從AppleScript中調(diào)用MEL,反之亦然 2.10 調(diào)試、優(yōu)化和疑難解答 2.10.1 MEL調(diào)試特點(diǎn) 2.10.2 優(yōu)化腳本和表達(dá)式速度 2.10.3 疑難解答 2.11 創(chuàng)建界面 2.11.1 ELF命令 2.11.2 窗口 2.11.3 控件 2.11.4 布局 2.11.5 分組 2.11.6 菜單 2.11.7 集合 2.11.8 母代與子代 2.11.9 命名 2.11.10 UI命令模板 2.11.11 刪除UI元素 2.11.12 連接命令到UI元素 2.11.13 簡單窗口 2.11.14 模式對話框 2.11.15 使用系統(tǒng)事件和scriptJobs 2.12 腳本節(jié)點(diǎn) 2.12.1 MEL腳本節(jié)點(diǎn) 2.12.2 生成或編輯腳本節(jié)點(diǎn) 2.12.3 打開文件時阻止腳本節(jié)點(diǎn)的運(yùn)行 2.13 高級版本 2.13.1 高級程序課題 2.13.2 高級動畫表達(dá)式課題 2.14 句法 2.14.1 祈使句法 2.14.2 分隔符和空白區(qū)域 2.14.3 表達(dá)式、運(yùn)算符和語句 2.14.4 運(yùn)算符優(yōu)先順序 2.14.5 組塊 2.14.6 注釋 2.14.7 表達(dá)式和MEL句法之間的不同 2.15 疑難問題解答 2.15.1 任務(wù) 2.15.2 腳本與句法 2.15.3 建模 2.15.4 動畫、動力學(xué)和渲染 2.16 腳本范例 2.16.1 從Maya自帶的腳本文件中學(xué)習(xí) 2.16.2 從文檔文件中讀取動畫參數(shù)值 2.16.3 粒子碰撞邊界 2.16.4 點(diǎn)爆炸 2.16.5 測試附加粒子屬性 2.16.6 測試動力學(xué)事件 2.16.7 動態(tài)時間播放 2.16.8 尋找著色對象 第3章 Python 3.1 Python in Maya 3.2 Python的使用 3.3 Python和線程 3.4 Python from an externalinterpreter 3.5 MEL與 Python中的重要差異 3.6 當(dāng)前限制條件 3.7 Tips and tricks for scriptersnew to Python 第4章 程序編譯和導(dǎo)出端口 4.1 程序編譯 4.1.1 程序編譯簡介 4.1.2 FBX文件程序編譯 4.1.3 IGES程序編譯插件 4.1.4 StudioImport插件程序和程序編譯 4.1.5 導(dǎo)出插件程序 4.1.6 Maya OpenFlight導(dǎo)入端口/導(dǎo)出端口 4.2 游戲 4.2.1 簡介 4.2.2 VRML2程序編譯 4.2.3 RTG應(yīng)用程序和文件格式 4.2.4 游戲交流2程序編譯 4.2.5 MDt API 第5章 Maya API簡介 5.1 簡介 5.2 安裝插件程序 5.3 卸載插件程序 5.4 編寫簡單的插件程序 5.5 重要的插件程序特性 5.6 與Maya組合 5.7 MObject 5.8 包裝器 5.9 對象和函數(shù)集 5.10 命名慣例 5.11 添加參數(shù) 5.12 錯誤檢查 5.13 MStatus類 5.14 錯誤記錄 第6章 使用API選擇 6.1 使用API選擇概述 6.2 MGlobal::setActive-SelectionList() 6.3 MSelectionList 6.4 MItSelectionList 6.5 setObject()方法 6.6 MFn::Type列舉 6.7 MGlobal::selectByName() 第7章 命令插件 7.1 添加命令給Maya概述 7.2 注冊命令 7.3 MFnPlugin 7.4 initializePlugin() 7.5 uninitializePlugin() 7.6 創(chuàng)建者方法 7.7 MpxCommand 7.8 返回結(jié)果到MEL 7.9 語法對象 7.10 標(biāo)志 7.11 背景 7.12 MPxContext 7.13 MPxContextCommand 7.14 工具屬性表 7.15 MPxToolCommand 7.16 連接插件到Maya菜單 7.17 第三方插件程序的安裝 第8章 DAG層次 8.1 DAG層次概述 8.2 節(jié)點(diǎn) 8.3 變形和形狀 8.4 DAG路徑 8.5 一般化的實(shí)例化 8.6 多個形狀的變形 8.7 DAG行走實(shí)例 第9章 編寫陰影節(jié)點(diǎn) 9.1 陰影節(jié)點(diǎn)插件程序概述 9.2 編寫陰影節(jié)點(diǎn)插件程序 9.3 陰影節(jié)點(diǎn)插件程序分析 9.4 InterNode實(shí)例編碼走查 9.5 陰影節(jié)點(diǎn)分類 9.6 Hypershade的陰影節(jié)點(diǎn)圖標(biāo) 9.7 特殊的陰影節(jié)點(diǎn) 9.8 陰影節(jié)點(diǎn)里的超級采樣 9.9 賦值渲染背景外的陰影節(jié)點(diǎn) 第10章 從屬圖表插件程序 10.1 從屬圖表插件程序概述 10.2 母代類別描述 10.3 基礎(chǔ) 10.4 從屬圖表(DG)節(jié)點(diǎn) 10.5 節(jié)點(diǎn) 10.6 屬性和塞子 10.7 復(fù)雜屬性 10.8 資料區(qū) 10.9 數(shù)據(jù)句柄 10.10 數(shù)據(jù)創(chuàng)建式 10.11 計(jì)算方法 10.12 更復(fù)雜的實(shí)例 10.13 MPxNode及其衍生類別 第11章 操縱器和形 11.1 操縱器 11.1.1 操縱器是什么 11.1.2 基礎(chǔ)操縱器 11.1.3 編寫操縱器 11.1.4 操縱器容器 11.1.5 操縱器和節(jié)點(diǎn)間的信息交流 11.1.6 連接操縱器到ShowManipulator Tool 11.2 形狀 11.2.1 Maya形狀 11.2.2 形狀分類 11.2.3 寫出形狀 11.2.4 繪圖與刷新 11.2.5 選擇 11.2.6 組件 11.2.7 調(diào)整和內(nèi)部屬性 11.2.8 幾何體數(shù)據(jù) 11.2.9 文件IO 11.2.10 變形器 11.2.11 標(biāo)記菜單 11.2.12 形狀實(shí)例 第12章 編寫節(jié)點(diǎn)和文件編譯程序 12.1 編寫硬件著色節(jié)點(diǎn) 12.1.1 硬件著色節(jié)點(diǎn)插件程序概述 12.1.2 執(zhí)行硬件著色節(jié)點(diǎn)插件 12.1.3 一個硬件著色節(jié)點(diǎn)插件的實(shí)例 12.1.4 改進(jìn)硬件著色器的運(yùn)行 12.1.5 硬件著色節(jié)點(diǎn)插件實(shí)例 12.2 編寫自定義變形節(jié)點(diǎn) 12.2.1 自定義變形概述 12.2.2 執(zhí)行自定義變形 12.2.3 自定義變形實(shí)例 12.2.4 自定義變形節(jié)點(diǎn)實(shí)例 12.3 編寫變形器節(jié)點(diǎn) 12.3.1 變形器概述 12.3.2 執(zhí)行變形器節(jié)點(diǎn) 12.3.3 變形器節(jié)點(diǎn)實(shí)例 12.3.4 變形器實(shí)例 12.4 編寫文件編譯程序 12.4.1 文件編譯程序概述 12.4.2 執(zhí)行文件編譯程序 12.4.3 文件編譯程序?qū)嵗?第13章 多線程插件 13.1 簡介 13.2 數(shù)據(jù)和任務(wù)對應(yīng) 13.3 線程 13.4 鎖定 13.5 OpenMP 13.6 Intel線程建構(gòu)模塊(TBB) 13.7 線程任務(wù) 13.8 內(nèi)存分配 13.9 線程和Maya 13.10 其他對應(yīng)類型 13.11 蟒蛇線程和Maya 13.12 第三方工具 13.13 API類別和插件 13.14 Mac OS X平臺特定線程庫問題 13.15 供應(yīng)商特定OpenMP問題 第14章 多邊形API和MayaPython API 14.1 多邊形API 14.1.1 多邊形API概述 14.1.2 如何內(nèi)部控制多邊形 14.1.3 五個基本多邊形API類別 814.1.4 構(gòu)建歷史和調(diào)整 14.1.5 polyModifierCmd實(shí)例 14.1.6 splitUVCmd實(shí)例 14.1.7 多邊導(dǎo)出端口插件 14.2 Maya Python API 14.2.1 Maya Python API簡介 14.2.2 開發(fā)工具 14.2.3 使用Maya PythonAPI 14.2.4 C++ Maya API和Maya Python API的差別 第15章 建立創(chuàng)建環(huán)境 15.1 創(chuàng)建插件和應(yīng)用程序簡介 15.2 編譯程序的要求 15.3 Linux環(huán)境(64位) 15.4 Linux編譯程序需要 15.5 使用調(diào)試器調(diào)試插件 15.6 Windows環(huán)境(32位和64位) 15.7 安裝Maya Plug-in Wizard 15.7.1 Maya Plug-in Wizard2.0(32位的版本) 15.7.2 Maya Plug-in Wizard2.0(64位的版本) 15.8 Mac OS X環(huán)境 第16章 分配Maya插件 16.1 分配單獨(dú)文件 16.2 分配多個文件的模塊 16.3 模塊限制 16.3.1 共享庫 16.3.2 渲染全能的著色器 第17章 實(shí)例插件 17.1 實(shí)例插件概述 17.2 獨(dú)立應(yīng)用程序舉例 17.3 C++插件實(shí)例描述 17.4 獨(dú)立應(yīng)用程序的描述舉例 17.5 著色器源代碼舉例 17.6 ASHLI著色器 17.7 腳本插件程序舉例 第18章 附錄 18.1 附錄A:NURBS圖形 18.2 附錄B:相關(guān)圖渲染節(jié)點(diǎn) 18.3 附錄C:渲染屬性 18.4 附錄D:常見問題解答 18.5 附錄E:API和Devkit限制條件 18.6 附錄F:添加圖像插件程序
章節(jié)摘錄
插圖:重新計(jì)算在沒有暗淡輸入的第一個節(jié)點(diǎn)上停止。例如,如果更改曲線旋轉(zhuǎn)度數(shù),但不更改曲面本身,然后重建旋轉(zhuǎn)的曲面會使旋轉(zhuǎn)節(jié)點(diǎn)重新計(jì)算,但不影響曲線。這是高級介紹,實(shí)際執(zhí)行提供大量信息,這樣可以避免不必要的計(jì)算。流經(jīng)圖形的數(shù)據(jù)是模擬水流經(jīng)管道。管道本身是連接的,但除非有重新定向和修改的數(shù)據(jù),否則實(shí)際上不進(jìn)行操作。擴(kuò)展這個類比,節(jié)點(diǎn)像脈沖線、花灑、噴泉、WC、源泉和水簽。它們都是以自己獨(dú)特的方式用水進(jìn)行某個操作,但必須有水。使用DG的有意思的副作用是很難直接影響對象。例如,細(xì)想上圖中的球體。如果沒有連接到Transfoixn3的DG節(jié)點(diǎn)影響球體縮放,通過UI或API設(shè)置的數(shù)值要重新縮放。但是,如果圖形中Time影響球體的縮放,Transform3的縮放通過UI或API進(jìn)行另外修改時,效果不同。如果設(shè)置縮放,可能直到第二次重新計(jì)算從屬圖表時,才會覆蓋Time設(shè)置的縮放。Time再次設(shè)置球體縮放時,通過UI或API設(shè)置的數(shù)值會丟失。更復(fù)雜的實(shí)例應(yīng)該是旋轉(zhuǎn)的曲面。如果試著在生成曲面上移動CV,會發(fā)生什么?只有DG重新計(jì)算時,CV才會移動到新位置,這時CV會移動回到旋轉(zhuǎn)節(jié)點(diǎn)強(qiáng)制命令的位置。
編輯推薦
《Maya總動員:動畫編程篇》:超值20小時高清視頻教程,素材及工程文件。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載