2011年2月4日 星期五

MAX Script 教學-3

     這次教學將會介紹random(亂數)函式, 物件位移及一些迴圈.



    假設一個情況. 我們要在一個區域建立一個柵欄. 我們建立了20個box當作柵欄, 但是看起來都一樣, 這時可以用MAXScript來做一些變化


亂數函式 random

    打開listener,輸入 random 1.0 35.0



    將會產生一個數值介於浮點數 1.0 ~ 35.0 之間.

    若要求得一個整數值介於 1 ~ 6 ,  輸入 diceThrow = random 1 6

diceThrow是自訂變數, dice(骰子)值是1~6

    現在我們可以取用diceThrow.

    用手動在座標地面上建立20個box, 若用複製記得選Copy方式, 長寬為10x10, 高度為100, 間距150單位. 然後選取所有box


for obj in $ do ( -- obj變數依序儲存所選物件$
    randHeight = random 90.0 110.0 -- 變數randHeight值介於90.0~110.0之間
    obj.height = randHeight -- 值設定給物件的高度(height)
)


Position(位置)

建立一顆球,並選取球.

可以用 .position 或 .pos來存取.
如果你輸入  $.pos  會輸出 Point 3 (3維陣列)的資料型態, 包含了X,Y,Z值.

如果指定一個變數

ourPoint3variable = [5,4,1]

然後再輸入

ourPoint3variable.y

會輸出 4 , 是Point3 資料型態中的y值.


3D物件位置通常需要xyz, 當作其中的值, 這是非常有用的資料型態


Moving Objects(移動物件)

現在設定物件的位置,輸入

$.pos = [0,0,0]

將球移到世界座標原點, 但是要如何才能做相對位置的移動呢? 可以這樣輸入.

move $ [3,2,0]

這是移動所選物件球 $ 的相對距離 [3,2,0]
移動完後,輸入

$.pos

可以看到現在位置是[6,4,0]


Randomizing Position (亂數調整位置)

選取所有物件, 輸入程式碼後, 圈選程式碼, 按下小Enter執行.

for obj in $ do (
randX = random -5.0 5.0 -- randX變數儲存-5~5的值
randY = random -5.0 5.0 -- randY變數儲存-5~5的值
move obj [randX,randY,0] --亂數位移obj
)


結論

    現在柵欄的高度與位置有一些變化了, 接下來會做方向的亂數調整.



MAX Script 教學-2
MAX Script 教學-4

沒有留言:

張貼留言

LinkWithin

Related Posts Plugin for WordPress, Blogger...