學習筆記MAX SCRIPT 01

2022-09-04 05:51:13 字數 3410 閱讀 2137

關於max script的指令碼編輯一直想系統的學習一下,在網路上找到zihahage

的學習筆記,非常感謝,學習並記錄了自己的學習歷程

首先需要掌握的一些詞彙:

$ 的意思表示我們當前所選擇的物體

修改乙個圓的大小:$.radius = 6;

修改圓的相對大小:$.radius += 6;// 用 += , -= , *= 和 /= 來表示在當前值之上進行加減乘除

可以控制物件名的相關屬性

修改乙個名字為「sphere01」圓的大小:$sphere01.radius = 6;

注意:如果物體名稱中存在空格,要在名稱兩端加上單引號,例如 $'my box'

顯示物體下面的屬性名稱

show $  //檢視當前物體的屬性名稱

.height : float  //冒號左邊的單詞是屬性名,冒號右邊的詞指出該屬性所需的數值型別

常用數值型別的名稱含義

integer:整數

float:浮點數(即允許帶小數)

string:字串,數值外要帶有雙括

號,例如 "hello wo

rld"

boolean:真\假 值,也用來表示開啟和關閉

,可以使用 true,false,on,off

point2:二維座標,兩個數字之間用逗號分隔,

外加方括號,例如 [10,20]

point3:三維座標,三個數字之間用逗號分割,

外加方括號

,例如 [10,22,133]

color:顏色rgb數值,在圓括號以 co

lor開頭,加三組數值分別表示rgb值,以空格分隔,例如純白色為

(color 255 255 255)

查詢物體的次級屬性列表

show $.material

實戰應用舉例:

$box01.height = $box02.height  // 將box01的高度設定為與box02相同

$box01.height = $box01.length = $box01.width = 10 //把box01設定為邊長為10的正方體

$sphere01.radius = $box01.height/2 //將sphere01的半徑設定為box01高度的一半

$box*.height = 10 //把場景中所有名稱以box開頭的物體的高度值設定為10

$omni*.multiplier /= 2 //把名稱以omni開頭的所有燈光的亮度設定為原來的一半

$box*.material = $sphere01.material //把sphere01的材質賦予所有名稱以box開頭的物體

注意:

$spot*.on = false //

把名稱以spot開頭的燈光關閉(這個例子的指令碼不會正常執行,原因稍後詳細解釋,這裡只是為了使你了解maxscript可以自動操作這類任務)

移動

move $box01 [10,0,0]   // 將box01沿x軸向移動10個單位。注意這是乙個相對位移。

$box01.position = [10,0,0]  //box放在世界座標的10,0,0位置上

旋轉

rotate $box01 (eulerangles 90 90 0) //將物體沿x和y軸各旋轉90度。(注意這裡也是相對旋轉)

縮放

scale $box01 [.5,.5,.5]  //需要注意的是100%的縮放值是用1來表示的,因此假如做乙個50%的均勻縮放

座標系

現在物體的各種運動方式的做法我們都知道了,預設情況下它們都使用世界座標系。如果想要使用區域性座標、上層物體座標等其他座標系統,就需要在我們的運動命令前面冠以 in coordsys 某座標系,例如將前面第乙個移動物體的例子改為:

in coordsys local move $box01 [10,0,0]  //這樣就是把box01在區域性座標local上移動了10個單位了

在乙個for迴圈中,w

here 為我們提供

了乙個過濾開關,它可以

在迴圈執行中的

每一次操作之前對物體屬性是否「合格」進行判斷。如果判斷為「是」,則進行指定的

操作,否則就將

該物件忽略掉。

for i in selection where (false) do 

for i in selection where (true) do 

實戰舉例

for i in $box* where (i.height > 10) do i.height = 10

//找出名稱以box開頭並且高度大於10的所有物體,將其高度設定為10

for i in $box* where ((i.height > 9) and (i.height < 11)) do i.height = 10

//找出名稱以box開頭並且高度在9和11之間的物體,將它們的高度設定為10

for i in geometry where (i.material == undefined) do i.ishidden = false

//將所有未賦予材質的幾何體取消隱藏狀態

for i in shapes where (i.baseobject.renderable == ture) do i.name = "rs_" + i.name

//將所有可渲染樣條曲線的名稱前加上「rs_」字首(以便於按名稱選擇)

類別名

classof $box01 // maxscript返回值:box

與show的最大不同在於它是可以用於表示式中做真假判斷運算的:classof $box01 == box

實戰舉例

for i in geometry where (classof i == box) do i.height *=2 //將所有box類別的物體高度翻倍,無論它們的名字叫什麼。

注意:如果,我們的box被加上了乙個修改器,

比如bend彎曲,那麼:

classof $box01 

返回值就成了 editable_mesh而不是box了。因為預設情況下所查詢到的是物體當前的狀態,而不是它的原始類別(除非我們將修改器關閉)。如果需要忽略修改結果查詢物體的原始類別,這樣做:classof $box01.baseobject 此時(相當於查詢物體所具有的baseobject屬性)maxscript就會著眼於修改堆疊的最底端的物體狀態返回所需的值了。

學習筆記 01

在網上搜尋了一些資料,由於不知道哪些入門容易,所以先看看找到的資料,也對.net有個初步了解。將資料作了個整理 net framework 執行環境 visual studio net 開發工具 microsoft windows server 2003 企業伺服器 microsoft office...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...

php學習筆記 01

環境變數 argv 包含所有從命令 文字中傳遞給指令碼的引數.argc 包含從命令列傳遞給指令碼的引數的總數.php self 包含現在正在執行的指令碼名稱.但是,如果php是從命令列執行的,這個變數不可用。http get vars 包含一組用http get方法檢索到的並儲存在當前指令碼中的變數...