WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側重點還是在應用開發(fā)上,雖然也有些游戲是用 WPF 開發(fā)的,不過,老周想啊,如果真要開發(fā)游戲,最好用專門的框架,WPF 應當用于開發(fā)應用功能的。不過,動畫、三維建模這些支持可以作為輔助,尤其是在 UI 上,適當地,可以增強一下。當然,不要為了裝逼,弄得不倫不類的,那樣就是主次不分了,現在有不少軟件就是主次不分的。

在 WPF 中,要呈現三維模型,需要用到 Viewport3D ,它是三維對象的總容器,所有三維對象都應該放在這個容器中。本文老周不介紹三維對象的樹結構,而是重點說說 Viewport3D 的一個重要配件——照相機。

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

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

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

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

 

延伸閱讀

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