Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Intersection Checking

This topic is 5755 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

Hmmm. Need some help with my intersection checking code. At the mo it sort of works, in that I''m printing the hit/miss value to the screen and it does alternate between 1 and 0, but it''s all just a bit out (like object is in a slightly different postion/rotated a bit. My intersection code is as follows

int MeshInterSectionCheck(LPD3DXMESH pMesh)

	D3DXVECTOR3 vecRay, vecDir;
	D3DXMATRIX  matProj, matView;

	g_pd3dDevice->GetTransform(D3DTS_PROJECTION, &matProj);
	g_pd3dDevice->GetTransform(D3DTS_VIEW,		 &matView);

	D3DXMatrixInverse(&m, NULL, &matView);

	v.x =  ((( 2.0f * g_Mouse_pos_x) / g_Screen_width ) - 1) / matProj._11;
	v.y = -((( 2.0f * g_Mouse_pos_y) / g_Screen_height) - 1) / matProj._22;
	v.z = 1.0f;

	vecRay.x = m._41;
	vecRay.y = m._42;
	vecRay.z = m._43;
	vecDir.x = (v.x*m._11) + (v.y*m._21) + (v.z*m._31);
	vecDir.y = (v.x*m._12) + (v.y*m._22) + (v.z*m._32);
	vecDir.z = (v.x*m._13) + (v.y*m._23) + (v.z*m._33);

	BOOL Hit;
	DWORD Face;
	float texU, texV, Dist;

	D3DXIntersect(pMesh, &vecRay, &vecDir, &Hit, &Face, &texU, &texV, &Dist);

	return Hit;
This is mostly from Programming RPGs with DirectX, so Jim Adams, If your about, some help would be gratefuly received. btw. the mesh is defined as...
LPD3DXMESH              g_pMesh          = NULL;
and created like this...
    if( FAILED( D3DXLoadMeshFromX( "firstplane.x", D3DXMESH_SYSTEMMEM, 
                                   g_pd3dDevice, NULL, 
                                   &pD3DXMtrlBuffer, &g_dwNumMaterials, 
                                   &g_pMesh ) ) )
I don''t really understand the maths around creating the ray so having trouble debugging. The screen width height value are 800/600 and the mouse values range from 0 to these values (that seems a bit obvious now i''ve typed it but there you go) Help

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!