WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側(cè)重點(diǎn)還是在應(yīng)用開發(fā)上,雖然也有些游戲是用 WPF 開發(fā)的,不過,老周想啊,如果真要開發(fā)游戲,最好用專門的框架,WPF 應(yīng)當(dāng)用于開發(fā)應(yīng)用功能的。不過,動(dòng)畫、三維建模這些支持可以作為輔助,尤其是在 UI 上,適當(dāng)?shù)兀梢栽鰪?qiáng)一下。當(dāng)然,不要為了裝逼,弄得不倫不類的,那樣就是主次不分了,現(xiàn)在有不少軟件就是主次不分的。
在 WPF 中,要呈現(xiàn)三維模型,需要用到 Viewport3D ,它是三維對象的總?cè)萜?,所有三維對象都應(yīng)該放在這個(gè)容器中。本文老周不介紹三維對象的樹結(jié)構(gòu),而是重點(diǎn)說說 Viewport3D 的一個(gè)重要配件——照相機(jī)。
其實(shí),這個(gè)“照相機(jī)”,與我們現(xiàn)實(shí)世界中的照相機(jī)差不多,它是我們觀察三維模型的一個(gè)入口,就好比我們從真實(shí)相機(jī)中的取景器去觀察被攝對象一樣,由于相機(jī)的視角廣度有限(哪怕是廣角鏡頭也是有限的),現(xiàn)實(shí)的被攝物體可以無限延展,但是,你在取景器中看到的只能是局部。道理也是一樣的,在 WPF 的三維模型中,Camara 只是設(shè)定我們能看到三維對象的局部,而維對象本身也可能是無限延展的。
Viewport3D 對象有個(gè) Camera 屬性,用來設(shè)置一個(gè)合適的相機(jī)實(shí)例。照相機(jī)可以分為兩大類:
第一類,MatrixCamera,它通過一個(gè)矩陣來描述照相機(jī)的參數(shù),這個(gè)估計(jì)用得不多,因?yàn)橥?fù)雜的,反正老周是不知道怎么用的。
第二類,ProjectionCamera,即帶投影透視效果的照相機(jī),它派生出兩款相機(jī),注意啊,不是佳能和尼康,是 PerspectiveCamera 和 OrthographicCamera。PerspectiveCamera相機(jī)比較好解,因?yàn)樗菐敢曅Ч?,這也符合我們靈長目類動(dòng)物的視覺特征——離得近的物體看起來會(huì)大一些,離得遠(yuǎn)的物體會(huì)小一些,當(dāng)然了,前提是物體大小接近,不然,這太陽比月球大太多了,所以,哪怕太陽離我們更遠(yuǎn),看起來也比月亮大。而 OrthographicCamera 呢,它不太符合咱們靈長目動(dòng)物的視覺特征,因?yàn)槭褂眠@個(gè)照相機(jī)后,所視物體就變成了正交,即不存在透視效果,沒有距離之別,不管遠(yuǎn)的還是近的,都一樣大。人要是能做到像正交鏡頭這樣就好了,不管親疏都一視同仁。有時(shí)候,人真的還不如代碼友好,因?yàn)橛行┤藭?huì)算計(jì)你,但代碼不會(huì),雖然有時(shí)候,代碼會(huì)耍性子,讓你又愛又恨,但是,它待你是真誠的,而人呢,也許只有少部分人能做得到,社會(huì)太缺誠信。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26