2009年5月24日 星期日

快速 設定 Mental Ray Wireframe Render




建模師的作品集裡頭通常都會有所謂的 wireframe render,用來突顯該建模師的佈線控制能力. Maya 的 Mental Ray 有一個叫做 contour shader 功能可以用來 render 出 wireframe, 可是操作上對於不常用Mental Ray 的使用者來說可能不太直覺.

在這我介紹一個非商業免費使用的 Maya plugin 叫做 MultiTool, 裡面其中一個功能可以讓你輕鬆的把 Mental Ray Contour Shader 設定好,並且可以 render出 不錯的 wireframe render.

以下是 MultiTool 的 安裝與使用方法(針對 assign contour shader 功能):

  • 安裝完畢之後打開Maya,然後在 Windows->Settings/Preferences->Plug-in Manager 裡把 MultiTool 打勾.

  • 在Maya Menu Bar 上將會出現 Ticket 這個 Menu.
  • 點選你要render wireframe 的模型,然後執行 Ticket->MultiTool->Assign Contour Shader.
  • 按下 render. 別忘了把 render 軟體設成 mental ray. 你會發現除了該有的 render結果之外還會加上 polygon 的佈線. 不錯吧!

2009年5月22日 星期五

如何在mel 程式裡加上確認視窗


為了避免使用者不小心按到一個可能會執行超久的程式,或者是會把檔案用壞的程式,通常在程式一開始會加上確認視窗.



你可以把以下這段程式加在 function 的一開始. 加完之後每次執行這個 function 時候都會先出現確認視窗.雖然有時候看到這種視窗會覺得有點煩,可是為了安全考量還是建議加一下,除非你的程式是執行得又快又保證可以undo回來的那種.

string $confirmString = `confirmDialog -title "Confirm" -message "are you sure?"
-button "Yes" -button "No" -defaultButton "No"
-cancelButton "No" -dismissString "No"` ;

if( $confirmString == "No" )
return;


範例:
global proc selectAll()
{
string $confirmString = `confirmDialog -title "Confirm" -message "are you sure?"
-button "Yes" -button "No" -defaultButton "No"
-cancelButton "No" -dismissString "No"` ;

if( $confirmString == "No" )
return;


select (`ls`);
};

2009年5月21日 星期四

Maya 自動備份檔案工具




Maya 當機其實並不是一個少見的現象. 那有一位3dmax 使用者(阿祥)投訴說他在 max 為了避免當機而損失幾小時的勞力與創作,他都會打開自動存檔功能,可惜的是 Maya 內建並沒有類似的功能,於是我就幫他寫了一個可以自動備份檔案的工具 . 這工具我把它稱為 Rain Auto Backup Tool. 以下是如何安裝與使用這工具的解說.

下載點 : 請按這 (更新 2009-06-08)

安裝 :
  • 把 rainAutoBackupSetup.mel 與及 rainAutoBackup.mel 放到 maya script 目錄底下.
  • 打開 Maya, 然後執行 rainAutoBackupSetup .
  • 會有一個新按鈕 出現在你目前看到的 shelf 上. 這表示安裝成功.

使用 :
  • 首先如果在你的Maya script 目錄裡沒有 userSetup.mel 檔,建議你建立一個(就算是 空的也可以). userSetup.mel 這個檔案是用來儲存一些 指令或參數.Maya開起來的時候會去執行這個檔,所以如果你有一些自訂的指令或參數想在Maya開起來時就存在的話,就可以先寫到這個檔案裡面. RainAutoBackup 這工具也會把兩個會把用到的參數存在userSetup.mel裡.
  • 按下
  • current backup status : 顯示目前程式狀態是 on 還是 off.
  • 介面裡目前有兩個設定可以改. 一個就是 備份檔目錄,另一個是要每隔幾分鐘存一次.
  • 打開自動備份功能請按 turn on auto backup.
  • 停止自動備份功能請按 turn off auto backup.
  • 把 之前存過的自動備份檔殺掉請按 delete all backup files. 程式會去搜尋備份目錄裡所有 rainAutoBackup 開頭的檔,若該檔存在會出現確認介面.如果你確定要把那些檔殺掉的話就按下 Yes.

2009年5月18日 星期一

script editor 一些小訣竅

Maya 的 script editor 雖然爛到常讓人火大,但是多多少少還是有它的用處. 以下是 使用 script editor 的一些小訣竅:


*把 程式或指令 做成一個按


*清除 script editor 裡的所有內容 : Edit -> Clear All.


*顯示程式錯誤行號 : History -> Line numbers in errors . 這功能可以幫你 debug 你的 mel / python 程式.




*顯示隱藏指令 : History -> Echo All Commands. 有時後需要把這選項打勾來查看看 Maya 使用哪些指令來執行哪些動作. 例如要呼叫 split polygon tool 的指令就是 SplitPolygonTool.




*增加新的 mel / python tab : Command->New Tab. 你也可以用 Command->Rename Tab 把你的 tab 改名.




*快速查詢指令參數: Command->Show quick help. 把這項打勾之後右下角會出現一個視窗.你就可以快速的查看看某個指令有哪一些參數可以用.

 

2009年5月14日 星期四

輕鬆移除 Reference

Maya reference 這功能雖然有很多好處,可是介面操作上感覺沒做的很完善 .例如一個常常會遇到的問題: 如果你的outliner 裡面 reference 了許多其他的檔案,然後你想把其中一個或幾個 reference 移除掉. 不幸的是maya裡沒有一個內建按鈕或指令可以"很快的"做到這件事.你必須先記住 reference 的 namespace,然後在 reference editor 找出相對的 reference, 然後執行 reference -> unload reference 或者是 reference ->remove reference.如果你有幾十個名稱很類似的 reference 的話,一不小心就會移除到不該移除的 reference.




還好 maya 開發者提供了一些針對 reference 操作的mel 指令. 以下的mel script 可以讓你直接在 outliner 或在畫面上 點選 一個或多個 reference, 然後幫你移除那些 "該死" 的 reference.

remove reference 程式:
{
string $ref[]=`ls -sl`;
for($eachRef in $ref)
{
    if(!`referenceQuery -inr $eachRef`)
        continue;

    string $refName = `referenceQuery -f $eachRef`;
    file -rr $refName;

}

};



unload reference 程式:
{
string $ref[]=`ls -sl`;
for($eachRef in $ref)
{
    if(!`referenceQuery -inr $eachRef`)
        continue;

    string $RNName = `referenceQuery -rfn $eachRef`;
    file -ur $RNName;   
}

};

2009年5月13日 星期三

你知道嗎: outliner 可以分成兩半

我最近才發現,原來 Maya 的 outliner 可以拉成兩個視窗(上下), 而且你可以從下半部把某個物件拉到上半部,反之則反.如果你的outliner排很長的話,這功能就可以讓你更方便整理outliner裡的物件.


2009年5月11日 星期一

rainConnector : 輕鬆連結多個polygon 的點或線

rainConnector 這個小程式可以讓你快速的把多個點或線連接起來. 相對於Maya 的 Split Polygon Tool 功能的好處是, rainConnector 可以在 maya 2008 /2009 的 polygon smooth mode (鍵盤按 3) 操作,而且它也可以很準確的把線切在中間.

下載點 : highend3d

安裝 : 如何安裝 mel 程式

用法: 選取你要連的點或面然後執行 rainConnector.
(如何把 mel 程式做成shelf 按鈕)



2009年5月4日 星期一

計算 polygon 線長度 (edge length)

以下是快速計算 polygon 線長度的 mel 程式:

{
string $edge[]=`ls -sl`;
string $tmp[] =`polyListComponentConversion -fe -tv $edge[0]`;
string $vtx[]=`ls -fl $tmp`;
vector $p1 =`pointPosition -w $vtx[0]`;
vector $p2=`pointPosition -w $vtx[1]`;
print(mag($p2-$p1));

};

2009年5月1日 星期五

有趣的 backface culling 按鈕

有 一位 CGTlak 網友把 切換背面隱藏 (backface culling) 這功能做成一個按鈕. 你可能覺得這沒什麼特別的,可是有趣的是他的按鈕會隨著開或關狀態把按鈕的圖案也跟著切換。

按裝程式下載點


安裝方法:
  1. 把 cly_toggleCullingShelfButtonSetUp.mel 放到 Maya script 目錄 .
  2. 把 togglePolyCulling.bmp和togglePolyCullingOn.bmp放到 Maya icon 目錄
    (例如"C:\Documents and Settings\Rainmaker\My Documents\maya\8.5\prefs\icons" 裡)
  3. 打開或重開 Maya, 然後在 command line 執行 :
    cly_toggleCullingShelfButtonSetUp

執行完之後,在Maya目前的 shelf 上會出現一個按鈕. 這程式的用法是先把某個或多個 polygon 模型選起來,然後再按下那個按鈕.


backface cull 沒打開的狀態.



backface cull 打開的狀態. 你可以注意到現在的 icon 跟沒打開之前的 icon 是不一樣的.