OldSchoolHack

Register / Login English

Falsche World2Screen Berechnung

icon Thread: Falsche World2Screen Berechnung

Join Date: Sep 2011

Posts: 11

Hi,
ich habe mal mit den von CS:S "bereitgestellten" X,Y,Z Koordinaten und Pitch / Yaw für alle Spieler versucht, die 3D Koordinate eines Gegners zu einer 2D Koordinate für den Bildschirm umzurechnen.
Folgende Funktion habe ich (teilweise) erstellt:
CPP Code:
  1. D3DXVECTOR3 *World2Screen(LPDIRECT3DDEVICE9 pDevice, D3DXVECTOR3 &vScreenCoord, D3DXVECTOR3 vEnemy)
  2. {
  3. if( !pDevice ) return NULL;
  4.  
  5. D3DXMATRIX matProj;
  6. float fAspect = (float)(1280) / 720;
  7. D3DXMatrixPerspectiveFovRH(&matProj, (float)(D3DX_PI/180*90), fAspect, 0.1, -1);
  8.  
  9. float *pX = (float*)(*(DWORD*)(Base)+0x60);
  10. float *pY = (float*)(*(DWORD*)(Base)+0x68);
  11. float *pZ = (float*)(*(DWORD*)(Base)+0x64);
  12. float *pitch = (float*)(*(DWORD*)(Base)+0x6C);
  13. float *yaw = (float*)(*(DWORD*)(Base)+0x70);
  14.  
  15. D3DXVECTOR3 vEye ( *pX, *pY, *pZ);
  16. D3DXVECTOR3 vTarget ( *pX + *yaw, *pY + (*pitch * -1), *pZ);
  17. D3DXVECTOR3 vUp ( 0, 0, 1 );
  18. D3DXMATRIX matView;
  19. D3DXMatrixLookAtRH( &matView, &vEye, &vTarget, &vUp);
  20.  
  21. D3DVIEWPORT9 viewPort;
  22. D3DXMATRIX identity;
  23.  
  24. pDevice->GetViewport( &viewPort );
  25. D3DXMatrixIdentity( &identity );
  26.  
  27. D3DXVec3Project(&vScreenCoord, &vEnemy, &viewPort, &matProj, &matView, &identity );
  28.  
  29. if(vScreenCoord.z < 1)
  30. return &vScreenCoord;
  31.  
  32. return NULL;
  33. }

Die Berechnung ist absolut falsch, seht selbst:

http://img7.imagebanana.com/img/z4bk0r00/fu1.png
http://img6.imagebanana.com/img/l03mfttv/fu2.png

Irgendwelche Ideen, oder CS:S spezifische Funktionen  ;o ?

Danke.