2013-07-10 175 views
1

Im在計算頂點的屏幕座標時遇到問題。這不是一個特別的webgl問題,更多的是一個普通的3d圖形問題。webgl - 模型座標到屏幕座標

矩陣變換的那Im使用序列爲:

result_vec4 = perspective_matrix * camera_matrix * model_matrix * vertex_coords_vec4

model_matrix作爲一個頂點的在其本地座標系中的變換到全局場景座標系統。 所以我的理解是,最終result_vec4是在剪輯空間?這應該在[-1,1]範圍內。這不是我得到的結果... result_vec4最終只包含一些coords的標準值,並不對應於頂點的正確屏幕位置。

沒有人有任何想法可能是什麼問題嗎? 非常感謝你的任何想法。

回答

1

要轉到剪裁空間,你需要在超平面w=1項目result_vec4使用:

result_vec4 /= result_vec4.w 

通過應用這個角度劃分result_vec4.xyz將在[-1,1]。

+0

result_vec4.w有一些「!= 1」值?當你說「......提供一個能實現這個目標的perspective_matrix」時,我也不清楚你的意思。非常感謝你的回答:) – deepblue

+0

@deepblue result_vec4.w有一些「!= 1」值?這是否在投影(分區)之後發生?如果是這樣的話,特別是如果編譯器預先計算1/w,那麼可能會發生,然後使用產品。但值應該接近1.f。我將刪除令人混淆的「提供一個透視圖矩陣,實現如此」 –

+0

我問的「!= 1」問題令人困惑。一切都很好,並按我的預期工作。我只是認爲'w'會有1的價值,所以我很困惑爲什麼我們應該用1來分割......但那不是價值,所以它是有效的。謝謝你的回答,你幫了很多:)最好。 – deepblue