在WPF應用程式加入3D模型
3D是WPF的一項功能特色,WPF在底層仍然使用DirectX技術,但我們使用時並不需要撰寫DircetX的API程式,在WPF中已將DirectX包裝為Visual3D類別…
要在WPF應用程式裡使用3D物件並不是什麼問題,問題是要如何將3D物件繪製出來?我想對於我們這種寫程式的人而言,這是一個蠻頭痛的問題。老實說,光靠Blend 2或Visual Studio是畫不出3D物件的(不是真的畫不出來,而是很難..很難..很難..)基本上3D模型是以一個個三角形所組成的,光是要組成一個矩形就需要定義4個點,每個點必須有(X,Y,Z)三個數值,然後分別將這4個點分別畫出兩個三角形,再將這兩個三角形組成一個矩形。因此要做出一個正方形需要8個點來繪製出12個三角形,然後再將這12個三角形組合起來才能成為一個3D物件,而將點分別連接成為三角形時還得要注意連接的順序為逆時針(背面)或順時針(正面),光是這樣拆解步驟下來,相信沒有人會想不開,打算以XAML來編寫3D物件吧?而很不幸的,Blend對3D的支援除了顯示之外,在製作3D模型方面也和直接撰寫XAML差不了多少!(您可以下載F16.rar這個範例來檢視XAML的內容,看完你應該也不會想要用手動鍵入的方式建立3D模型)
因此在製作3D模型這方面,我們只能透過其它的軟體來進行,如果你懂得使用3DS之類的軟體那當然最好,如果不會也沒關係,網路上多的是免費的3D模型可以下載,我就直接以網路上下載回來的3D模型為例來說明:
從網路上下載3D模型後,只要將3D模型轉換為Blend 2可以使用的格式即可(.obj),網路上大部分的3D模型都是3DS格式,但不管你是以3DS Max或3D Exploration等等軟體來進行轉換都無所謂,只要能將模型檔案轉為Wavefront的.obj格式就可以了!
接著只要將轉換出來的.obj以及.mtl(材質檔)在Blend 2中加入專案中,直接由Blend的方案面板將.obj檔案拖曳到工作區上就行了!
執行的結果--範例動畫(F16.rar)
這個範例我只是簡短地製作了3秒鐘的動畫,不過與一般的2D動畫比較起來,感覺上就是有所不同,在Silverlight 3宣稱將加入3D功能時,我想製作3D模型的方法大概也和WPF差不多,所以熱愛Silverlight的朋友們大概可以著手學習3DS了,除非Microsoft Expression打算再開發一個3D繪圖軟體,否則使用其它3D繪圖軟體來匯出.obj,再由Blend讀取的模式大概是製作3D模型比較好的方法!