2008年6月16日 星期一

多了一小步 感覺完全不一樣

從此【物件複製】時可以針對位置使用預覽功能。有這個功能後,使用者不會因一再嘗試錯誤的過程中,失去耐心。期待它能順利通過測試過程。


許多功能與想法,隨著時間一一實現的感覺真好!

過程中最耗時間的其實並不是功能開發,而是功能的測試:『牽一髮而動全身』是最好的寫照。就算測試工程師規畫再多的測試計畫與測試報告,總還是提心吊膽,深怕思慮不周,挂一漏百、掛一漏萬。

因此在考量如何分配資源,投入開發 FancyDesigner 的因素上,首重《穩定 Stable》;其次《效能 performance》;最後才是《功能 function》。相信這樣一步一腳印,建築扎實穩固的基礎,才能在大鵬展翅時,飛的暨高、又遠、更長久。

2008年6月15日 星期日

饒了我吧,ATi …

不知道各位有沒有注意到,FancyDesigner裡的鏡面反射效果是可以有巢狀反射的。什麼是巢狀反射呢?舉例來說,如果有一塊大理石地板反射了地板上的傢俱,而有一面鏡子又反射了這塊地板,則鏡子裡的地板也可以看到所反射的傢俱。

Ati的顯示卡:茶几下的木板周圍可看見明顯的鋸齒狀白邊
(按圖放大)

nVidia的顯示卡:一切正常
(按圖放大)

這種情況在現實生活中常見,不過虛擬實境裡可不容易達成。當然囉,咱們儒思科技的研發團隊照例是責無旁貸,拼了老命來完成這偉大的任務。(有點臉紅了 :P)

話說FancyDesigner團隊所獨家開發的巢狀鏡射演算法(Nest Reflection Algorithm)總算是不付所託,圓滿達成任務;不過為了兼顧效能上的考量,鏡射裡的影像是會出現鋸齒狀的,而這也是要求完美的我們心中的痛。

不過最近隨著顯示卡的效能越來越強,我們倒是想出了解決之道,所以現今的FancyDesigner版本已可在鏡射面裡呈現高畫質反鋸齒的影像。不過,問題可來了,採用新的做法之後,卻發現在ATi的顯示卡上居然會出現奇怪的白邊,我們接連更換了幾次ATi的驅動程式都沒有用,而在nVidia的顯示卡上卻一切正常。唉,這可真是令人喪氣呀!據我推測,應該是ATi為了在反鋸齒(Anti-Aliasing)上取得較好的效能,而出現的錯誤。

ATi與nVidia這兩家公司我可是看著他們成長茁壯的,看著他們這十幾年來如何在3D晶片的市場攻城掠地的。nVidia的3D晶片一向在效能上較為突出,想當年,我還曾經以nVidia的TNT2顯示卡與SGI的Indigo2繪圖工作站做過一場慘烈的對比。結果售價高達一百多萬台幣的Indigo2竟然在效能上慘敗給當時售價僅有8仟多台幣的TNT2顯示卡。至於ATi方面,雖然早期在與nVidia的競爭上,效能並非總是能佔有什麼優勢,不過在畫質上的表現卻是令人印象深刻。特別是在全景反鋸齒(Full Scene Anti-Aliasing)上的表現,即使打開了高達6倍取樣的反鋸齒效果,在效能上的影響並不明顯。所以以往我都會跟人客推薦採用ATi的顯示卡。

不過,看來這次我們算是無意間踩到ATi的痛腳了,當Back Buffer與Render Target同使採用反鋸齒時,竟然會出現明顯的鋸齒狀白邊,而如果所採用的取樣倍數不一致,則下場更慘,連整個Back Buffer的Background color都會被改掉,而且整個Back Buffer都會呈現不堪的白邊鋸齒狀。看來,還是nVidia比較遵循著D3D的規則來發展,不僅畫面一切正常,而且畫質與效能也相當不錯。

不過雖然這是人家驅動程式的瑕疵,但是我們總不能要每個使用者都換用nVidia的顯示卡呀!所以囉,幾經琢磨之下,目前我已經想到了解決之道來避開ATi的這隻臭蟲,只是行不行得通還得實際去測試才知道,各位看倌就敬候佳音吧!

2008年6月14日 星期六

又要馬兒跑,又要馬兒不吃草

看到有這麼多的FancyDesigner愛用者,心裡實在是高興!

不過嘛,有越來越多的使用者抱怨,當場景變大時,執行的速度也會越來越慢!

人客呀,這是當然的嘛!無論如何,場景總不可能無限制的擴充下去呀!場景裡的東西如果越來越多,越來越複雜,執行速度當然會越來越慢的嘛!

這面牆的後面是個浴室

不過話雖如此,我也知道使用者就是因為喜歡FancyDesigner,才會有如此期盼的。

好吧,即使不是十分合理,我還是希望能寵寵使用者,讓他們真的能在兼顧畫質之下,擁有更大更複雜的場景。

浴室裡的物件雖然被牆擋住了 但還是會做3D運算

這個問題到底該怎麼解呢?看來應該可以從遮蔽物的觀念來下手。無論場景多麼的大,除非是百分之百的開放空間,否則使用者應該不可能一眼就看到場景裡所有的東西,所以只要把暫時看不到的東西去除掉,也就是不列入計算,那就能夠大大提高執行的效能。舉例來說,如果人是在客廳的話,那主臥室或其他房間裡的東西就極可能被隔間牆擋住,所以裡面的東西就可暫時不列入計算。

其實這個說穿了就是3D遊戲裡常用的遮蔽演算法,只是人家的3D遊戲在建場景時都會有嚴格的限制,所以遮蔽演算法較為單純,而我們的FancyDesigner卻是要讓每個人都能輕鬆容易地建構場景,所以遮蔽演算法所要考慮的因素可就複雜多了。

啟用遮蔽演算法之後 牆後面的物件運算大幅減少了

不過,…..嘿嘿,經過幾個月的努力,遮蔽演算法總算大功告成了!這都得多感謝Su的協助,因為比較難的數學問題,我都是讓他去傷腦筋!

人客呀,再耐心等個幾天,就可以享受到遮蔽演算法的好處了唷!

2008年6月11日 星期三

處女座的吹毛求疵 ── 光暈特效終於完成

明知道虛擬實境的畫質有其限制,但我就是不死心,總希望能在畫質上再上一層樓,於是就將腦筋動到了光暈效果上。

(按圖放大)

真實世界裡,發光體或者是高亮度的材質表面,通常都會對週遭的環境產生光暈般的反光效果。反過來說,如果能在虛擬實境的場景裡表現出光暈的效果,那麼整體的真實度就會提高許多。
關於光暈的演算法其實難度並不算高,難的是如何讓大部分的顯示卡都能顯示出光暈的特效,否則就變成曲高和寡了!


經過幾個星期的奮戰,心血總算沒有白費,如今只要在FancyDesigner裡簡單地按一個按鈕,就可以啟動光暈特效,看起來效果還真的蠻炫的!

(按圖放大)

2008年5月1日 星期四

welcome to the blog

這將是 FancyDesigner 研發團隊最完整與最權威的 Blog. 在這裡體驗ㄧ下 FancyDesigner 的故事。

This will be the most complete and most authoritative Blog for FancyDesigner development. This is for you to get the same walking-through Experience.