摘要:該文分析了3DS MAX 提供的MAX Script語言,并提出了如何利用MAX Script腳本語言解決一些特殊的實際問題,通過實例解決了有限的24個材質球在不夠用的情況下,保留場景中已經貼圖并不再改變材質的對象,重新設定、屬性清空以備其它對象使用,實現了3DS MAX本身自帶功能而不能解決的問題。使學生體驗到該腳本語言的優越性。
關鍵詞:MAXScript;材質球;屬性清空;Utility;代碼
中圖分類號:TP311.56文獻標識碼:A文章編號:1009-3044(2009)14-3702-02
Wisely Useing Of 3DS MAX Script to Clear the Material Properties of the Ball
SUN Zhen-ping
(Computer Department of Dalian Workers University, Dalian 116033, China)
Abstracts: This article analyses the MAX Script language which is given by 3DS MAX,and put forward that how to solve some specific practical problems by using MAX Script language. Through the actual examples to retain the object which?has been texture-mapped in the scene under the circumstances that the limited 24 material balls are not enough for using, and to unchange its substance,reseting and emptying properties for the use of other objects,so to realize the?function of 3DS MAX that cannot be solved by itself,and?to enable students to experience the advantages of the script language.
Key words: MAXScript; Material ball; Attribute clear spatial; Utility; Code
1 引言
隨著國內3DS MAX應用水平的不斷提高,3DS MAX使用者已經不再僅僅滿足于手工交互調整動畫,而是不斷的尋求更好、更快、更方便和更高層次的動畫制作途徑。MAX Script語言是3DS MAX自帶的腳本語言,它不但擁有一般程序語言的所有特點,而且可以在程序內實現幾乎所有在3DS MAX界面下的交互操作,功能非常強大,而且語法比較簡單,對初學者來說比較容易入門。
游戲場景設計和制作中,由于一個場景中的對象較多,每個場景對象相同的材質又少,所以學生在做作品時,24個材質球不夠用,有些場景對象不再變化的貼圖,用過的材質球可以屬性清空即處于初始狀態,重新利用;還有的時候可能將原有的材質復制改名再賦予場景,但感覺還是太亂。這時可以將部分或24個材質球清空,循環再用,這一想法可以利用3DS MAX Script的功能實現,編一小段程序代碼,并利用Visual MAX Script編輯器,制作一個控制按鈕,在命令面板的實用工具Utility中只要點擊一下此按鈕,就將用過的材質球有選擇的還原了。
2 相關知識
3DS MAX交互操作方式,首先它不能解決建立批處理工具,不能把3DS MAX從業人員從一些簡單重復的工作中解脫出來。例如不能建立一次可以渲染多個場景文件;不能模擬有上千個球體的星系;不能生成逼真的群鳥飛翔的動畫;不可以使物體按某個特點的數學曲線運動等。其次不能定制自己的卷展欄界面、鼠標工具、插件、工具按鈕等。所以現在很多3DS MAX從業人員開始研究MAX Script語言。
該語言非常適應沒有多少編程基礎和學習語言經驗者,關鍵在于是否能很好的理解MAX Script里面每一個字符的使用方法和它的作用。
可以使用該語言添加新的特征或設置自定義的3DS MAX,這樣它被定制成符合你的要求的樣式。還可以用3DS MAX記錄用戶的動作,這樣以后可以使用它們減少重復的動作。還可以用MAX Script告訴3DS MAX你需要的場景的類型,讓3DS MAX提供合適的場景,或者告訴3DS MAX你所做的事,或著輸入你希望執行的指令的時候告訴它希望發生什么事情。一句話,使用腳本語言就更為方便,目前在建筑、機械以及游戲設計的高端用戶都在使用腳本語言。
MAX Script的功能相當強大:MAX Script是完全基于OpenGL開源以及VC核心制作出來的,而當今世界上任何一款CG制作軟件也主要依賴這兩種語言編寫,也就是說如果MAX Script使用的好,我們完全有能力在3DS MAX里面集成Maya的所有功能。這不單是二次開發的樂趣,它更是一次CGer思維的革命。很多使用傳統制作方法難以完成的任務,在使用了MAX Script后就會變的非常簡便、快捷!
3 通過實例來解決實際問題步驟
1) 首先打開3DS MAX9.0應用軟件,在命令面板選擇工具按鈕■,再選擇“MAXScript”命令如圖1所示,并按“打開偵聽器”如圖2所示,在宏錄制器中如圖3所示,打勾并選擇,即打開了錄制max腳本動作的功能。
2) 打開材質編輯器,選擇一個空的材質球,在水平命令欄中,按左邊的“獲取材質”命令,并拾取“標準(standard)”材質,再將名稱改名為“sss”臨時材質球名,如圖4所示,目的是為了獲取自動錄制的腳本語句,如圖5所示中被紅圈圈住的兩行語句,然后將偵聽器窗口最小化,這為了后面備用。
3) 創建一個腳本,并在實用工具中,添加定義一個UI條目事件 “清空材質球” 。運行腳本后,在實用工具Utility中就有對應的UI條目出現即用戶界面,如圖6所示。
4) 新建腳本,在編輯器窗口中的編輯下選擇“新建卷展欄”,并在其打開的Visual MAXScript編輯器中新建一個內嵌按鈕,然后將嵌入按鈕改名為“清空”。如圖7所示。在“事件處理程序”標簽命令下選擇Pressed事件,并保存此文件,如圖8所示。
圖7 制作內嵌按鈕
圖8 設置內嵌按鈕的事件
5) 回到偵聽器新建的腳本窗口,完成pressed do括號中的語句。pressed do事件屬性表示當按了此按鈕就有事件發生,如圖9所示。
6) 程序說明,如圖10所示:
*“qkcaq”是實用程序名(name),可以自已定義;
* 雙引號即字符串表示標題(caption)即UI條目;
* (……)表示函數內容;
* for a to bdo循環語句,a開始到b終止,都做一次事情。a 和b可以是變量或常量。本程序的意思是將6賦值給變量i,i數到24就終止做事,24就是24個球。
* do 表示被選中的對象去做一件事情;
* meditMaterials[i]= Standardmaterial()表示修改第i個材質球獲取標準材質的動作;是剛才在偵聽器(listener)拷過來的腳本語句,稍作整理的動作,這樣做主要是省時間,并代碼準確。
* meditMaterials[i].name=i as string +“–Defanlt”給材質球重新命名動作,加上字符串“–Defanlt”,是為了把24個材質球區分開來,as stringl將整數變量i轉換為字符串類型,因同一種類型才能進行運算。
7) 在MAXScript卷展欄中按“運行腳本”命令,查找選擇剛才保存的ms文件并運行,此時在“工具”下可找到剛添加的“清空材質球”條目,如圖11所示,然后按一下“清空”按鈕,立刻可以看到從第6個材質球到第24個材質球全部重新定義了,如圖12所示。
8) 以后如果需要用此功能,運行一下“清空材質球”腳本文件,是件很輕松的事情。
4 結束語
以上是本人一些拙見,意為拋磚引玉,引起大家更深層次的思考和探究,同時也解決了一直困惑喜歡這項工作的專業人員的難點問題,并節約了大量的時間。本人的目標是以共同實現對三維建摸、動畫的精確控制,從而為我們找到一條全面提升3DS MAX專業水準的捷徑。
參考文獻:
[1] 黃心淵. 3DS MAX高級編程—使用腳本制作動畫[M].北京:清華大學出版社,2004.