XNA开发思考之3D开发中的小常识
PS:個人學習總結,轉載請著明出處
????? 在XNA的3D開發中,時常要涉及到坐標系統和攝象機的一些參數。同時還有矩陣的變化來在3維世界里的移動。
????? 在二維世界里的坐標系統里,使用x,y坐標來表示一個點在坐標系統中的位置。電腦屏幕就是一個2維坐標系統。而在三維坐標系統中,引入了z坐標來表示物體距離的遠近。下面將介紹2種三維坐標系統:左手坐標系和右手坐標系。
???
?????? 在左手坐標系統中,使用左手來確定三維坐標系統。如圖所示,左手四指彎曲,拇指四指垂直,那么四指彎曲的方向就是x坐標軸(正方向)繞向y坐標軸(正方向);拇指所指的方向是z坐標軸的正方向。而使用右手確定的坐標系也如此:四指彎曲的方向就是x坐標軸(正方向)繞向y坐標軸(正方向)的方向;拇指所指的方向是z坐標軸的正方向。從以上兩個圖可以看出,兩種坐標系不同的地方就是z坐標軸的方向。左手坐標系中z軸離我們而去,右手坐標系迎我們而來。
??? 使用左手坐標系,可以保證永遠使用正的z值來表示距離,在遠也沒有關系。這也是符合日常習慣的。然而在XNA開發中的3D坐標系,實際上應該是上圖的右圖,
左手坐標系的z軸正向與你眼睛看顯示器方向相同,右手則相反. 舉個例子,假如你的眼睛和顯示器連成一條線,在左手坐標系里,顯示器端是z,眼睛端是-z;在右手坐標系里,顯示器是-z,眼睛是正z.
???? ?在三維坐標中觀察世界時,需要確定以下幾個問題:
??? 1.在哪個位置觀察:需要使用坐標來表示這個觀察點的準確位置,這個坐標是在計算機的世界坐標系中的值。
??? 2.向哪個方向觀察.
??? 3.對于觀察者來說,代表上方的方向。如同我們頭的上部是相對于我們的上方,當我們頭向下看世界時,就會看到倒立的世界。在計算機三維世界中也是同樣的道理,我們得指定我們的上方是哪個方向,才能看到正確的三維世界。
???? 當上面幾個問題確定以后,實際上就可以建立一個以觀察者為圓心的三維坐標系,就把它稱作觀察坐標系吧。把原來世界坐標系中的所有物體的坐標轉換為觀察坐標系中的坐標以后,就可以知道每一個三維物體相對于我們的位置了。
??????? 下面在來介紹下三維透視轉換
??? 在顯示器屏幕上顯示的都是平面圖形,不管他們是否具有三維的效果。計算機的三維世界最終需要顯示在平面的屏幕上。在真實的世界中,我們可以看到空間中的任意景物,就是因為從景物發出或者反射的光線能夠進入我們的眼睛,從而形成圖象。在計算機的三維世界中,要看到景物,必須通過前面說過的攝象機。可以想象攝象機是我們觀察計算機中三維世界的窗口,要想看到景物,景物發出或者反射的光線必須能夠通過攝象機的鏡頭。三維透視就是如何把三維世界的景物進行透視轉換,形成可以在電腦屏幕上顯示的平面圖形。
轉載于:https://www.cnblogs.com/315358525/archive/2009/07/15/1524240.html
總結
以上是生活随笔為你收集整理的XNA开发思考之3D开发中的小常识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中Collections常用方法
- 下一篇: scala初学之helloWorld