2017-03-07 18 views
0

私は逆の方法を知っています。 (バッファからz-dephを読み込み、unPjojectを使用してください):OpenGL、ポイントの座標からZdepth値を取得する方法

(...) 
glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth) 
gluUnProject(x, y, depth, view_matrix, projection_matrix, viewport, world_x, world_y, world_z) 

return world_x, world_y, world_z 

どうすればいいですか? 私はworld_xworld_yworld_zの値を持っています。どうすればdepthになるのですか?

答えて

0

私たちは、今、私たちはz componentを正規化する必要がある(Z値が間にある-1および1)いくつかの愚かなために

z_depth = prj.z/proj.w 

w component

prj = perspective_matrix * Vector((world_x, world_y, world_z, 1.0f)) 

を2Dおよび取得するためにベクトルを変換する必要があります理由は、OpenGLでは[0,1]の範囲に移動する必要があります。

z_depth = (z_depth + 1)/2 

あります。

関連する問題