Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 11.04.2005, 16:43 Titel: großes ??? bei picking beispiel |
|
|
Ich sitze gerade über dem picking beispiel von Christian und habe da doch einige fragen zu.
wie interpretiere ich z.b. die Werte der Variablen dir und orig? Und müssten diese sich nicht verändern, wenn ich die Maus bewege?
Hier mal der Code wie ich es eingebunden habe:
CPP: | D3DXVECTOR3 CEInput::ReturnMousePosition3D(void)
{
POINT ptMousePos;
GetCursorPos(&ptMousePos);
ScreenToClient(m_HWND,&ptMousePos);
D3DXMATRIXA16 matProj;
m_lpDevice->GetTransform(D3DTS_PROJECTION, &matProj);
//Pick Vector konstruieren
D3DXVECTOR3 vecPick;
vecPick.x = ( ( ( 2.0f * ptMousePos.x ) / m_iScreenSizeX ) - 1 ) / matProj._11;
vecPick.y = -( ( ( 2.0f * ptMousePos.y ) / m_iScreenSizeY ) - 1 ) / matProj._22;
vecPick.z = 1.0f;
D3DXMATRIXA16 matView, matWorld, matMatrix;
m_lpDevice->GetTransform( D3DTS_VIEW, &matView );
m_lpDevice->GetTransform( D3DTS_WORLD, &matWorld );
matMatrix = matWorld * matView;
D3DXMatrixInverse( &matMatrix, NULL, &matMatrix );
D3DXVECTOR3 vecPickRayDir, vecPickRayOrig;
vecPickRayDir.x = vecPick.x * matMatrix._11 + vecPick.y * matMatrix._21 + vecPick.z * matMatrix._31;
vecPickRayDir.y = vecPick.x * matMatrix._12 + vecPick.y * matMatrix._22 + vecPick.z * matMatrix._32;
vecPickRayDir.y = vecPick.x * matMatrix._13 + vecPick.y * matMatrix._23 + vecPick.z * matMatrix._33;
vecPickRayOrig.x = matMatrix._41;
vecPickRayOrig.y = matMatrix._42;
vecPickRayOrig.z = matMatrix._43;
D3DXVec3Normalize(&vecPickRayDir,&vecPickRayDir);
D3DXVec3Normalize(&vecPickRayOrig,&vecPickRayOrig);
return vecPickRayDir;
} |
_________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.04.2005, 16:47 Titel: |
|
|
Ich vermute Dir meint die Richtung in die der Mauszeiger im 3D Raum zeigt und Orig die 3D Position relativ zur Cam/Bildschrim im 3D Raum.
Beide Werte sollten sich ändern. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 11.04.2005, 16:49 Titel: |
|
|
mit anderen worten, bei mir funktioniert irgendwas nicht... _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 11.04.2005, 17:49 Titel: |
|
|
Ah, bei mir schlägt diese Funktion fehl:
Code: | m_lpDevice->GetTransform(D3DTS_PROJECTION, &matProj |
Muss ich um GetTransform nutzen zu können im Vorfeld noch etwas anderes ausführen? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.04.2005, 18:19 Titel: |
|
|
Ich glaub man muss sein Device mir irgendwelchen Parametern erstellt haben, müsste im Doku stehen. Du könntest aber auch die Matritzen vorher irgendwo zwischenspeichern, dann brauchst du das nicht. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 11.04.2005, 21:00 Titel: |
|
|
Das Device darf, glaub ich, nicht PURE_DEVICE generiert worden sein.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 11.04.2005, 21:04 Titel: |
|
|
Kleiner Tipp:
Viele GraKas unterstützen einige Getter nicht wie z.B. das berühmte "GetViewPort". Deshalb immer zwischenspeichern und sich nicht dran aufhalten. Nebenbei: Holt man mit Get etwas von der GraKa in den RAM hat man doppelten unnötigen Bustransfer der auf die Performance geht. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 12.04.2005, 06:02 Titel: |
|
|
In meinem Fall lag es doch daran das ich das Ding als PureDevice hatte. Welche Lösung gibt es denn um die Get Abfrage nicht zu nutzen? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
|