鄭 雪,馬純永,齊永陽,韓 勇,陳 戈
(1.中國海洋大學信息科學與工程學院海洋技術系,山東青島266100;2.中國海洋大學海洋遙感教育部重點實驗室,山東青島266100)
基于3DS MAX Script語言的三維表面附著運動仿真
鄭 雪,馬純永,齊永陽,韓 勇,陳 戈
(1.中國海洋大學信息科學與工程學院海洋技術系,山東青島266100;2.中國海洋大學海洋遙感教育部重點實驗室,山東青島266100)
3DS MAX是當前三維動畫制作的主流平臺。以物體在山體表面運動為例,完成了附著山體運動的仿真。利用3DS MAX Script語言,獲取物體當前平面坐標對應的地形高程值,自動調節物體的高度,并實現了運動的實時性,克服了3DS MAX尚不存在碰撞檢測的不足,取代了人工手動調節,大大提高了動畫的制作效率。
GIS;3DS MAX Script;附著運動;實時渲染;仿真;動畫

近年來,三維動畫作為一種媒體得到了迅速發展,除了單純的三維影視,越來越多的行業提出了對三維動畫的需求,如:教育、宣傳、廣告、娛樂等。3D Studio MAX(簡稱3DS MAX)是AUTODESK公司出品的一個大型三維動畫制作軟件[1]。但是,在3DSMAX的交互環境中,無法建立批處理工具,開發人員也無法從一些簡單重復的工作中解脫出來。例如,難以建立一次可以渲染多個場景的文件;難以模擬有上千個球體的星系;難以生成逼真的群鳥飛翔的動畫;難以使物體按某個特定的數學曲線運動。MAX Script作為3DSMAX的輔助開發工具的出現,為開發者提供了很大的空間,一定程度上解決了以上問題[2]。
二十世紀后期,三維計算機圖像技術的出現,極大地拓展了動漫的空間表達能力。隨著人們對海洋的關注與研究,國內外對海洋的重視程度越來越高,海洋動漫也成為了藝術和技術上研究與開發的新熱點。《小海龜漫游海底世界》是基于青島信息產業專項資金項目“交互式三維海洋動漫軟件系統的研發與應用”而制作的全新高清三維動漫片。該劇主要采用3DSMAX創建角色模型,講述了一只善良的小海龜在尋親途中,經歷了一系列的海底探險。制作過程中,有的場景需要小海龜翻山越嶺,制作動畫時,需要小海龜在移動過程中貼著山體,否則將脫離地面,造成不真實的感覺。如果單用3DSMAX建模實現,需要手動將海龜的移動路徑調整,以保證海龜既不陷入地下,又不在空中漂浮,工作重復且工作量巨大。針對該問題,本文利用MAX Script語言獲取海龜當前平面坐標對應的地形高程值[3],并自動調節海龜的高度,實現海龜在移動過程中附著在山體的表面,大大提高了動畫的制作效率。
MAX Script是3DS MAX的內置腳本語言,它為用戶提供了以下功能[4]:
1)腳本化3DSMAX各方面用途,如建模、動畫、材質、渲染等。
2)通過命令行shell窗口交互控制3DS MAX。
3)軟件包將在自定義工具面板菜單欄或無模式窗口中腳本化,從而為它們提供標準3DSMAX用戶界面。
4)使用內置文件I/O構建自定義導入/導出工具。
5)編寫可以訪問整個場景狀態的程序控制器,構建批處理工具,如批處理渲染腳本。
6)使用OLE自動化設置與外部系統的實時連接。
MAX Script語言是專為補充3DS MAX精心設計的,它是面向對象的,并且擁有特殊的功能和構造,反映了3DSMAX用戶界面中的高級概念。MAX Script語言編輯器直接嵌入在3DSMAX中,在3DSMAX的菜單欄中包含“MAX Script”選項,運行其下拉菜單中的“新建腳本”,即可彈出MAX Script語言編輯窗口。在編輯窗口中輸入程序代碼,按“Ctrl+E”鍵運行程序。還可以利用MAX Script語言編輯器中的MAX Script偵聽器來編輯運行程序。
2.1 系統關鍵技術
1)系統界面的創建。本系統以物體附著在類似山體的表面上運動為例,因此,系統一級界面有“附著運動”、“山體參數調節”和“運動軌跡調節”3個卷欄,點擊會進入下一級界面,其中“運動軌跡調節”是本系統的核心。創建用戶界面是為了實時控制物體的運動狀態及軌跡。在創建用戶界面時,首先應明確物體附著在山體表面上運動時,可以改變的參數有哪些,包括山體長寬,表面曲率運動軌跡等。其次,考慮應設計卷欄中各參數的修改范圍和表現形式,如label(標簽),spinner(微調器),button(按鈕)等。
2)運動場景中模型、運動軌跡的創建及參數調節。我們需要編寫一段代碼自動生成運動附著的表面和運動軌跡。本系統我們以山體表面為例,進入“附著運動”的子菜單,“創建山體表面”和“創建運動軌跡”便可實現此創建功能。而“山體參數調節”卷欄可以實現山體長、寬和曲率的調節。
3)運動的實時性。物體在山體表面的附著運動方程由于不能求得解析解,故很難利用3DSMAX中的控制動畫器,利用表達式動畫難以實現,但是考慮到實時運算會影響系統速度,故而最終決定采用關鍵幀動畫。本系統通過animateon函數打開動畫設置,通過一個循環定義關鍵幀,然后通過函數attime為每一幀賦值。
2.2 系統功能介紹
本系統的一級界面有“附著運動”、“山體參數調節”和“運動軌跡調節”3個卷欄。 “附著運動”卷欄下有“創建山體表面”、“創建運動軌跡”和“渲染效果預覽”按鈕,由此可以實現運動場景中山體模型、運動軌跡的創建和創建后效果的預覽,考慮到直接渲染大尺寸位圖速度較慢,故建立了一個130×130的預覽窗口并且尺寸可以隨時調整,點擊“渲染效果預覽”按鈕,則按照設定尺寸渲染一幅小圖片,以便觀察最終效果。
“山體參數調節”卷欄有3個控制器,分別控制著山體表面長、寬、曲率的調節。在本組卷欄中,設定了山體表面長、寬兩個數值輸入框,其默認值為:長:100;寬:100;曲率:16,點擊按鈕上兩個箭頭時可以使數值增加或降低。
“運動軌跡調節”卷欄是本系統的核心,通過它可以實現物體運動軌跡的任意性。最后,通過使用關鍵幀動畫實現其運動的實時性,該按鈕調用3DSMAX渲染器,可根據需要渲染成不同尺寸大小的單幀圖片或動畫文件,也可生成體視動畫。
3.1 系統設計思路分析
本系統的設計思路是,首先通過調用rollout等函數來創建系統各級界面,其次,創建好山體表面和運動軌跡后,使用patch_deform_binding和normalize命令對山體的形態參數進行設置,再調用 spline_ik_control等函數對山體表面和運動軌跡進行調節,然后使用patch_deform_binding命令將運動軌跡綁定到山體表面上,最后,創建運動物體,設置附著運動動畫。設置好后,點擊“播放動畫”按鈕可觀看運動過程。系統設計流程圖如圖1所示。
3.2 MAX Script腳本代碼編寫
使用MAX Script語言開發文件管理程序包括編寫源文件、源文件編譯與源文件運行 [5]:
1)源文件編寫點擊New Script按鈕,出現MAX Script文本窗口,輸入源程序;
2)源文件編譯;
3)源文件運行:保存編譯后的源程序,點擊Run Script按扭,運行程序。
3.2.1 創建運動軌跡

圖1 系統設計流程圖
步驟1定義自定義函數,判斷鼠標在視圖中拖拽過程中停頓點的坐標,并在該坐標添加一個點加入軌跡曲線。
步驟2在鼠標第一次點擊左鍵的坐標處,生成軌跡曲線的起點,然后調用步驟1中自定義的函數,生成完整的軌跡曲線。
1)定義get_mouse_pos函數,函數包含2個位置參數,old_pen_pos和pen_pos,分別代表前一點的坐標和鼠標當前點的坐標。
2)判斷全局參數second_knot_set的狀態,來添加或者改變軌跡曲線上的點。second_knot_set代表的意義為當前點是否為軌跡曲線的第二個點,因為生成軌跡曲線時,并不知道軌跡曲線的第二點坐標,但生成的曲線須包含 2個點以上,故在生成曲線時默認將曲線第2個點與曲線第1個點重合,當鼠標拖拽后,則根據全局參數 second_knot_set的狀態決定是將鼠標拖拽的新點坐標賦給曲線的第2個點,還是在該坐標上給軌跡曲線添加新點。
3)定義draw_new_line函數,這個函數的作用就是設置一個鼠標移動Callback程序來跟蹤鼠標移動。該Callback程序就是通過get_mouse_pos函數的參數來跟蹤鼠標的移動。


3.2.2 添加實時渲染命令的程序
整個動畫時間為100幀,下面這段程序就是利用自動滑動時間滑塊,并在每一幀渲染動畫,然后將渲染的bitmap輸出到rollout的bitmap插件框中,從而達到實時渲染的目的。

打開3DS MAX軟件,在MAXScript菜單欄里選擇Run Script,找到程序所在的文件夾,運行本程序。點擊3DS MAX中的“Run Script”按鈕后,將出現本程序生成的系統界面。系統一級界面有“附著運動”、“山體參數調節”和“運動軌跡調節”3個卷欄,點擊會進入下一級界面,如圖2所示。
運行界面上的“創建山體表面”按鈕,自動生成圖 3中上面的山體,然后,拖動“山體參數調節”卷欄中的“山體表面曲率”的滑塊,可以將所生成山體表面的曲率進行任意調節。圖 3中下面的圖即為將生成的山體表面曲率調高后的效果。
在對山體表面進行完一系列調節后,我們可以通過點擊“運動軌跡調節”卷欄下的“軌跡調節”按鈕,然后按住左鍵拖曳鼠標創建任意的運動軌跡。軌跡創建完成后,通過點擊“綁定曲面”按鈕并手動拾取需要綁定的曲面即可將剛才創建的運動軌跡綁定到曲面上。然后,點擊“設置動畫”按鈕自動生成運動物體,并且將此物體的運動軌跡設置為我們剛才創建的運動軌跡。最后,點擊“播放動畫”按鈕即可看到我們所設置的運動動畫。運動截圖如圖4所示。

圖2 系統界面效果圖

圖3 山體曲率調節效果圖

圖4 附著運動動畫效果圖
3DSMAX強大的建模功能眾所周知,但關于MAX Script應用的介紹則相對很少。應用MAX Script編程來實現動畫控制的功能,而不是采用通常使用的動畫編輯器來控制動畫,將復雜的運動用簡單明了的動畫顯示,不僅物理概念明晰,而且具有直觀、易于理解的特點。
本文通過調用rollout等函數創建自定義界面,通過MAX Script編程添加normalize命令和animateon函數等,實現了對虛擬山體參數的調節和三維物體附著山體表面運動動畫設置。在功能上,實現了物體附著在虛擬山體表面的實時運動。同時,本文的研究結果在三維數字動漫劇《小海龜漫游海底世界》中得到了很大應用,實現了小海龜翻山越嶺的場景,極大地提高了工作效率。在本系統后續的開發中,將進一步提高運動物體的仿真效果,添加多面片的碰撞檢測及附著功能,使其在動畫制作中獲得更好的表現效果,得到更廣泛的應用。
[1] Tamg Y S,Tsai H L,Yeh S S.Modeling,optim ization and classification of weld quality in tungsten inert gas welding[J].International Journal Machine Tools&Manufacture,1999(39):1 427-1 438
[2] Barnsley M F,Demko S.Rational approximations of fractals[J]. Lecture Notes in Math,1984(1105):73-88
[3] 王琦.電腦動畫工作室.3DSMAX5白金手冊[M].北京:北京科海電子出版社,2002
[4] 黃心淵.3DSMAX高級編程—使用腳本制作動畫[M].北京:清華大學出版社,2004
[5] 王華.3DS MAXScript腳本語言完全學習手冊[M].北京:兵器工業出版社,2006
Adherent M ovement Simulation on 3D Surface Based on 3DSMAX Script Language
ZHENG Xue,MA Chunyong,QI Yongyang,HAN Yong,CHEN Ge
(1.Depart me nt of Ma rineTe c hnology,College of Infor ma tion Science & Engi neering,Ocean Unive rsity of China,Qing dao 266100,China;2.Ocean Remo te Sen sing Insti tute,Ocean Uni versity of China,Qing dao 266100,China)
3DS MAX is now the mainstream platform of three-dimensional animation.This paper completed the adherentmovement simulation using an instance of object's movementon surfaceof mountains.Using 3DS MAX Script language,it obtained the corresponding terrain height valueof object's currentplane coordinate,adjusted the object's heightautomatically,realized the real-time romanceof themovement,overcome thedeficiency of collision detection of 3DS MAX,replaced the h and -manual regulations, and greatly increased the efficiency of animations.
GIS;3DS MAX Script;adherent movement;real-time romance;simulation;animation
2009-10-20
項目來源:青島市信息產業專項資金資助項目(C-2007-001)。
P208
B
1672-4623(2010)02-0106-04
鄭雪,碩士,研究方向為數字動漫、虛擬現實。