首頁 > 文章中心 > 正文

          3ds ma中腳本語言

          前言:本站為你精心整理了3ds ma中腳本語言范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

          摘要:本文主要介紹了3dsmax中的腳本語言MAXScript的主要功能,并簡單介紹了腳本語言的編制及其應用技巧。

          關鍵詞:腳本語言、MAXScript、函數表達式

          所謂腳本語言,即在應用程序中由用戶根據由應用程序以供的命令集,自己編寫的程序段,用來簡化程序的操作過程或對應用程序進行擴展。像許多應用程序一樣,3DSMax也有自己專門設計的腳本語言MAXScript,它是像3DStudioMAX一樣面向對象的,有許多對于MAX用戶界面中特征和結構,帶動畫關鍵幀的動畫模式,并通過層次改變場景對象對應于MAX的對象層次。是可以調用大部分c++函數的,和MAYA的MEL語言也有很多的相通之處。對于三維軟件的高級用戶來說,掌握了較全面的技術后發現現有的軟件已無法全力表現出她們的思想,他們需要一種可以隨時擴展軟件工作能力的工具,可以自己開發程序外掛來幫助工作已經是必需的要求了。MAXScript程序給用戶提供了更多的想象空間,也是高級用戶的必修課。

          MAXScript是3dsmax中的插入腳本語言,它為用戶提供了以下功能:

          ·描述3DStudioMAX的全部用途,如造型、動畫、材質、渲染等;

          ·將腳本集成在用戶應用面板卷展欄工作界面上,給腳本一個標準的MAX用戶接口;

          ·使用插入的文件的I/O,建立用戶輸入/輸出工具;

          ·寫入可以訪問全部場景狀態的過程控制器;

          ·建立批處理工具,例如批處理渲染腳本;

          ·通過OLEAutomation,與外部系統建立活動接口。

          表達式控制器和MAXScript的基本結構和VB類似,但由于3DSMax是圖形程序,所以在MAXScript中有許多繪制圖形的命令,這些命令類似于AUTOCAD中的LISP文件命令。這樣的命令不需要編輯,可直接在程序中運行,并可直接看到運行結果。

          在3dsmax的MAXScript這個菜單中有一個記錄宏(MacroRecorder),選中這一項,在以后繪制圖形時,每一步的操作都會自動轉化成腳本語言,打開同一菜單下的腳本記錄(MAXScriptListener),可以看到每一步操作的命令形式,通過這種方法可以初步了解MAXScript的基本格式,也可以通過復制命令簡化編程步驟。下面以一個簡單的實例加以說明。

          1、打開記錄宏命令,打開腳本記錄。

          2、在任意窗口劃一直線和一個球體。

          3、為球體制定位置控制器為路徑,選擇直線作為運動路徑。

          4、打開動畫記錄按鈕,將時間調到100幀。

          5、將球體在路徑中位置調到50(%AlongPath),關閉動畫記錄按鈕。

          下面是相應的腳本語言:

          1.linetransform:(matrix3[1,0,0][0,0,1][0,-1,0][4.42805,-1.45167e-007,3.32103])isSelected:on

          Sphereradius:13.0567smooth:onsegs:32chop:0slice:offsliceFrom:0sliceTo:0transform:(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.maxtoolanimmode

          setanimateon

          sliderTime=100f

          select$Sphere01

          4.$.pos.controller.percent=50

          maxtoolanimmode

          setanimateoff

          現欲使球體前50幀運動1/4路程,后50幀運動3/4路程。則根據上面記錄編寫程序如下(其中繪制過程省略):

          maxtoolanimmode

          setanimateon’開啟動畫記錄

          fort=1to100by1doattimet’設置動畫范圍從1到100

          (

          $Sphere01.pos.controller=path()’指定路徑控制器

          $Sphere01.pos.controller.path=$line01’選擇路徑

          ift<50then’當在50幀以內時

          (

          $Sphere01.pos.controller.percent=t/2’路程為0到25%

          )

          ift>=50then’當在50幀以后時

          (

          $Sphere01.pos.controller.percent=t*75/50-50’路程為25%到100%

          )

          )

          maxtoolanimmode

          setanimateoff’關閉動畫記錄

          這樣就完成了一個簡單的腳本語言的編制。可見通過這種方法編制腳本語言是一種簡便快捷的好方法。另外腳本語言中還有很多函數,可通過相關資料查詢其用法,這里就不再贅述了。

          下面講一點MAXScript在應用方面的技巧:

          1、用MAXScript控制布爾運算

          先生成一子彈狀物體起名bullet,再生成一與其等直徑圓柱和一個立方體,調整子彈頭部指向x軸負向,其軸心在子彈x軸最小值處,立方體和圓柱體軸心在x最大值處,對齊立方體和圓柱體軸心,(注意在使用MAXScript時軸心的位置非常重要),關聯復制立方體和圓柱體,復制后的物體分別起名為box、bar(圓柱體),將復制后的物體移開便于觀察,對原物體進行布爾運算,這是通過對復制后的物體進行控制即可控制布爾物體。下面的程序通過控制圓柱體的高度來控制子彈在立方體上打孔的深度。(在此為簡化程序未考慮加減速問題,有興趣的讀者可加以補充)

          animateon

          fort=1to100by1doattimet

          (

          $bullet.pos.x=3000-10*t’子彈勻速向x軸負向運動

          if$bullet.pos.x-$box.pos.x>=0then

          (

          $bar.height=0’當子彈未接觸到立方體時洞深為0

          )

          if$bullet.pos.x-$box.pos.x<0then

          (

          $bar.height=$box.pos.x-$bullet.pos.x’當子彈未接觸到立方體時洞深為子彈頭距立方體右邊的距離

          if$bar.height>250then’圓柱體高度即洞深不超過立方體厚度

          (

          $bar.height=250

          )

          )

          )

          animateoff

          2、MAXScript對燈光的控制

          通過對燈光的三種顏色分別控制可以模仿霓虹燈的效果,當然通過開關控制器就可以較簡單的控制燈光,但那樣的控制方式比較單調,無法形成霓虹變幻莫測的效果,用MAXScript控制燈光產生的效果幾乎可以亂真,這里只提供一種思考不做詳細介紹,希望廣大愛好者們開動腦筋,發揮想象創造出完美的場景。

          3、MAXScript對模型的變形控制

          物體的變形動畫是動畫的一種重要的形式,用MAXScript控制模型Modify面板中的各種變形修改命令,可以產生多種真實的效果,如飛翔、搖擺、扇動、磨光等。

          利用腳本可以幫助大家更好的控制場景元素,生成意想不到的效果。到了這里我想大家一定對MAXScript有了簡單的了解,但作為一種腳本語言它還有很大的潛力等著我們去開發,希望MAXScript能成為你的一種超強的輔助工具,使你在三維領域展翅翱翔。