Thursday, November 20, 2008

Direct3D Pick Ray

void GetPickRay2(int x, int y, DX::Vector3 %orig, DX::Vector3 %dir){
 DX::Matrix proj = device->Transform->Projection;

 DX::Vector3 nearVec(x, y, 0), farVec(x, y, 1);

 nearVec.Unproject(viewport, proj, 
  device->Transform->View,
  device->Transform->World);
 farVec.Unproject(viewport, proj, 
  device->Transform->View,
  device->Transform->World);

 orig = nearVec;
 farVec.Subtract(orig);
 dir = farVec;
}


Here x and y are in client co-ordinates.

CLIENT.
CO-ORDINATES.


DON'T.
EVER.
FORGET.
THAT.

No comments:

About Me

My photo
C/C++ Programmer doing CAD on Windows. Some web development experience. Bangalorean.

Blog Archive

Labels