2010年9月12日 星期日

what is whatIs ?

對於寫 MEL 程式的使用者來說 ,whatIs 是個超級好用的指令。我們常常會想知道某個功能的背後是用什麼指令或函數來產生的。由於 Maya 是個非常開放式的軟體,很多東西都可以透過 Script Editor 來操作,包括 "偷看" (也許是光明正大的看) Maya很多功能的背後指令.

舉一個很簡單的例子:當你想知道 顯示 Polygon Normal 的功能 (Display->Polygons->Face Normals) 是要用哪一個指令(或哪幾個指令),就可以打開 Script Editor ,然後執行一次該功能,看看有沒有看起來 "像樣" 的指令。若沒有的話,那就要打開 History->Echo All Commands 的功能,然後再執行一次,也許就會有了。原來它叫做 ToggleFaceNormalDisplay. 那你就可以把這指令存到 shelf 裡, 方便你快速切換該功能。



但有時候你可能用遇到這種狀況:你已經把一個 "偷學到" 的指令存在shelf 上,執行也沒問題。可是不知道為什麼,重開 Maya 之後這 shelf 按鈕就失效了(或出現錯誤)。如果錯誤是 "Cannot find procedure : blablabla "的話 ,那原因應該就是因為你存的那指令不是 Maya 一開起來就可以用的指令 (runtime command)。 它是需要先被 source 的. 那你又要怎麼知道要 source 哪一個 MEL 檔案呢? 這時候 whatIs 就派上用場了 (終於說到重點 @@ )。 whatIs 可以讓你知道某個指令是個 runtime command, 還是從某個檔案source過來的 command / function。

例如產生spot light 的 函數 叫 defaultSpotLight()。`whatIs defaultSpotLight` 這指令就會跟你說 這函數來源是 "C:/Program Files/Autodesk/Maya2011/scripts/others/defaultSpotLight.mel" (maya安裝路徑的某個目錄裡)。那你如果要用這指令的話, 就可以先執行 `source "defaultSpotLight.mel"` 或 `source "C:/Program Files/Autodesk/Maya2011/scripts/others/defaultSpotLight.mel"` 然後再執行 defaultSpotLight(),就 OK 了啦 !

4 則留言:

  1. 請問一下 模型上骨架時 是要低面數時製作嗎?
    我用低面數+綁完骨架 打開高面數都會糊掉ˊˋ

    如果用高面數要設定骨架 我電腦跑不太動....

    回覆刪除
  2. 可以試試看用低面數的rigging模型來 wrap deform 高面數的模型.

    回覆刪除
  3. 很受用,但是我還是比較迷惑與maya啟動默認值的控制如何提取...比如默認啟動RM渲染器之類的設定方式

    回覆刪除
  4. 網誌管理員已經移除這則留言。

    回覆刪除