Drake's Weblog

animation

1 minute read

有天(2007/10)突然心血來潮,想說認識了 7 年有餘的 Maya(從大五寫遊戲開始,至進入太極影音工作),還真不曉得它的歷史,要了解一個軟體的歷史得花不少時間,但如果只是抓抓圖的話,可就比較快了。那就來收集一下 Maya 歷年版本的 Splash Window 好了。不過目前還缺不少版本中… 如果有人有其它版本的 splash window,還請通知一下 :)
Maya 2011 Splash Window
Maya 2009 Splash Window
Maya 2008 Splash Window
Maya 8.5SP1 Splash Window
Maya 8.0 Splash Window
Maya 7.0 PLE Splash Window
Maya 6.5 Splash Window
Maya 6.0 Splash Window
Maya 5.0 Splash Window
Maya 4.5 Splash Window
Maya 4.0 Splash Window
Maya 2.

2 minute read

Maya 原生的 Script Editor 不太好用,因為:
copy & past 不好用:這是指在 Linux 下,使用 Motif API 的 Maya 而言,其它平台的 Maya 沒有這個問題。 沒有 syntax highlighting:雖然說使用 script editor 時大都是試驗性或很簡短的程式碼,但天曉得,syntax highlighting 肯定能讓你的心情好一些,誰說「讓程式師計師的心情好不重要」的!! 不支援 regexp:just my humble opinion 不方便調整字型大小;just my humble opinion 沒有 smart indent;just my humble opinion but very important to Python 但是它也有幾點好處:
與 Maya output 在同一個視窗:方便 debug,在任何有疑問的地方 print 一下就行即時的 debug。 可以 run by selection:對於寫一些實驗性的 coding snippets 非常好用,至於在寫比較有規模的程式或模組時,直接透過 source (MEL) 與 import…reload (Python) 來做即可。 可以及時地查 mel 或 python 的 help:只有非常有經驗,寫過無數程式碼的工程師,才不需要查閱 API document,甚至可以誇張一點地說,程式設計師的工作不過就是查閱技術文件,然後把腦子裏的思緒(不管清不清楚,有沒有組織)以剛剛查到的語法寫出來,然後逐步(可能是逐行、逐函式、逐模組…)測試,最後交差,以接下來的維設與新增減功能。也因此,可否方便查閱文件,成了寫程式能不能很順暢的重要指標。不過 python 這一塊可以透過 mayaipy (maya + ipython2.

5 minute read

Maya scripting 現在有了 MEL 與 Python 可供選擇,對於大部分的 Maya 使用者來說,這是件微不足道的事,但對於天天使用與撰寫 Maya scripting 的人來說(ex, TD?!)(或保守一點的說,很有機會被要求寫點程式的人),這重要極了。
個人淺見,Python 與之後由 Luma Pictures 的 Chad Dombrova 所推出的 pymel (0.7.8),是 Autodesk 買下 Maya 後,在 8.5 所做的 features 裏頭,最最重要的一點了。好吧,我是以 RD/TD/SD 人員的角度來看事的,請先暫時原諒我這有點狹隘的說詞,然後接著繼續看文章。
Maya 8.5 發表以前,在 Maya 上頭工作的技術人員,除了和大家一樣要去了解與使用 Maya 以外(說真的,Maya 的學習曲線有點長,進入門檻有點兒高,以致於很多資訊系所的電腦圖學實驗室,都不容易利用這個工具來做點什麼,實在很可惜),可能還需要去了解一下 Maya ascii file format, Maya nodes, Hierarchy in a Maya scene file, Mel, Maya C++ API, 技術名詞, …好不容易似懂非懂一些東西後,就是寫些程式來試試看。
舉些個例子。如果你想寫個可以自動幫你架好骨架的 joints 與一些 IK/FK 的設定的東西,你可以利用 Mel 來做到;如果你希望有一個特別的材質球,它會在你的模型有互相穿刺時,用紅色這種非常鮮豔且帶警告意味的顏色來提醒人,你可以用 C++ API 寫個 plugin 來提供一個特製化的 material node;如果你想用透過一個放在 Maya shelf 上頭的按鈕,讓 lighter 可以很快的下算圖指令的話,那你可以使用 Mel 外加 RMS/MtoR 提供的指令來做到;如果你想利用 locator 來實作 instance(一些 Maya instance 無法做到的情況下),同時要讓這個 locator 秀出原 reference model 的各種動態的話,你得用 Maya API 外加對於 Maya node 的了解(當然,你也可以使用 billboard(sprite) 做到);…

1 minute read

Chris Chia 在他的 blog 發表了一篇 Maya ChatWin v0.6.1 (100% Built on Python),完成了一件非常有趣的事:在 Autodesk Maya 裏頭實作了一個 MSN 外加一個遠端的 script editor 出來。
這個 Maya ChatWin 運作起來就像 MSN,只是聯絡人清單是來自於同網段(內網)的電腦,目的…大概是讓你工作到一半有個小問題,想找人問一下時使用的吧,我想基本立意應該是這樣。它另外比較有趣的功能是,可以直接遠端傳送 mel 或 python script,所以可以做到遠端執行一些 fixing scripts 之類的。這功能目前是單向的,不過也夠應付 supporting TD 使用。
我個人覺得,MSN(或更正確一點的說法是 instant messenger)這功能要很實用,得看大家的使用情況,畢竟當你已經有一個更好用的 IM 時(ex, MSN, Pidgin, Adium, …),你並不會覺得有需要再有一個 IM。不過當這個 IM 與 remote mel/python scripting 結合時,就顯得有價值一些了。
,使用率其實不高,原因之一是我們還不是很了解怎麼好好善用這個 IM,有時亂用反而容易影響到其它人,另一方面是,有些情況還不如直接走過去當面問或聊來得好。RD/TD 對於 IM 的使用率高一些,尤其在於一些 scripting writing 或 tool 使用方法之類的,這些問題的答案常常是一兩行 commands,就很適合。
Maya 預設的 commandPort 目前只支援 mel script,所以這個 Maya ChatWin 可以支援 python script 是個非常吸引人的工作,就我所知,有不少 studio 的 TD 都非常渴望 Maya 有這個功能,相信不久的未來 Autodesk 會加入才是。

1 minute read

Maya 裏頭有個非常 high level 的 mel function: optionVar,有別於其它的 functions 的簡單與立即反應,它的目的在提供一個跟 Maya session 的設定檔的存取。換個說法,你可以在一次執行 Maya 的時候,存一個自訂的變數 IamSoHandsome,然後在下一次執行時取出來用。所以你可以把它想成是 Windows 上頭的 registry、Unix-like 下的 .ooxx 個人設定檔、或是會永續存在下去的 environment variables。
optionVar 另一個優秀的地方在於,它允許你隨時更改存下來的變數的 data type。所以你可以今天把 IamSoHandsome 宣告成一個只有 0 與 1 的 boolean,然後明天改成 “yes” 與 “no” 的 string,只要直接指定給它一個新的 data type 就做到了。如下:
optionVar -iv "IamSoHandsome" 1; ... ... optionVar -sv "IamSoHandsome" "yes"; ... ... optionVar -sv:
creates a new variable named using the first string with value given by the second string.

2 minute read

GUI 是個非常偉大的發明,它讓電腦就這麼快速地滲透進家家戶戶與各大小商辦或公家機關,因為我們有 Mac OS、Windows、X Window System,再加上現下當紅的掌上型界面(iPhone、NDSL、PDS、Android)與從 web browser 裏出生的 web interface,世界就此進入資訊高科技時代,人人都會使用這些電腦設備,因為它們都提供了一套容易使用的 GUI。
我依稀記得我的第一個有 GUI 的程式,是在新竹中學的軟研社(22th招生影片)裏頭,使用 QuickBasic 呼叫底層的 VGA interrupt 來存取 video buffer,在螢幕上畫了兩個眼睛,裏頭的眼珠子會依據滑鼠游標所在的方位,往那對應的方向看過去。這隻程式除了滑鼠移動時所造成的 event 以外,就沒別的了,既沒有 button 也沒有 textField 供輸入什麼的,非常的陽春,但我寫得很愉快,這經驗一直是那麼的深刻。事實上,這經驗讓我不討厭在寫程式之餘,花點力氣刻一下 UI,要多花點時間也行。這無形中讓我不至於學到某種壞習慣:programmer 覺得 GUI 是最最討人厭與沒有用的技術。
時間拉回到進入太極影音以降。
在 Maya 裏頭,scripts 提供 GUI programming 的函式,算是進入「MFC 之前,event driven 之後」的時代。所以 Maya 提供的 control(ex, button)大都可以針對一些 event(ex, click)指定一個 callback ,寫這類的程式對於一般修讀過四年資訊課程的學生來說,不是什麼問題。
遺憾的是,Maya 的 callback 機制很原始,callback 裏頭的程式碼並不會繼承所在的 namespace(or scope)的資訊,而是在 global namespace 下執行的,拿下頭這個例子來看:
proc dgCallbackCancel() { deleteUI "ooxx"; } global proc dgShiftAnimationKeysGUI() { if(`window -exists "ooxx"`) { deleteUI "ooxx"; } string $win = `window -title "ooxx by Drake" "ooxx"`; rowColumnLayout -nc 2 -cal 1 "right" -cal 2 "left" -cw 1 100 -cw 2 200 -w 300; text -label "Mode : "; string $mode = `radioButtonGrp -nrb 2 -labelArray2 "All" "Selected" -cw2 80 80 -select 1 "mode"`; text -label "Frames to shift : "; string $shift = `textField "shift"`; button -label "Do It" -c "dgCallbackDoIt()"; button -label "Cancel" -c "dgCallbackCancel()"; showWindow(); } dgShiftAnimationKeysGUI(); 兩個 button 的個別 callback functions 裏頭,為了可以順利存取到其它 control,使用了 hard-coded control name 的方式(直接假設 window name 是 “ooxx”, 另外兩個 control 分別是 “mode” 與 “shift”),另一種作法是使用全域變數的方式,直接把這些 control 的名稱存到全域變數,然後在 callback functions 裏頭使用他們。

1 minute read

天下雜誌 414 期,特別在崖上的波妞上映前,專訪了日本動畫大師–宮崎駿–逆風時代,希望啟航~宮崎駿的動畫世界。
我不確定我看到的,是不是完整的採訪,裏頭就宮老與他的吉卜力工作室的工作環境做了點介紹,有機會看到一些真正活著,在那一幕幕動畫作品後的原畫師與動畫師們,也可以看到宮老身穿圍兜兜到處晃來晃去的樣子,偶爾還可以聽到他們說一些輕鬆的生活或工作趣事。更棒的是,還可以看到傳說中的吉卜力美術館,裏頭多的是小朋友與爸爸媽媽到處亂串~
身為一位完全不懂得怎麼畫畫與拉 3D 模型的我,還是會忍不住被宮老與他們團隊的作品所感動,雖然只是一點點,沒有辦法像傻呼嚕同盟那樣說出讓人熱血沸騰的話來,但只就因為這麼一點點,就這樣傻呼嚕地加入遊戲動畫產業了。
我和導演合作了很長一段時間,宮崎先生了解我全部的優缺點,連父母都不會這麼了解。透過工作,他完全了解我,對我來說是很珍貴的事。如果用一句話來形容:
這真的是很棒的事。
Quote: 吉卜力工作室作畫指導 – 近藤勝也.
天下雜誌把整個採訪,放出了三個片段在 YouTube 上頭,每一段就短短地不到十分鐘,過了這麼一個長假,想再結束前再被感動一下的,去看看吧 :)

5 minute read

第一屆的 SIGGRAPH Asia 2008 於這個冬天,在新加坡落幕了。雖然沒有親臨現場參與到,但從多方得來的消息(第一手 + 第二手 + 第 n 手),皆透露出“與預期的有些落差“。另一個說法是「比較接近正常的學術論文樣貌」,亦即在有聲光、有話題、有商業加持等的活動,數量上都減少了,因而使得原來的 paper session 的比重就來得比較高了。因為是第一屆,所以 course 的部分有不少“入門級“的,但我特別喜愛這種 course,裏頭常常會有令人意外的東西。
由 SCAD(Savannah College of Art and Design)的 Malcolm A. Kesson 教授所開講的 Pixar’s RenderMan,就是個很好的「入門兼中等級」課程。Kesson 教授從事 Graphics Programming 教學(特別是與 RenderMan 有關)已經十餘年,是一位非常敬業且時時在 Pixar 官方討論板上提問題,讓人尊敬的教授。他自行維護的 fundza 已經出現在我的網站不下數次了,非常推薦。
雖然沒有機會現場收聽,倒是拿到了 course note,花了幾個晚上看完。說實在的,參與 SIGGRAPH course 是一件非常「累人」的任務,多麼累人,你只要稍稍回想一下,你那大學時期,聽課聽到有點出神,不小心跑去和周公下棋的經驗。對了,大致的感覺就是那樣。更何況是單單看 course note(pdf 檔),不過終究是看完了。
據說,偉大的天才科學家:愛因斯坦,他的研究之路是經過計劃的。他先是下了苦功把需要的技能一一學會,才開始了他的研究。換句話說,他把需要的「工具」摸熟了,才開始上工。(這也有可能是盜聽塗說,畢竟是一點兒考據都沒有的話,聽聽就好)
在這邊,提出一套學習 RenderMan(我的經驗,幾乎都來自於 Pixar’s RenderMan,但在寫這篇文章時,會盡量保持中立,把 PRMan 特有的東西給獨立出去不提)的途徑,說不定半年後我就推翻掉這個說法了,但「推翻」這件事本身就很有趣,所以還是值得試試。
What is RenderMan all about? RIB -> RSL -> front-ends (RMS/MtoR/3Delight For Maya/…)

Recent posts

Categories

About

You're looking at Drake's words or statements. All opinions are my own.