mauskoordinaten in weltkoordinaten umwandeln - DirectX
-
Hallo zusammen,
ich beschäftige mich nun seit einigen Tagen damit, Picking in mein DirectX Programm zu implementieren. Mittlerweile habe ich, da es in meinem eigentlichen Programm nicht zu funktionieren scheint, ein neues kleines Projekt mit einer cpp Datei erstellt. Hier dachte ich jetzt, mir die Hintergründe des Pickings einfach und anschaulich (ein Strahl wird gezeichnet) anzueignen... tja, bin wohl zu blöde :p
D3DXMATRIX matProjtest, matViewtest, matWorldtest, mtest; D3DXVECTOR3 vtest; D3DVIEWPORT9 viewporttest; g_pd3dDevice->GetTransform( D3DTS_PROJECTION, &matProjtest ); g_pd3dDevice->GetTransform( D3DTS_VIEW, &matViewtest ); g_pd3dDevice->GetTransform( D3DTS_WORLD, &matWorldtest ); g_pd3dDevice->GetViewport( &viewporttest); POINT ptCursor; ptCursor.x = (int)mousePos.mx; ptCursor.y = (int)mousePos.my; ScreenToClient( hWnd, &ptCursor ); vtest.x = ( ( ( 2.0f * mousePos.mx ) / viewporttest.Width ) - 1 ) / matProjtest._11; vtest.y = -( ( ( 2.0f * mousePos.my ) / viewporttest.Height ) - 1 ) / matProjtest._22; vtest.z = 1.0f; mtest = matWorldtest * matViewtest; D3DXMatrixInverse( &mtest, NULL, &mtest ); rayDirection.x = vtest.x*mtest._11 + vtest.y*mtest._21 + vtest.z*mtest._31; rayDirection.y = vtest.x*mtest._12 + vtest.y*mtest._22 + vtest.z*mtest._32; rayDirection.z = vtest.x*mtest._13 + vtest.y*mtest._23 + vtest.z*mtest._33; rayOrigin.x = mtest._41; rayOrigin.y = mtest._42; rayOrigin.z = mtest._43;Das ist der Code, mit dem ich meine Mauskoordinaten umwandeln möchte.
Nun meine Fragen:
1. Ist es richtig, dass rayOrigin mit dem Punkt übereinstimmt, an dem die Kamera sitzt?
2. Leider bekomme ich für rayDirection nur Nullen als Ergebnis - kann mir jemand einen Hinweis darauf geben, woran das liegen könnte?
3.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-79059-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-pick-and-start-is-0.html
Hier ist von einem Bild die Rede, welches TGGC hochgeladen hatte - kann mir das eventuell noch einmal jemand (besonders TGGC
) zur Verfügung stellen?Besten Dank schon mal im Voraus für jegliche Anregungen!
-
Ich hab das Bild nicht mehr, aber ich denke, ich weiss wie es aussehen muesste, evtl. kann ich bei Gelegenheit nochmal Paint anschmeissen. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
Das wäre schön, lass Dich aber nicht stressen.
..hat sonst jemand eine Idee, was ich generell falsch gemacht haben könnte? Irgendwas stimmt doch da mit meinen Matrizen nicht, oder?

-
Ok, hab das Original gefunden: http://www.games-net.de/hosted/tggc/trash/raypick.jpg f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
He,
vielen Dank!
..mittlerweile funktioniert es, aber ich habe noch Fragen zur Mathe und zum Vorgehen dahinter - werde mir aber erstmal das Bild angucken, vielleicht hilft das ja auch schon. Danke nochmal.