JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=2443f223c0ec3bdf27c0728d3e0aee2cMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

großes ??? bei picking beispiel

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 11.04.2005, 16:43    Titel: großes ??? bei picking beispiel Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.04.2005, 16:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 11.04.2005, 16:49    Titel: Antworten mit Zitat

mit anderen worten, bei mir funktioniert irgendwas nicht... Confused
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 11.04.2005, 17:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.04.2005, 18:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 11.04.2005, 21:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 11.04.2005, 21:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 12.04.2005, 06:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 12.04.2005, 06:24    Titel: Antworten mit Zitat

Eine Kopie der gesetzten Matrizen, Renderstates, Texturestates und co anlegen im RAM
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum