Maxscript Editor(編輯器)
現在起將會使用Maxscript Editor來寫程式, 但是Maxscript Listener用來測試小程式仍很好用, 也可用來做程式執行後的檢驗或除錯.
Maxscript > New Maxscript 開啟新檔
建議開兩個資料夾, 一個用來放程式片段, 一個用來放完整的程式, 包含了界面與說明文件等.
上次完成了隨機擺放柵欄位置, 現在要亂數設定旋轉角度.
Rotations(選轉)
Rotation在3DSMAX裡面是有點麻煩, 要讓柵欄旋轉之前, 我們必須先建立一個旋轉物件, 然後再運用到柵欄上.
Max有三種旋轉方式可用, Euler angles, Quaternions 與 Angleaxis. 我們這裡將使用Euler angles(尤拉角度)
Euler angles 的使用方法如下:
rotObj = eulerangles x y z
在場景先建立一個方塊, 然後在listener中輸入:
cubeRotationObject = eulerangles 0 20 0
現在在記憶體中儲存了一個變數(旋轉物件): cubeRotationObject
現在要將旋轉物件cubeRotationObject 應用到場景中的物件, 選擇方塊之後在listener輸入
rotate $ cubeRotationObject
方塊y軸選轉了20度
知道怎麼做物體旋轉了, 我們回到Script編輯器來寫程式碼並套用到柵欄.
寫完後,按 Ctrl+E 或到 Tools->Evaluate All 來執行.
Comments(註解)
一旦程式碼多了, 為了不會忘記程式的作用或者要將程式交給其他人時, 有必要加入註解. "--"之後的文字都是註解.
Macroscripts
程式寫成Macroscript, 可以用快速鍵(Shortcut key), 按鈕(button)或者是選單(menu)的方式啟動.
Macroscript的模板:
MacroScript Script_Name category:"分類" buttonText:"按鈕或選單的名稱" tooltip:"提示" (
程式本體
)
例子:
MacroScript Random_Rotate category:"Rhys Tools" buttonText:"Random Rotate" tooltip:"Random Rotate" (
for obj in $ do -- Loop over currently selected objects (
randXrot = random -3.0 3.0 -- create a random X rotation value and store as a variable
randYrot = random -3.0 3.0 -- create a random Y rotation value and store as a variable
randZrot = random -3.0 3.0 -- create a random Z rotation value and store as a variable
rotObj = eulerangles randXrot randYrot randZrot -- Build our rotation object and store
rotate obj rotObj -- Apply the rotation to the current obj
)
)
寫完後儲存並按Ctrl+E, 但不會有任何反應, 只是Listener出現一個數字, 這是正常的.
打開Customize>Customize User Interface, 到Category中找Phy Tools(程式碼中名稱可改), 如下所示, 就可以用按鈕,快速鍵或選單方式啟用.
這個小程式執行時會有兩個缺點, 一個是沒有選取物時, 會發生錯誤; 另一個是不能改選轉度數範圍(-3 ~ 3), 下一章節將會介紹.
MAX Script 教學-3
MAX Script 教學-5
沒有留言:
張貼留言