做項目一年,雖然說沒有學得很好,但一年來,自己學的東西也比較多,也有了一些經驗,正如我前面說的現在沒有事做就多寫,等過兩天就不會有這麼多的時間了,項目一開始,那可就沒有多少時間了。
我做的那個項目是地質相關的項目,就會有一些必不可少的圖形的顯示,二維方面老師自己做的非常好了,但在3D方面大家都沒有什麼經驗,就只有靠自己去摸索了,在自己摸索的過程中,最頭疼的就是沒有資料,在就是問別人沒有一個人回答你,問了別人還被說成叫自己去按書一步一步敲例子,把人都氣死,好了,我現在就將我在學習的時候遇到的兩個困擾我兩個月的問題寫出來,供大家參考,也請大家多交流。
說到平移,就不得不說到兩種投影模式,一種是平行映射模式,另一種是透視投影模式。
所謂平行投影模式,就是將模型上的每一點,都垂直投射到屏幕上,注意是直接。不考慮模型與屏幕的距離遠近,投射在屏幕上時都與實際大小相同。而透視投影就與我們平時的視角比較接近,物體符合“近大遠小”的視覺習慣。就是下圖
這一種形式就是我們在所有的現有資料中用的模式,是不是,可是大家有沒有想過,如果我把投影模式換成平行方式會怎麼樣呢?
// 透視投影 device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, (float)this.Width / this.Height, min, max); // 正交投影 device.Transform.Projection = Matrix.OrthoLH(this.Width, this.Height, min, max);
這個也恰恰就是關鍵所在,只是換一下投影模式就可以了,達到非常好的平移效果,現在想想,原來為了達到eyeshot的那種鼠標移動的功能我足足看那種效果幾個小時,現在想想卻一分錢也不值,現在感謝林銳博士,因為就是看他的程序我才解決這個問題的,現在放上他的程序,注意在用的時候,一定要注意要選擇平行投影模式,否則是不會達到我說的效果的。明天就寫平移,那個可不是一下子就說的好的。