Jump to content
  • Advertisement
Sign in to follow this  
Glatzemann

DirectXMath / DirectXCollision BoundingFrustum

This topic is 2047 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi guys,
 
I'm trying to do some frustum culling using DirectXMath' BoundingFrustum and BoundingBox classes.
 
Construction of the BoundingBoxes is looking good. I'm using DirectXTK's PrimitiveBatch to do some debug Output. Projection and View matrices are looking right too, because the rendering of the scene ist fine.
 
I've tried to different ways to construct the frustum:
 
BoundingFrustum frustum( XMLoadFloat4x4A(&proj) );
frustum.Transform(frustum, XMLoadFloat4x4A(&view) );
 
and the other one is
 
BoundingFrustum frustum( XMMatrixMultiply( XMLoadFloat4x4A(&view), XMLoadFloat4x4A(&proj) ) );
 

The matrices are both Left-Handed as DirectXCollision is LH only. To be sure I tried RH matrices too but it doesn't change the result (I'm able to Switch using preprocessor directives).
 
To check the BoundingBox I'm using the Intersects-Method of the BoundingFrustum class.
 
When using the first approach to construct the frustum nothing is displayed at all because all boxes are culled.
 
When using the second approach everything looks fine until I move the camera. When camera is moved the view Matrix is recalculated and after that the BoundingFrustum too. I've checked this in the Debugger. When rotating the camera it looks like the left and right sides are on the wrong side. When rotation approx. 45° around the Y-Axis everything is culled.
 
Has someone used the BoundingFrustum class to do frustum culling? Does someone know what I'm doing wrong?
 
Thanks in advance...

Share this post


Link to post
Share on other sites
Advertisement
I think I've solved the problem myself. The working one is the following:
using namespace DirectX;
BoundingFrustum tmp( XMLoadFloat4x4A(&proj) );
XMVECTOR det;
tmp.Transform(frustum, XMMatrixInverse( &det, XMLoadFloat4x4A(&view) ) );
I had to use the INVERSE view matrix for transformation...

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • 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!