我正在嘗試執行各種3D結構的簡單透視投影,這些3D結構定義爲多個3D多邊形(不同的z),每個3D多邊形(包含多個點)。該結構將通過我定義的許多不同的相機進行查看。這些相機的定義是在我的世界座標中放置一個世界相機(眼睛)在(0,0,z),看(0,0,0)和向上(0,1,0),並通過阿爾法旋轉世界軸關於x軸),β(約y)和伽瑪(約z),從而爲該特定相機創建本地座標系統。 [我意識到我可以用OpenGL做到這一點,但我想嘗試自己做並理解它,而不是使用黑盒]用於透視投影的相機旋轉
我的全局相機的基礎是使用矢量u,v和w定義的其中w =(眼睛外觀).normalised =(0,0,1); u = up.cross(w)=(1,0,0)和v = w.cross(u)=(0,1,0)
我正在使用齊次座標,所以我的轉換矩陣爲u_dashed, v_dashed,w_dashed看起來如下:
T(px,py,pz)= [1,0,0,px; 0,1,0,py; 0,0,1,pz; 0,0,0 ,1]和R = [U,0; v,0; W,0; 0,0,0,1]
所以把他們放在一起我得到
率Tr = T(眼的樣子)其中R'是R的轉置,並且R_zyx是組合的正向旋轉矩陣(world =>局部座標) 然後,我將正交投影矩陣(O)與透視變換矩陣(P)(http://www.cs.uu.nl/docs/vakken/gr/Slides/06-projection.pdf)來確定組合變換:
C = O X P X [Tr的
最後PROJ =(C X 4Dpoint),並執行透視分割即(proj.x/proj.w,proj.y,pro.w)
或者我會更好地確定每個相機的座標,即R_zyx x [0; 0; z; 1]和u,v和w by Rzyx x [ux,vx,wx,0; uy,vy,wy,0; uz,vz,wz,0; 0,0,0,0]?
...在那裏一個問題嗎? – moonshadow 2009-12-02 13:45:15
耶忘了:它現在在那裏! – 2009-12-02 13:55:49