WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側(cè)重點還是在應(yīng)用開發(fā)上,雖然也有些游戲是用 WPF 開發(fā)的,不過,老周想啊,如果真要開發(fā)游戲,最好用專門的框架,WPF 應(yīng)當(dāng)用于開發(fā)應(yīng)用功能的。不過,動畫、三維建模這些支持可以作為輔助,尤其是在 UI 上,適當(dāng)?shù)兀梢栽鰪娨幌?。?dāng)然,不要為了裝逼,弄得不倫不類的,那樣就是主次不分了,現(xiàn)在有不少軟件就是主次不分的。

在 WPF 中,要呈現(xiàn)三維模型,需要用到 Viewport3D ,它是三維對象的總?cè)萜?,所有三維對象都應(yīng)該放在這個容器中。本文老周不介紹三維對象的樹結(jié)構(gòu),而是重點說說 Viewport3D 的一個重要配件——照相機。

其實,這個“照相機”,與我們現(xiàn)實世界中的照相機差不多,它是我們觀察三維模型的一個入口,就好比我們從真實相機中的取景器去觀察被攝對象一樣,由于相機的視角廣度有限(哪怕是廣角鏡頭也是有限的),現(xiàn)實的被攝物體可以無限延展,但是,你在取景器中看到的只能是局部。道理也是一樣的,在 WPF 的三維模型中,Camara 只是設(shè)定我們能看到三維對象的局部,而維對象本身也可能是無限延展的。

Viewport3D 對象有個 Camera 屬性,用來設(shè)置一個合適的相機實例。照相機可以分為兩大類:

第一類,MatrixCamera,它通過一個矩陣來描述照相機的參數(shù),這個估計用得不多,因為挺復(fù)雜的,反正老周是不知道怎么用的。

第二類,ProjectionCamera,即帶投影透視效果的照相機,它派生出兩款相機,注意啊,不是佳能和尼康,是 PerspectiveCamera 和 OrthographicCamera。PerspectiveCamera相機比較好解,因為它是帶透視效果的,這也符合我們靈長目類動物的視覺特征——離得近的物體看起來會大一些,離得遠的物體會小一些,當(dāng)然了,前提是物體大小接近,不然,這太陽比月球大太多了,所以,哪怕太陽離我們更遠,看起來也比月亮大。而 OrthographicCamera 呢,它不太符合咱們靈長目動物的視覺特征,因為使用這個照相機后,所視物體就變成了正交,即不存在透視效果,沒有距離之別,不管遠的還是近的,都一樣大。人要是能做到像正交鏡頭這樣就好了,不管親疏都一視同仁。有時候,人真的還不如代碼友好,因為有些人會算計你,但代碼不會,雖然有時候,代碼會耍性子,讓你又愛又恨,但是,它待你是真誠的,而人呢,也許只有少部分人能做得到,社會太缺誠信。

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式