本次教學的五個主要內容
- 變數與資料型態(Variables and data types)
- 迴圈(Loops)
- 比較運算式(Comparison Operators)
- if敘述(If statements)
想像MXS(MAXScript)的變數是一個可存放資料的暫時空間, 名稱也是暫時的. 再試想一個游泳池邊的未設編號(名稱)的置物櫃(假設是無限多), 當您放進一個資料進去, 資料可以是數字,字串,物件或是修改器. 之後再給變數命名, 若沒刪除, 資料會一直存在.
變數命名方法:
變數名(variableName) = 變數值(variableValue)
例如:
ourVariable = 34.5
如果再輸入
2 * ourVariable
得到69
如果MAXScript Listener輸入的文字太多, 按Ctrl+D清理畫面
有幾個資料型態
- Float(浮點數) - 有小數點的十進位值, 如234.643
- Integer(整數) - 無小數點的十進位值, 如5或200
- Boolean(布林) - true或false
- String(字串) - 雙引號包住的文字, 如 myString = "Maxscript sure is handy"
不同資料型態間可轉換:
"35" as integer
"35"是字串, as integer 將字串轉為整數. 所以得到 35
將35轉為字串"35"
35 as string
as float 則是轉為浮點數.
Loops(迴圈)
使用迴圈來做重複性質的工作.
想像場景中有很多物件, 每一個都必須加上Turbosmooth, 可以選擇所有物件後, 在修改器面板再加入TurboSmooth, 但是這種方法是讓所有物件共用一個TurboSmooth.
若想讓每個物件擁有自己獨立的TurboSmooth, 只得一個一個加, 速度很慢, 可用下方script迴圈來執行.
編輯多行程式碼時, 在空白行按Enter建立編碼空間.
for obj in $ do ( --對於(for)每一個在(in)選取物($)中的物件,以obj命名, 執行(do)括弧中的動作.
addModifier obj (TurboSmooth()) --加上TurboSmooth修改器到obj
)
"--" 後面文字是註解.
若要將iteration值設定為2. 一個一個加很辛苦, 用迴圈很方便又快速!
for obj in $ do (
obj.modifiers[#turbosmooth].iterations = 1
-- 設定modifiers(修改器)陣列中的turbosmmoth的iterations值為1
obj.modifiers[#turbosmooth].useRenderIterations = true
obj.modifiers[#turbosmooth].renderIterations = 2
-- render時的iterations值為2
)
Comparison operators(比較運算式)
例如有兩個值5與2 , 在listener中做比較
5 == 2 -- 5等於2嗎, 答案當然錯, false!
5 != 2 -- 5不等於2是對的, true!
5 < 2 -- 5小於2嗎? 答案當然錯, false!
5 > 2 -- 5大於2是對的, true!
if敘述
如下
if(比較運算式) do (
執行命令...
)
舉個例子
for obj in $ do (
if (obj.modifiers[#turbosmooth] != undefined) do (
-- 如果turbosmooth不等於undefined(未定義), 表示已定義,就是存在
-- 比較後為true執行以下指令
obj.modifiers[#turbosmooth].iterations = 1
obj.modifiers[#turbosmooth].useRenderIterations = true
obj.modifiers[#turbosmooth].renderIterations = 2
)
)
所以這些程式碼可用於所選擇的物件中,有加上turbosmooth修改器的物件.
MAX Script 教學-1
MAX Script 教學-3
沒有留言:
張貼留言