學習 RenderMan 的一套方法

第一屆的 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/…) 從實作出一個 RenderMan renderer 的角度來看,它包含了三部分,分別是 RenderMan Interface Specfication (RISpec, RIB)、RenderMan Shading Language (RSL) 與 renderer 本身(ex, PRMan, 3Delight, Pixie, …)。RIB 決定了給 renderer 使用的 scene description;RSL 提供了一個幾乎無限制的語法供 shader 開發與使用;renderer 則是集前兩者然後產生結果(圖片)出來。 ...

January 18, 2009 · 5 min · Shuen-Huei Guan

Delete unknown nodes in Maya

Sometimes you need to delete unknown nodes in a Maya scene. You can do it in the following python snippet. from pymel import * def deleteUnknownNodes(): # 2 things to take care of: # 1) you can't delete nodes from references. # 2) "delete" will delete all children nodes (hierarchy) in default. unknown = ls(type="unknown") unknown = filter(lambda node: not node.isReferenced(), unknown) for node in unknown: if not objExists(node): continue delete(node) Compare it to the MEL way: ...

December 30, 2008 · 2 min · Shuen-Huei Guan

Selecting multiple appearances in slim with MEL

slimcmd "plt0 SelectAppearances {func0 func1 func2}" this might failed….!!! use the following. slimcmd plt0 SelectAppearances "{func0 func1 func2}"

December 29, 2008 · 1 min · Shuen-Huei Guan

Alfserver configuration suggestion from Pixar

Given that, you might try increasing the amount of time that alfserver waits before escalating to SIGKILL. One second is a long time for a process to be unresponsive. Try small increments, for example, in alfserver.ini change this line: SetPref timerAlfserverSignalEscalation 3 Also, the log indicates that you are running the server as root, which would be ok if you were causing the actually-launched apps to run as a different user. I think you’ve got “AlfProcessOwnerConfig login root” set in your alfserver.ini ? There is a chance that the “login” mode is adding an extra layer of complexity to this issue. ...

December 29, 2008 · 4 min · Shuen-Huei Guan

Nuke scripting 初體驗:Nuke + Alfred

大約三週之前,開發 Nuke 的 The Foundry ,由 CEO, Bill Collis, 偕同技術人員 Matt Plec 與兩位美麗的華裔女士來台,參與了 SIGGRAPH 2008 Taipei Chapter 的活動,會後立即趕來太極,面對太極的幾位 compositors,給了一個更加深入一點的 talk + demonstration。 Matte 就 Nuke 與 Ocula 做了不少的 demo,像是 3D scene/model/camera importing by FBX、multi-channel manipulation、customized gizmo、stereoscopic vector viewing by Ocula、stereoscopic offset、stereoscopic filein handling…其中我最感興趣的,是 Nuke 的可程式化能力。 Nuke 5 發佈的特色之一是對 Python scripting 的支援。根據我 k 了文件後的了解,幾乎所有在 Nuke 裏頭的操作,都可以使用 Python 來做到,於是乎,有很大的空間可以就「自動化」與「整合其它軟體或服務」做延伸上的開發。我對於這一點感到非常的興奮。相對於 Apple Shake 限制多多的 shake macros 與我們一直無緣拿到手的 Shake SDK,Nuke 對 programmer 實在友善太多了。 我立即寫了個 python script,做了點設定上的調整,在 Nuke 上頭多新增了一個 Digimax 的 menu,然後裏頭有個 Submit To Render Farm 的功能。目的是透過它來產生一個 alfscript 來,然後呼叫 alfred 把 nuke rendering 給送進 render farm。 ...

December 25, 2008 · 2 min · Shuen-Huei Guan

活躍於 3D 軟體之間的程式語言:Python

Guido van Rossum 於 1991 年創造出 Python 這個 scripting language 時,應該是沒有料想到它的風行全球,更不可能會猜到 3D 軟體產業是多麼的愛戴這個語言: Maya 在被 Autodesk 併購了後,於 2007 年年初釋出了 8.5 版,支援 Python 的環境。 相傳,原本和 Maya 拼得你死我活的 Softimage (不過現在和 Maya 成了親家了@@ 還真的是世事難料呀~)也早就有了 Python 的 binding。 台灣新聞台的最愛 Poser 軟體,2000 的 4.0 版支援 Python。 特效軟體界的傳說 Houdini (也是目前我知道最貴的軟體之一,不過據說 Massive 更貴 @@)於 2007 年投入 Python 的懷抱。 流體模擬(Fluid & Dynamic Simulation)界的第一把交椅 RealFlow 也在最近發表的 RF4 (?) 新增了對 Python 的支援。 因為與 Peter Jackson 的魔戒合作下問世的 Massive ,一樣有提供 Python(不過也一樣是有 TCL)。 趁著被 Apple 收購的 Shake 不會有下一版,然後挾天子以令諸侯(啊,不是,是有 Digital Domain 當靠山)的 Nuke ,在今年(2008)推出 5.0 的同時,一口氣把 GUI 換成 Qt 且同時支援 Python(不過還是有支援 TCL,大家都很愛 TCL 也 :o)。 自 2006 丟出第一部 Elephant’s Dream,以 Open Movie 為名的動畫而開始大紫大紅的 Blender ,因為是 open source 起家的,當然(?)和 Python 有掛勾。 繼 Zbrush 之後出現的 Mudbox 與 modo (或應該說,大有幹掉 Zbrush 潛力的軟體生力軍!?)。 open source 界很有名的 cgkit ,一個主要針對 Maya 與 Renderman 撰寫的 python modules。他們這一群人實在很有遠見,根本是在催生 Maya with Python 了。 (Game Engine)3D 軟體界被淘汰掉的 Truespace 一樣有支援(請原諒我對這個 project 興致缺缺)。 (Game Engine)open source 裏頭,很古老(1998~)的 3D game engine: Crystal Space 提供了個 PyCrystal 。 (Game Engine)open source 後起之秀的 3D game engine: OGRE 3D (非常適合入門與學習一個 game engine 的玩意兒)也有個所謂的 Python-Ogre 。 (Game Engine)另一個後起之秀: Irrlicht Engine 有個 Pyrr (是台大資工的學弟做的?!)。 還有很多…很多… ,而且未來只會更多… 不管你是要寫 Game 還是做 Animation 的 TD,你都應該去學習這個 3D 產業不約而同,挑上的的程式語言:Python。

December 17, 2008 · 1 min · Shuen-Huei Guan

彭哥的新書:3D繪圖程式設計

今天下午三點時分,遠在美國加州 Activision 最賺錢的 Guitar Hero 團隊裏的 Peter Pon,透過 gtalk 跟我說,他出了一本新書:3D繪圖程式設計–使用Direct3D 10/9與OpenGL 2.0 。 快速摘要: 書名:3D繪圖程式設計–使用Direct3D 10/9與OpenGL 2.0 作者:彭國倫 撰寫時間:一年 撰寫原因:打發無聊的美國時間 撰寫後:放了一整週的長假休息 趁著天還沒黑,跑去走了一回四獸山裏的象山,天氣變冷得快,還真的是有點喘。回程跑去信義誠品找這本書來翻翻。 這是一本偏向入門的書籍,但又不像單單教 OpenGL 或是 DirectX 那樣 CG API level 的書籍。前十章由淺入深,由 Transformation, Phong Reflectance Model, Texture Mapping, 乃至於 Procedural Texture 都一一提到,算是入門篇。後面的幾章,分別就 HLSL, GLSL 的介紹,然後舉出幾個實際的範例說明 GPU Shader,像是 Parallax Map , Relief Map , Bloom(我非常喜愛這一頁的 Wikipedia,使用了 Elephant’s Dream 的一張圖來說明) , HDR , Deferred Rendering , …。最後,附上了一章說明 XBox 360 與 PS3 的硬體環境介紹,與一些大學教科書上都找得到的線性代數。 ...

December 7, 2008 · 1 min · Shuen-Huei Guan

Knoll's Computer Klass

今天 cyy 教授 的 rendering 課,一樣聽得很過癮,我想過癮的原因之一,在於他說話的那種調調,他那股想讓聽課的學生聽懂的「急迫與認真感」,簡單來說,是一種個人魅力 + 專業教學結合下,一堂讓人覺得還不賴的課。 喔,對了,課堂中他放了兩段 animation,兩段講述 Computer Graphics 中與 Rendering 有關的基礎概念。有趣的東西,放上來讓多一點「有空」或「無聊」的人看看。 這一段是 Trailer,總計有三段,分別是:1) Local Illumination Models, 2) The BRDF, and 3) The Rendering Equation. 每一段都是以一位老師教授一群學生一個觀念為主的小動畫,有趣的地方就在於裏頭老師說話的調調非常誇張,有點像是小時候到大廣場聽的賣膏藥的。原始的三段 animation 都有點大,想看的,就直接去原作者的網站 上看吧。

November 12, 2008 · 1 min · Shuen-Huei Guan