李 瑩,王 哲
(1.陜西工業職業技術學院信息工程學院,陜西 咸陽,712000;2.陜西工業職業技術學院,陜西 咸陽,712000)
三維動畫是當前動畫藝術領域中的熱點,3DS Max 軟件的開發降低了CG 制作的門檻,為三維動畫的制作提供了便捷的實現途徑。建筑動畫制作是三維動畫制作中一個重要的組成部分。但是由于建筑動畫場景制作十分復雜,3DS Max 中一些關鍵的技術較難掌握,同時這一軟件在場景漫游實現、繪制速度等方面也存在著一些的不足之處,因此,分析基于3DS Max的建筑動畫制作的關鍵技術,提高建筑動畫制作的效率十分必要。
MAXScript 是3DS Max 內置的腳本語言,在3DS Max2.0版本及以后版本中均有此項功能,它是專門為3DS Max 而設計的,主要是提供3DS Max 的大多數功能的調用及功能重寫,采用的是開放式的界面來自定義和編寫3DS Max 腳本,用戶利用其可以輕松地擴展用戶界面,通過自動化操作實現批處理,是編程語言中較自由的一種腳本開發操作環境,功能十分強大。同時它還為用戶提供建模、材質、燈光、渲染、動畫等一些常用功能,在建筑動畫場景設計制作中,這一功能有著顯著的現實意義。
在利用3DS Max 進行建筑動畫設計制作時多數用戶采用的是軟件的人工交互操作技術,目前該軟件的這一功能已十分強大,但由于其腳本程序語言設計層次較深,技術難以掌握,加之建筑動畫場景設計制作復雜,一個場景中可能有上百棟的建筑和大量的樹木等其他周邊物體,這時手工交互操作就出現了工具功能不夠的問題,如果仍采用手工方式,建造好后一樣擺放數量眾多的建筑物、周邊物體等就需要花費大量的時間,影響動畫制作的效率。MAXScript 可執行的批處理能很好地解決這一問題,而同時MAXScript 還可以用于Autodesk VIZ、Plasma 等其他與3DS Max 相關的建模、動畫、渲染等軟件編寫中,利用其進行二次開發,將其他的相關軟件的優秀功能集成于3DS Max 中,提高建筑動畫場景設計制作的速度和效率。
在建筑動畫的設計和制作中,最基礎的部分為三維模型的制作,三維建模中存在著類型一致的對象,即是同類對象,利用3DS Max 創建同類對象有利用創建工具創建一個對象,對對象進行復制、變形復制,利用間隔復制工具、粒子發射器等多種方法,這些方法均可實現同類對象的創建,但存在著一定的不足,而利用MAXScript 腳本語言的程序設計能對其功能進行延伸和擴展,如在“建筑房屋生成器中”可以將當前所選物體定為中心,通過編寫程序定義樓的高度、中心與原來的正負位置疊加、定義樓體高度和屋檐高度,然后在程序中定義For i=1 to 20 do,來實現多個同類對象的生成,執行操作后,在創建的一個Dummy 物體周圍就會生成20個形狀、高度不同的小房子。
建筑動畫場景制作中為了增強動畫逼真效果,增強動畫的表現力還須對燈光、材質貼圖等進行調整,通過不斷地渲染查看效果,不斷地調整燈光、材質貼圖等,如當前場景的燈光較暗,就對其進行整體加亮,改變燈光的顏色、角度等來使建筑動畫更貼近實際場景,從而使動畫更為逼真。
在對對象屬性進行修改時,一般是在Exclude 或Include中對需要修改的物體進行選擇,此種方法不僅速度較慢,還需要記住每個物體的名字,十分麻煩,而利用MAXScript 則可以方便地進行批處理,如需要對燈光調亮時,可以在場景中選擇幾個燈光,運行相應的script 即可完成,例如需將場景中原本的燈光調亮3 倍,則可以運行以下的script:

在動畫設計中,對象位置、大小、顏色等的變化是通過軟件中關鍵幀的形式來記錄和實現的,應用MAXScript 也可以設置動畫效果,如通過運行:
For i $sphere* do
--選擇場景中名稱以sphere 開頭的所有物體
(For j in 1 to 3 do
--為所有名稱以sphere 開頭的物體設置3個關鍵幀
(at time ((j 20)+random -10 10) i.position=(random 7 50)
--在第20、40、60 幀設置關鍵幀,并且在關鍵幀時在Z 軸上移動7-50 之間的隨機值
at time ((j* 20)+random -10 10)rotate I(eulerangles (random -3 3) (random -3 3) (random-20 20)
--在第20、40、60 幀設置關鍵幀,并在關鍵幀時以X軸為軸心旋轉最多3 度,以Y 軸為軸心旋轉最多3 度,以Z 軸為軸心旋轉最多20 度)
即可實現場景中所有名稱以sphere 開頭的對象的動畫效果。
MAXScript 的菜單的Macro Recorder 能夠在繪制圖形時,將每一步操作自動轉化為腳本語言,打開統一菜單下的MAXScript Listener 即可對每一步的命令形式進行查看,利用其能夠簡化編程步驟,從而更好地提高建筑動畫制作效率。以一個球體的運行為例,通過調用簡單動作的腳本命令,即可實現復雜動畫的編寫,其部分的腳本語言如下:
1.line transform:(matrix3[1,0,0][0,0,1][0,-1,0][442850,-1.45167e-007,3.32103])isSelected:on Sphere radius:13.0567 smooth:on segs:32 chop:0 slice:off sliceFrom:0 slice To:0 transform:(matrix3[1,0,0][0,0,1][0,-1,0][86.7159,-3.25819e-006,74.5387]) isSelected:on--在任意窗口劃一直線和一個球體。
2.select $ Sphere01
$.pos.controller=path ()
$.pos.controller.path=$ Line01
--為球體制定位置控制器為路徑,選擇直線作為運動路徑。
3.max tool animmode
set animate on
sliderTime=150f
select $Sphere01
--打開動畫記錄按鈕,將時間調到150 幀。
4.$.pos.controller.percent=80
max tool animmode
set animate off
--將球體在路徑中位置調到80(%Along Path),關閉動畫記錄按鈕。
3DS Max 等軟件的開發為三維動畫的制作提供了十分便捷的途徑,極大地推動了動畫的發展,運用MAXScript 進行三維動畫中建筑動畫場景的設計能夠方便地實現建筑動畫制作中多個同類對象的模型創建、多對象屬性的修改及場景動畫效果的設置等,改變了傳統動畫創作手工制作的方式,極大地提高了動畫的質量和制作效率。
[1]陸麗芳.基于3DS Max 的小區模型制作方法[J].計算機時代,2007,(11).
[2]杜潔,張磊.基于3DS Max 的節能建筑動畫研究[J].建筑節能,2012,(12).
[3]陜晉軍.MAXScript 在建筑虛擬場景設計中的應用[J].電腦編程技巧與維護,2010,(22).