觀察物體腳本
Ⅰ maya中的mel腳本是什麼意思
mel語言是maya自己的一套編程語言,mel是maya的基礎,是比較偏底層的東西。如果你稍有編程基礎的話,可以很容易掌握它。我們可以看到除了maya的插件(maya內部很多組件也都是以插件形式存在的)以外,所有的操作都可以在script editor窗口中有相應的mel語言與之對應。例如:創建一個常規的polygon球體,打開windows-->General Editors-->Script Editor,可以看到:polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -tx 2 -ch 1;;這句話的意思是創建一個polygon球體(polySphere),其半徑為1(-r 1),x、y軸向的分段皆為20(-sx 20 -sy 20),軸向為Y軸向上(-ax 0 1 0),顯示方式為有鋸齒貼圖(-tx 2),並帶有歷史紀錄(-ch 1)。參見help中的polySphere詞條。
最好的方法還是買書自己學,可以參考《Maya動畫師MEL腳本編程全攻略》(以前看過,很快就能上手)。
附上我以前學習的一些筆記,希望能給你一些幫助:
1.得到所有被選中對象的列表並存入數組:「string $sel[] = `ls -sl`;」
2.在表達式中可以直接用「=」給對象的屬性賦值或取值;而mel中則必須通過getAttr和setAttr來實現,這種方式效率比較低
3.「==」是判斷是否相等;「!=」不等於
4.定義變數:「float $rotation_value;」
5.為對象添加屬性:Window-->Attribute Editor;Attributes-->Add Attribute
6.在數學表達式中的向量:可以對向量中的單個分值賦值,如:$abc.x=3;但是不可以這樣賦值:$abc=<<$abc.x,1,1>>
7.向量運算(Maya中的點都是向量存儲,因此要定位的話向量比較重要):向量相減:代表向量從一個點移到另一個點所需行進的方向和距離,減數指向被減數
8.向量操作:unit(格式化)/unit($vectoer1);mag(長度)/mag($vectoer1);angle(夾角,弧度制,如果想獲得角度將它乘以180/pi,方向為逆時針)/angle($vector1l,$vector2);cross(叉積,與兩個向量正交,即垂直的第三個向量,其長度為:dot運算)/cross($vector1l,$vector2);dot(=mag($vector1)*mag($vector2)*cos(angle($vector1,$vector2)))/($vector1l,$vector2);rot(將一個向量繞著由另一個向量所定義的軸旋轉一定的角度)/rot($vector1,$vector_axis,$degrees)
9.檢測兩個向量平行或垂直:dot(unit($vector1),unit($vector2)),如果=0,那麼垂直;如果=1,那麼平行
10.在mel語言中,不能把屬性值賦給變數,必須用如下格式獲得:$val=`getAttr expression1.time`;
11.連接屬性:connectAttr 屬性1 屬性2
12.創建表達式:express -string "屬性1=值";;適用於mel中對屬性的賦值
13.變數:數組變數/$t={1,2,3};聲明變數/int $t;
14.全局變數:Maya要求在每一個使用全局變數的域中重新聲明該變數,如:
global int $a=1;
proc print_a(){
global int $a;
print($a);
}
print_a();
15.將一個整數轉換為一個浮點數:float(3);;將浮點數轉換為整數:int(3.7),結果為向下取整=3
16.算術比較運算:print(5>6);結果為:0或1
17.運算符:+,-,*,/,%,+=,-=,*=,/=,++,--,&&,||,!
18.取相鄰最大整數:ceil($f);取相鄰最小整數:floor($f)
19.在mel中的向量:不能直接將一個值賦給向量的一個分量,如:$abc.x=3;必須這樣賦值:$abc=<<$abc.x,1,1>>
20.分隔字元串:tokenize "string1" $myarray;得到的結果將是以空白符來拆分字元串,並存入數組中;又:tokenize "string1" "char" $myarray;將得到以char來拆分字元串,並存入數組中
21.數組中所有沒有被賦值的元素默認為0
22.數組的尺寸:size($myarray)
23.如果需要在腳本中使用一個非常的數組,在結束時使用mel中的clear命令清楚該數組:clear $myarray
24.模式選擇:-c標記或不適用標記將選擇創建模式;-q選擇查詢模式;-e選擇編輯模式
如:sphere -q -radius nurbsSphere1 返回半徑
sphere -e -radius 15 nurbsSphere1 修改半徑
25.當希望存儲命令的返回值時,可以在賦值運算的右邊將命令置入反引號(``)中。如:string $coneNodeNames[]=`cone -name testing2`
26.使用eval命令:string $spherecommand="sphere"; string $nodenames[]=eval($spherecommand);表示創建一個球體,將sphere命令的返回值存入$nodenames數組中
27.在腳本中有三種運行mel命令的方法:(一)如果不關心返回值,作為獨立一行的語句獨立運行;(二)如果想將返回值存入一個變數,將其放入反引號中;(三)如果想在字元串中構造命令並執行它,使用eval函數命令。
Ⅱ 怎樣編寫maya腳本
可以參看MAYA 的說明書
主要是使用參數來控制動畫
腳本名稱 描述
xbmLangPathList 返回XBMLANGPATH環境變數中的路徑。
xform 用來設置或查詢transformation節點中的任何元素。它也能被用來查詢一些不能被直接設置的數值,
如transformation矩陣或bounding box。它也能被用來把中心點設置成合適的值。"
waitCursor 設置Maya程序的圖標是否為等待圖標。
warning 讓用戶在他(她)的教本執行時顯示warning信息。
whatIs 查詢一個字元串在Maya中是一個「命令」,「Mel程序」,「教本」,還是一個變數,如果時變數則給出變數的類型。
window 創建一個不可見的窗口。
windowPref 創建、修改或查詢窗口的屬性,注意對main Maya窗口和Command窗口不起作用。
wire 創建一個曲線變形器。
wireContext 創建一個能被用來創建曲線變形器的工具。
workspace 創建,打開或編輯一個給定的workspace文件,如果沒有指定,則假定時當前的workspace。
wrinkle 用來創建一個曲面褶皺的網路,它自動創建一個用來控制一個曲線變形器的褶皺曲線,
而這個褶皺曲線則連接到一個cluster變形器上。
wrinkleContext 建立一個用來創建褶皺的連接。
writeTake 用來記錄從記錄數據的設備到一個mov文件的數量。
wtPaintCtx 用來在選定的nurbs曲面上繪畫簇的權重。
validateShelfName 用來檢測shelf tab的名字是否合法。
valuePaintCtx ?看不懂,小弟E文較差 x_x
verifyCmd 按照相應的值查詢一個命令中的每個標簽。
view2dToolCtx 居然沒有描述NND
viewCamera 把攝像機移到指定攝像機的邊上或頂上。
viewClipPlane 用來查詢或設置指定攝像機的剪切平面。
viewFit 讓選中攝像機顯示除了攝像機本身外的指定物體,就是F吧
viewHeadOn 讓指定攝像機按照法線觀察物體,並讓物體充滿屏幕。
viewLookAt 讓攝像機看向所有選中物體的中心
viewPlace 用來設定攝像機的一點參數:攝像機位置,攝像機瞄準點的位置,攝像機的方向,攝像機是否有透視,
視角以及向上軸。
viewSet 把選中攝像機設置到預定義的位置。
visor 創作或操作Visor窗口
volumeAxis 設置volumeAxis動力場
vortex 設置vortex動力場
uiOnDemandExample 這個腳本示範了「如何按照需要創建UI"來加快復雜視窗的初始化顯示時間
uiTemplate 這個命令創建一個新的命令模板對象,模版對象能保存多個UI命令的默認標記參數。
unassignInputDevice 刪除所有和指定設備(物體)有關的字元串命令
undo undo
undoInfo 控制undo的參數
ungroup 解組指定對象
uniform 設置uniform動力場
unit 返回一個歸一化矢量
unloadPlugin 解除指定plugin的調用
untangleUV 通過解開texture UVs來幫助創建不重疊的區域
untrim untrim指定表面
upAxis 改變世界的向上軸。(Y軸 or Z軸)
updateAE 顯示在屬性編輯器中指定節點的信息
userCtx 根據一系列指定的工具來創建自己的工具,就象宏一樣。
userPaintCtx 通過畫筆來執行mel
uvlink 用來設置、中斷、查詢物體的UV組和紋理之間的連接關系
uvSnapshot 創建選擇物體的uv快照
Ⅲ 怎樣編寫maya腳本
1,打開script editor:Windows->General editors->Script editor 或者,點擊右下角的圖標,如下圖:
Ⅳ 什麼是關鍵幀什麼是原畫
關鍵格(關鍵幀),英語:Key frame、Keyframe,是指在動畫和電影製作中繪制所有平滑變換中所必須定義的起點和終點,又稱作畫格、關鍵影格、關鍵幀,因其時間點符合影片畫格的原則。
關鍵格的序列定義了觀眾將會看到哪些動作,雖然在影片、視訊或動畫上的關鍵格位置限定了動作的時機掌握。由於每秒僅有二到三格的關鍵格並不能產生運動錯覺,其餘需要補滿的畫格就稱作「中間格」(inbetweens)。
使用關鍵幀作為改變參數的手段
在支持動畫,尤其是 3D 圖形的軟體包中,可以為任何一個對象更改許多參數。此類對象的一個實例是燈光(在 3D 圖形中,燈光的功能類似於真實世界的燈光。它們會產生照明、投射陰影並創建鏡面高光)。
燈光有許多參數,包括燈光強度、光束大小、燈光顏色和燈光投射的紋理。假設動畫師希望光束大小在預定義的時間段內從一個值平滑地更改為另一個值,這可以通過使用關鍵幀來實現。在動畫開始時,設置了光束大小值。為動畫結束設置另一個值。因此,軟體程序會自動插入這兩個值,從而創建平滑過渡。