Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17825

Ray casting Picking

$
0
0
Ive converted some code from opengl and need someone to look over the code to see if there are any mistakes. Im in Directx 11 with a LH coordinate system. GetPickRay( float sx, float sy, float fov, float width, float height ) { float d = 1.0f/IvTan(fov*kPI/360.0f); float aspect = width/height; Vector3 viewPoint( 2.0f*aspect*sx/width - aspect, -2.0f*sy/height + 1.0f, d ); viewPoint = mViewToWorldMatrix.TransformPoint( viewPoint ); return viewPoint - mEyePoint; } OnMouseDown(WPARAM btnState, int x, int y) { mLastMousePos.x = x; mLastMousePos.y = y; Vector3 ray = GetPickRay( (float) x, (float) y, 45.0f,(float) mClientWidth,(float)mClientHeight ); // compute intersection with z=0 plane float t = -mEyePoint.z/ray.z; mClick = mEyePoint + t*ray; moveIT = XMMatrixTranslation(mClick.x,mClick.y,mClick.z); SetCapture(mhMainWnd); } Vector3 mUp(0.0f,1.0f,0.0f); Vector3 view = Vector3(0.0f,0.0f,0.0f) - mEyePoint; Vector3 right; Vector3 viewUp; view.Normalize(); right = view.Cross( mUp ); right.Normalize(); viewUp = right.Cross( view ); viewUp.Normalize(); Matrix33 rotate; //almost similar to a view matrix accept no negating eye point and dotting with uvw rotate.SetRows( right, viewUp, view ); mViewToWorldMatrix.Rotation(rotate); // set translation (eye position) mViewToWorldMatrix(0,3) = mEyePoint.x; mViewToWorldMatrix(1,3) = mEyePoint.y; mViewToWorldMatrix(2,3) = mEyePoint.z;

Viewing all articles
Browse latest Browse all 17825

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>