Jump to content
  • Advertisement
davegl1234

3D near and far z values from worldviewprojection

Recommended Posts

Hi, 

In direct3D (DX9), I am wondering if I have the worldviewprojection matrix and the world matrix if its possible to extract the near and far z values that you would use to construct the projection matrix (i.e the zn and zf parameters here  :https://docs.microsoft.com/en-us/windows/desktop/direct3d9/d3dxmatrixperspectivefovlh)

From what I can gather, if i have the inverse of the viewprojection I should be able to multiply it by corner points on the near and far planes (e.g {-1, -1, 0, 1} and {-1, -1, 1, 1}) and get the corner points in world space. In the examples I have seen, divide my w and the resulting z values would give me zn and zf. Is this correct or am I misunderstanding something here?

I would find the inverse of the world matrix, multiply it by the worldviewprojection to give the viewprojection, and then invert that?

I haven't managed to get anything close to what I am after, attempting the above, however, just wanted to check the theory actually makes sense.

Cheers

Dave

 

Share this post


Link to post
Share on other sites
Advertisement

You only want the projection matrix not the viewProjection. But in principle, yes, just apply the inverse projection to the corners of the NDC and divide by the resulting w (you may need to flip the sign as well). Don't forget that the resulting w may be 0 if it is a projection matrix with zf=infty.

Share this post


Link to post
Share on other sites
3 hours ago, l0calh05t said:

u only want the projection matrix not the viewProjection. But in principle, yes, just apply the inverse projection to the corners of the NDC and divide by the resulting w (you may need to flip the sign as well). Don't forget that the resulting w may be 0 if it is a projection matrix with zf=infty.

Ah ok. That's unfortunate, as I have access to neither the view, worldview, or projection matrix. I may need to try a different approach. Thanks anyway

Share this post


Link to post
Share on other sites
11 hours ago, davegl1234 said:

Whilst opengl, this seems to imply inverse viewprojection should work, doesnt it? 

https://stackoverflow.com/questions/33436963/most-accurate-way-to-calculate-view-frustum-corners-in-world-space

No, it does not. Think about the following: Do zn and zf vary if the camera moves? The z component of the view frustum corners in world space do vary when the camera moves.

Edited by l0calh05t

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!