2011年1月23日 星期日

MAX Script 教學-2




本次教學的五個主要內容
  1. 變數與資料型態(Variables and data types)
  2. 迴圈(Loops)
  3. 比較運算式(Comparison Operators)
  4. 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

沒有留言:

張貼留言

LinkWithin

Related Posts Plugin for WordPress, Blogger...