March 15, 2008

WebKit + Clutter:以 3D 技術給予網頁瀏覽的新體驗

3D 桌面系統技術變化相當快,現今的硬體運算能力也相當夠,連一隻小小的手機,都有 133 MHz 的處理速度,更遑論進步神速的 GPU,但除了展現華麗精湛的特效外,到底還能作什麼呢?兩年前的 OSDC.tw 曾提及 [從 Web Browser 與 3D 技術發展看未來桌面系統的挑戰],做了一些整理,這幾年觀察了若干提案,自己也試著做了 prototype 3D desktop,在驚訝於技術變化一日千里的同時,也在思考此等對人機介面的助益。

發展十餘年的網頁瀏覽器,儼然成為嶄新的平台,就如開啟潘朵拉的盒子一般,為這個世界帶來無數的變化,自此,無論是工作環境、居家、3G 手機等等,都不乏有網頁瀏覽器的蹤跡。不同領域的交會更是給我們無限的想像空間,網頁也不再是死板板的模樣,不過,畢竟網頁往往受限於圖形桌面環境的設計思維,即便進入所謂 "Web 2.0" 的紀元,網頁瀏覽仍是線性的操作,這對於強調人機互動的手持式裝置或移動運算環境,顯得格格不入。我對於「網頁」一詞,抱持著很大的想像,感覺就該如紀錄若干資訊的紙張一般,而 WWW 就扮演串連這些頁面的角色,如此一來,我們可在辦公室看這些頁面,通勤的過程中,也能取出觀看並作些像是分類、疊合、對比的處理。頁面的表面積不應該是限制,重點是紀錄於此的資訊,以及我們如何去看待。若能妥善整合 3D 技術,應可帶來更直覺的互動效果,也同時提昇思考的維度:
  • 網頁何嘗不能就如我們熟悉不過的紙張一般呢?
  • 網頁何嘗不能如紙張一般收藏剪裁呢?
  • 動態網頁何嘗不能想像為顯微鏡載玻片底下的生氣蓬勃微生物呢?
這幾年經歷過不同環境的瀏覽器發展,從 UNIX 工作站、Kiosk,到 PDA 與手機,螢幕尺寸不但是種限制,也扼殺許多應用的可能性,我想,或許是因為我們過度拘泥於表現的形式,卻沒有掌握其本質。活躍發展、跨越許多軟硬體環境的 [WebKit] 提供了質量俱佳的瀏覽器發展平台,並實做了 [HTML5] 中絕大部分嶄新的規格,RIA (Rich Internet Application) 的應用更是藉此得到強而有力的基礎。優雅的 [Clutter] toolkit 建構於 OpenGL 之上,提供兼顧效能與彈性的豐富視覺呈現,而今年一月份開始,WebKit 與 Clutter 彼此擦出了令人炫目的火花,前述的 3D 網頁呈現與互動,也是指日可待。

與 Firefox 3 (以 Gecko 1.9+ 為基礎) 一樣,WebKit 開始借重 [Cairo] 向量繪圖處理,透過其實驗性的 [OpenVG] backend,得以有效發揮硬體加速能力,但本身仍保持架構的簡潔,Clutter 有個 Cairo binding,所以可以很巧妙的透過 OpenVG + Cairo + Clutter,實現高效能的精湛視覺呈現。對手持裝置來說,中高階的產品紛紛整合 3D/OpenGL GPU,若能充分使用硬體加速,不僅能給予更好的使用體驗,還能讓能源管理作出更好的優化處理,裝置的可用性也可望提昇。在圖形處理的基礎建設趨於完備後,整合 WebKit 就更有趣了。

上圖是 WebKit + Clutter 運作的情況,展示了不同視角下,「網頁」的視覺變化,Zoom In/Out (或稱 pinch and expand) 操作對 OpenGL 來說,再也自然不過,如此一來,網頁的「收納」型態可有更多的方式,我錄製了影片以闡述這個想法: 整合好的 WebKit + Clutter 展示程式可自 [webkit-opengl-bin.tar.bz2] (i686-linux) 取得,在 Debian/Ubuntu 執行需要 [ICU] (International Components for Unicode) 與 [libcurl] (處理 network protocol),取得如下:
# apt-get install libicu36 libcurl4-openssl
事實上,libcurl 也有 GnuTLS 的支援 (libcurl4-gnutls),不過我已經寫死在程式中。解開後直接執行目錄中的 RUN.sh 即可。當然,這只是開端,顯然有許多可改進的空間,唯一的限制,應該是我們的想像力罷了。
由 jserv 發表於 March 15, 2008 09:43 PM
迴響

贊,跑了前輩的 webkit-opengl

不過 ubuntu 裏沒有 libcurl4-openssl

華華 發表於 March 15, 2008 11:56 PM

補充:

看畫面應該是 http://svn.o-hand.com/repos/clutter/trunk/clutter-webkit/ ?

kanru 發表於 March 16, 2008 12:09 AM

@kanru

是的,從 clutter-webkit 去改的,看看能改到多小,現在執行檔大約 2.5Mb,但是大部分的功能都有作用,包含 SVG。

jserv 發表於 March 16, 2008 12:13 AM

我的apt源里没有libcurl4-openssl怎么办啊

wenhsuan 發表於 April 13, 2008 11:15 PM

@wenhsuan,

在我的 Ubuntu hardy 中,"libcurl4-openssl" 是存在的。

jserv 發表於 April 14, 2008 08:22 AM

ubuntu 8.04, please try follow
sudo apt-get install libicu38 libcurl4-openssl-dev

Drip-shui 發表於 September 22, 2008 10:11 AM

我弄错了, 请教jserv兄, webkit-opengl-bin 有没有64位的版本? 还有, 我的ubuntu 8.04 上面确实没有libicu36 libcurl4-openssl, 只有libicu38 libcurl4-openssl-dev. 很感谢您的文章.

Drip-shui 發表於 September 22, 2008 10:31 AM

前辈, 能否放出这个演示的源代码?

我对此比较有兴趣! 想研究研究, 谢谢!

htom 發表於 January 15, 2009 10:52 AM
發表迴響









記住我的資訊?