的目標是讓在投影攝像機屏幕上的三維空間中的點(最終目標是產生一個點雲)3D圖形 - 矢量數學,我似乎得到一些錯誤
這是設置:
相機 現在的位置是:PX,PY,PZ 上行方向:UX,UY,UZ look_at_direction:LX,LY,LZ SCREEN_WIDTH SCREEN_HEIGHT screen_dist
點在空間: p =(X,Y,Z)
而且
初始化U,V,W
w = || position - look_at_direction || = || (px,py,pz) - (ux,uy,uz) ||
u = || (ux,uy,uz) cross-product w ||
v = || w cross-product u ||
這使我的U,V,W的相機COORDS。
這是我應該實施的步驟,以及我理解他們的方式。我相信翻譯中丟失了一些東西。
(1)求從照相機至點
射線我減去與攝像機的位置
ray_to_point = P上的點 - 位置
(2)計算的內積將光線照射到屏幕的中心(照相機方向),並將標準化的光線照射到屏幕的中心。將結果除以sc_dist。 這會給你一個點的距離和相機屏幕距離之間的比例。
比=(ray_to_point * W)/ screen_dist
這裏我不知道我應該使用w或原來的樣子,在攝像機或瓦特載體,其爲在相機空間的單位矢量的值。 (3)將光線除以步驟2中找到的比例,並將其添加到相機位置。這會給你在相機屏幕上的投影點。 point_on_camera_screen = ray_to_point /比
(4)求攝像機的屏幕的中心和投影點之間的矢量。 我應該找到屏幕的中心像素嗎?我怎樣才能做到這一點?
謝謝。
screen_coords = projection_matrix * modelview_matrix * your_vector_in_3d_space(可能是回到前面) – 2013-06-19 09:24:37