Quantum Quest in 上海國際科學與藝術展

Quantum Quest 於 2009/5/15 於上海浦東展覽館舉辦的上海國際科學與藝術展中,正式向中國大陸與上海人民露臉。太極影音 展示的主題有二: 需要戴眼睛觀看的立體劇場。內容分成三段,「NASA 科學家的介紹」「Quantum Quest Shanghai Trailer」「導演與 hollywood 影星訪談」以及偶爾會露臉的「Quantum Quest 影片片段」。 不需要戴眼睛就可以觀看到立體效果的裸眼立體屏幕(autostereoscopic monitor)。放映一小段訂作的 QQ Shanghai in autostereo,目的在吸引觀眾駐足,了解這個看起來有點酷的玩意兒,同時引導他們排隊觀看立體劇場。 我因為有任務在身,所以被安排能盡量在台灣多一些時間,然後在展覽開始的第二天才獨自一人飛往上海浦東機場:一方面準備兩天後的演講;另一方面是直接進駐展場,協助展場工作並見習一下與大陸人士的往來。整個過程從我 5/16 飛去機場,然後直達會場開始,一路待了快一週,最後以非常狼狽的模樣回來台北收尾。 到會場的第一天,正值週六,浦東展覽館擠滿人潮,我一到四樓的太極攤位,即被要求立即換上制服,上工。因為裸眼立體是由我帶領的小組完成的,所以老早在台灣我就準備了一下:1) 預想了可能會被問到的問題,2) 怎麼介紹給大眾這個有趣的玩意兒好讓他們順勢排隊去看 QQ 預告片, 3) 何時應該交換名片…不過一上工我就發現,有個小妮子表現得實在好到不行,突然間,我覺得這一週來,我可以只在旁邊觀察就好。這位小妮子就是阿寶。 阿寶看起來雖然生澀年輕,但卻非常懂得適時地走到觀看裸眼立體電視的群眾之前,從旁像導遊似的介紹起來:「現在看到的這個技術是裸眼立體技術,由台灣太極影音展出,內容是一部叫土星之謎的育教娛樂電影。現在請你先挑一個位置,如果覺得影像有點模糊,就往左或右移一下下,然後你就會看到很清楚的立體影像。這個設備最厲害的地方就在於你不用戴眼睛,卻可以看到很清楚且品質很好的立體影像。它的原理有點像是把人眼要戴的眼睛,拿給電視來戴,於是…」 另一位讓我嚇一跳的,就屬小朱了。 怎麼說呢,這個個頭高高,年紀輕輕的大四生,解說起與他的背景(文科)一點都沒有交集的裸眼立體電視時,可是整個就像在賣膏藥呀! 您瞧瞧,現在在您眼前的,正是這個世界上最最頂極的螢幕了,我們管這個叫裸眼立體電視。它怎麼個厲害哩,你來,我這就說給你們曉得。首先… 聽到這,我就覺得,我真的可以很輕鬆地渡過這次的展覽了。 上海市民非常可愛,怎麼說呢。我就遇到很多組阿公阿媽帶著孫子孫女來的,小朋友一看到這個立體電視,可樂歪了,整個就在亂叫。這時阿公阿媽就會問啦:「這個電視打哪買呀?」「幾多錢?」「五年後呀,我怕我等不到那個時候也!」「不是只要買這個電視就可以看到立體啦?」… 攤位的另一個重點是土星之謎立體電影。根據我從同事那得知,這個小戲院一開始整個不行,先是戲院外頭的布幕顏色錯了,然後是立體的效果不對,接著是放映的機器開不了機了…整個過程就是一團亂,當下駐場的 Chris 下令全數換掉,針對不同的問題一一做處理。這部分要感謝台達電子 團隊等人的全力支持,打從一開始的打包,運送,投影機的贊助,機器一有問題就立刻想辦法掉出另一台來…很多,整個讓我們非常的感動。Chris 這邊說了個很有趣的說法:「這就是所謂的 content is the king 的待遇嗎?」 一場約莫 15 分鐘,一次進場人次控制在 40 個人左右(考量到座位有限),但因為我們不是那麼有經驗,不曉得上海人民的強悍與這麼高的好奇心,一開始每一場都人數爆掉,一場六七十至八十人是常見的,加上外頭有這麼多人在等(週末要等上四場,等於是一個鐘頭),壓力大到我們希望能塞愈多人愈好。 這時經驗老到董事長把我們幾個人拉到後頭做訓話,她語重心長的指出:「我們的目的就是讓看完電影的每一個人都留下好的印象,所以要把這當成一個服務業來看待。打一開始的進場,要懂得安撫進來的人,讓他們可以靜下來準備好看戲,這時要同時讓他們得知接下來要看的戲是啥,免得發生與心理預期的不一樣。看完戲後,更要好好安撫一下他們的感受,告訴他們,的確,15 分鐘實在很不過癮,有種莫名奇妙就結束的感覺,但是呢,這部片子會在今年的秋天,於上海與世界同步上映,全長是 45 分鐘…」 上了一堂課。的確是這樣,與其讓他們囫圇看戲,然後帶著非常不好的印象離開,這樣就造就了 80 張負面評價的嘴巴出去,還不如讓他們好好等上數十分鐘,然後再好好地給他們服務一下,讓他們有種賓至如歸,一來忘了先前等的無聊(同時還會覺得很值得),另一方面也真正地把太極影音與台達電關係企業的合作,做出應有的高水準表現來。 每一次的參展,從 SIGGRAPH 開始至今,受教了不少。 新聞稿: 台湾高端“裸眼立体视觉”亮相上海科技节 from 上海新聞網 台湾文化创意展品为2009上海国际科学与艺术展“增亮色”(图) from 海峽之聲網 上海国际科学与艺术展本周开幕 “世博科技"成亮点 from 新浪新聞 作品一:《土星之谜》 from 中國藝術設計聯盟 作品二:裸眼立体屏幕 from 中國藝術設計聯盟 国际科学与艺术展今开幕 不戴眼镜也能看立体影片 from 新聞晚報.東方網 音乐竟然"看得见” 2009上海科技节让观众大开眼界 from 新民網 全球首映的IMAX立體動畫巨幕電影《土星之謎》“迷”住滬上觀者(圖)

June 8, 2009 · 1 min · Shuen-Huei Guan

Up - Carl Fredricksen Papercraft

阿則前幾天寄來了上圖,是 Pixar 今年會上映的動畫 Up 裏頭的角色“Carl Fredricksen“(男主角?)的紙雕。實在不錯吶~ 寫了封信去問原作者 Bradley 可不可以放在我的 blog,順道隨便閒聊一下,結果發現,原來這麼一張小小的紙雕,他花了 18 個小時…所以他本來還打算再做其它角色的,當下就打住了XD Hey Drake, I’m glad you enjoy my work. I definitely would not mind at all if you shared this Cubee Craft. Well first off, I’m a huge fan of Pixar’s movies, shorts, and overall great storytelling. I figured it’d be a nice tribute to them if I created a small piece from their upcoming film: Up. I chose Carl Fredricksen for the great shapes of his character design. He’s nice and boxy and loads of fun (plus - he’s pretty much the right size to be a Cubee). ...

May 9, 2009 · 2 min · Shuen-Huei Guan

Sketchpad, 開啟了 GUI 大門

1962年,電腦還處在有點古老,我還沒出生,無法想像得非常確切的年代。據說那時的電腦程式(有電腦軟體這種東西嗎? 搞不好沒有)是一疊打了洞的卡片,由一台讀卡機把這一張張卡片讀取進來,計算後,再以列表機印出結果來(印出來的應該不是洞了吧)。 A display connected to a digital computer gives us a chance to gain familiarity with concepts not realizable in the physical world. It is a looking glass into a mathematical wonderland. Ivan Sutherland ,這位被尊稱為電腦圖學(Computer Graphics)之父的人物,在他的博士論文“Sketchpad“中,展現了如下頭影片所示,這麼一個預見未來的系統。Sketchpad 是史上第一個提供一個互動環境,供操作電腦的人可以任意畫一些複雜的線條與幾何型的程式,它同時揭露了 3D、Virtual Reality(虛擬實境),它是史上第一個 GUI 程式。 我永遠都記得,在修歐陽明教授電腦圖學 的第一堂課時,就被教授以他一貫輕鬆自在的說法介紹了這一位人物。Smalltalk 這個物件導向程式語言的創造者 Alan Kay 是他的學生;Gouraud shading 是他的學生發明的;Adobe 與 SGI 的兩位創辦人,都在他創立的公司待過… 當時崇拜他極了。 現在這個年代,HCI (Human-computer Interaction) 大放光采,我在想,除了 3C 電子產品的蓬勃發展推波助瀾以外,HCI 開宗明義帶有“Design“的意味這點,對於想同時發展左右腦的人來說,是個非常致命的吸引力。於是我接著思考另一件事: 既然 Sketchpad 這類有某些劃時代意義的 system design/application 可以成為一篇博士論文,並且受到一定程度的尊敬與肯定。那麼,讓 PhD thesis 跳出“原創性“,“論文發表點數足“與“深入研究一個可能是很少人會關注的議題“的框架後,是否這種「嘗試做點夢,開發出一個會讓人眼睛為之一亮的程式」,也可以當作是一個 PhD thesis 了? ...

May 6, 2009 · 1 min · Shuen-Huei Guan

Unsharp Masking the Depth Buffer with Nuke

這個舊玩意兒,套用在 depth map/buffer 上來做到 image enhancement。 這是個方法簡單到不行(只比 dilation/erosion 複雜一點點),效果還 ok(如果去看投稿論文裏頭的圖 與官網上的影片 時,會驚覺怎麼效果這麼好)的研究。工作的需要,我們有同事專職於了解現階段 SSAO 的技術,我們很快地就略過 unsharp masking 這篇論文,可以說根本就是提一下下就不去理會它了,覺得太過於簡單,對於 animation 來說不實用。但也因為另一個巧合,我又回來了,而且還是以 The Foundry 的 Nuke 當作測驗平台。 這是一張我自 Stanford 拿的 dragon model 的 rendering. 依 paper 的論述,他們最重要的發現即是把 unsharp masking 給套用在 depth map/buffer 上頭,透過 depth map 上的不連續性,間接地暗示了圖像中“前後景的關係“。接著就是看你怎麼去利用這個“前後景暗示“的資料了。拿個例子來說: 這裏是 dragon 的一張 depth map。 先對它套用一次 Gaussian Filter/Blur ,於是我們得到一張 low-pass-filtered 圖,把這一張圖和原來的 depth map 做個簡單的比較,即會在前景物件與背景場景之間有了「暗示」。我這邊使用了與 paper 裏頭一樣的方法,把 importance map 的正負值以不同的顏色來表示(我使用的顏色好像剛好和 paper 裏的相反),可以很明顯看出透過這個 importance map,在前後景的邊緣有非常有趣的「暗示」。 上頭提及的 importance map,是我個人目前覺得,整篇 paper 的最大貢獻。怎麼說呢? unsharp masking 說穿了,就是把原圖去減掉經過 Gaussian filter 後所剩下的東西,換個說法,有點像是一張圖經過 high pass filter 的結果。因此很自然地在 frequency 比較高的地方(通俗點說法,就是變化大的地方。ex, 對比比較強的地方),就會留下一些東西。但是呢,作者們卻把這個源自 1930 或更早就有人在使用的技術,套用在 depth buffer 上頭,來獲得「深度上變化量大」的資訊,這點就很了不起了。 ...

April 8, 2009 · 1 min · Shuen-Huei Guan

改造 Linux 版 Maya 的 File Browser

因為工作的關係,我們一直以來都是使用 Linux 版的 Maya,導致曾經一度有錯覺,覺得 Linux 的東西就是比較好,即便是商業軟體 Maya,也是 Linux 版的比其它平台的版本來得優。事後證明這是種一相情願的想法,MS Windows 雖然在安全性與 GUI 的設計上進展緩慢,但它對 programmer 非常的友善,加上商業化的行為比較健全,所以多的是軟體公司或個人程式設計師在上頭寫了不少好的軟體,…說了這麼多,只是想說,MS Windows 版的 Maya 在 GUI 方面,的確有不錯的地方。 我曾針對 Linux 版 Maya 的 GUI 寫了兩篇: 一篇是引用別人給 Maya 設計,來得美觀且好用多的 GUI 幻想曲。 另一篇是指責 Linux 版的 Maya 會不好用,是因為 Motif 的關係。 Karl Erlandsen 是我在工作過程中,要去處理一個問題而不小心看到的。一般來說,工作很忙錄時,我會刻意不去理會網頁,也不會開啟 MSN 之類的東西,但這一篇實在很有意思:Improving the Maya Linux File Browser 。 Karl 的作法是利用 zenity 或 kdialog(端看你使用的 Desktop Manager 是 GNOME 還是 KDE)。他覆寫(override)掉了 Maya 原有的 File Open/Save 相關的 mel functions(更精確一點來說,是覆寫掉 pv_ooxx,這部分我們的 spin 非常有經驗),然後在裏頭安插了一個 system call,透過一個包好的 KE_FileBrowserWrapper.sh 來呼叫 zenity 或是 kdialog,最後再以 nc (netcat) 這個非常厲害的程式來把選取的檔名傳回 Maya。 ...

March 12, 2009 · 1 min · Shuen-Huei Guan

How to clean up "Render Stats" of all geometry in Maya?

No matter what renderer you are going to use, you should take care of geometry’s “Render Stats” before rendering, especially when you are planning to decompose a rendering job into several layers/passes. Here is a quick python scripts based on pymel to do that. from pymel import * def dgVerifyRenderStats(surfaces=None): ''' dgVerifyRenderStats deps: none verify and adjust all surface's render stats. double sided, opposite, smooth shading, motion blur visible in reflections/refractions, casts/receive shadows primary visibility ''' def _verifier(surface): surface.doubleSided.set(0) surface.opposite.set(0) surface.smoothShading.set(1) surface.motionBlur.set(1) surface.visibleInReflections.set(1) surface.visibleInRefractions.set(1) surface.castsShadows.set(1) surface.receiveShadows.set(1) surface.primaryVisibility.set(1) # save the selection selections = ls(selection=True) if surfaces is None: surfaces = ls(long=True, type='surfaceShape') map(_verifier, surfaces) # restore the selection select(selections, r=True)

March 5, 2009 · 1 min · Shuen-Huei Guan

How to make Maya output all messages into console/terminal?

Recently, Timothy and I were talking about some interesting about message in Maya. For daily tasks in Digimax, Timothy has to handle a mass of Maya scene files in batch way such that he can make it on schedule. But there are so many tasks and Maya scene files! He has spent some time preparing several scripts (Mel or Python, but most of them are Python) for that task. It seems work well but sometimes, he needs to get output messages from Maya for debugging and other scripts. For example, one Python script when invoked inside Maya would output a list of filtered and managed nodes in one Maya scene and after that, we can apply some other programs/scripts on nodes by this message. ...

February 28, 2009 · 4 min · Shuen-Huei Guan

Syntax Highlighting for RenderMan by Javascript

使用 RenderMan 的資訊人,比例相對來得少,我們很容易可以遇到一位使用 Java, C/C++, C#, PHP, Javascript, Perl, PHP 的程式人員,因應他們的需求而產生的 editor 也多如牛毛,幾乎可以說每一個月就有一個玩意兒被提出來供這些廣大的程式設計人員使用與把玩。 RenderMan 的技術人員呢? 乏人問津呢~ 某一天,在一個非常意外的情況下,我發現了 highlight.js 這個程式。那時的我,想要在我的這個網站上發表一些程式碼,大多是 Mel, Python, Rib, Rsl, Tcl…,於是上網研究一下,想找個適用的程式碼來做到 syntax highlighting。那時並沒有想到 Rib 或 Rsl 也會被支援,只是不經意 google 一下… 用了一陣子,發覺 highlight.js 雖然不賴,但是 Mel, Rib 與 Rsl 的支援很明顯有點過時了,於是先後向原作者提了兩次的更新,並把我所知道的 syntax,直接加諸在原來的程式碼上,然後再把結果回寄給作者看,請他看看覺得如何。 總之呢~~就是我又再次感受到 opensource 界人的親切,他都一一接受了。於是我在不經意的情況下,再次對 opensource 界有了一點點微薄的貢獻了。 highlight.js 的 demo 網頁。 PS. 我知道有個非常優秀,集眾人心血大成,支援約莫 100 種 language,而且非常有彈性,可以任意客製化輸出結果的 GeShi (Generic Syntax Highlighter) ,但它實在太優秀也太大了,而且好像對於 Rib, Rsl, Mel 沒有直接的支援,就像我說的,RenderMan/Maya 的使用者,在 CS 界算是小眾中的小眾,而這也是為什麼我這麼愛 highlight.js 了,因為它讓我得以很快速地分享我的一些想法 (英文版 )。

February 28, 2009 · 1 min · Shuen-Huei Guan