Worldtoscreen sau caseta de dezvoltare esp

WorldToScreen sau dezvoltare cutie esp

Bună tuturor, pentru o lungă perioadă de timp încercând să dau seama ce reprezintă setul de valori, sau mai degrabă matricea necesară pentru traducerea player 3D poziție pe ecran 2D.
găsit cu succes valoarea corectă pentru 80+ CSS, dar pentru o lungă perioadă de timp în căutarea pentru această matrice, trebuie doar să-l găsesc la întâmplare.
Deși despre și în mod clar că trebuie să existe valori ale proiecției, camera jucătorului, nu este clar care dintre cele 16 care este aceea.
Am adus întreaga matrice bidimensională pe ecran (float Mass [4] [4] De fapt, este o parte a structurii în memoria jocului), dar asta nu e de mare ajutor, cu excepția faptului că la date ori a devenit rapid actualizat.
Pe scurt, spune-mi care este în căutarea pentru modul în care toate aceste valori, ce funcții de traducere folosind. Foarte primul studiu funcție.
Sunt conștient de, aici sunt câteva, pot exista și dumneavoastră:

Flip, restructurat de mine pentru utilizare în d3d:

bool WorldToScreen (float * de la, float * a)

la [0] = MyPlayer.WorldToScreenMatrix.flMatrix [0] [0] * de la [0] + MyPlayer.WorldToScreenMatrix.flMatrix [0] [1] * de la [1] + MyPlayer.WorldToScreenMatrix.flMatrix [0] [2] * de la [2] + MyPlayer.WorldToScreenMatrix.flMatrix [0] [3];
la [1] = MyPlayer.WorldToScreenMatrix.flMatrix [1] [0] * de la [0] + MyPlayer.WorldToScreenMatrix.flMatrix [1] [1] * de la [1] + MyPlayer.WorldToScreenMatrix.flMatrix [1] [2] * de la [2] + MyPlayer.WorldToScreenMatrix.flMatrix [1] [3];
w = MyPlayer.WorldToScreenMatrix.flMatrix [3] [0] * de la [0] + MyPlayer.WorldToScreenMatrix.flMatrix [3] [1] * de la [1] + MyPlayer.WorldToScreenMatrix.flMatrix [3] [2] * din [ 2] + MyPlayer.WorldToScreenMatrix.flMatrix [3] [3];

dacă (w <0.01f)
return false;

float invw = 1.0f / w;
la [0] * = invw;
la [1] * = invw;

int width = viewP_ESP.Width;
int înălțime = viewP_ESP.Height;

float x = lățime / 2;
float y = înălțimea / 2;

x + = 0.5 * până la [0] * latime + 0,5;
y - = 0.5 * până la [1] * înălțime + 0,5;

la [0] = x + / * WindowRect.left * / viewP_ESP.Height;
la [1] = y + / * WindowRect.top; * / viewP_ESP.Width;

D3DXVECTOR3 WorldToScreen (D3DXVECTOR3 in)
D3DXVECTOR3 afară, temp;

D3DXVec3Subtract (temp, în, InvViewTranslation);
float x = D3DXVec3Dot (temp, InvViewRight);
float y = D3DXVec3Dot (temp, InvViewUp);
float z = D3DXVec3Dot (temp, InvViewForward);

out.x = ViewPortMatrix.x * (1 + (x / ProjD1.x / z));
out.y = ViewPortMatrix.y * (1 - (y / ProjD2.y / z));
out.z = z;

bool WorldToScreen (INPOS D3DXVECTOR3, D3DXVECTOR3 outpos, LPDIRECT3DDEVICE9 pDevice)


DWORD dwRenderData = (DWORD) GetModuleHandleA ( "engine.dll") + 0x3B5260;
CRenderData * RenderData = (CRenderData *) (dwRenderData);

D3DXVECTOR3 vScreen;
D3DVIEWPORT9 g_ViewPort;

pDevice-> GetViewport (g_ViewPort);
g_ViewPort.X = g_ViewPort.Y = 0;
g_ViewPort.MinZ = 0;
g_ViewPort.MaxZ = 1;
D3DXVec3Project (vScreen, INPOS, g_ViewPort,
RenderData-> RenderData-> ProjectMatrix,
RenderData-> RenderData-> ViewMatrix,
RenderData-> RenderData-> WorldMatrix);

în cazul în care (vScreen.z <1.0f && vScreen.x> 0.0f vScreen.y> 0.0f vScreen.x outpos.x = vScreen.x;
outpos.y = vScreen.y;
outpos.z = vScreen.z;

Prea flip, dar sortsy pe COD4:

// Grabs coordonatele noastre 3D și le schimbă în 2d pentru noi să se joace cu
// ------------------------------------------------ ---------------------------
/ * Bool ESP_WorldToScreen (Vect3d WorldLocation, Vect3d mypos)
Vect3d vLocal, vTransForm;
vForward = new Vect3d ();
vRight = new Vect3d ();
vUpward = new Vect3d ();

ESP_AngleVectors ();
vLocal = ESP_SubVectorDist (WorldLocation, mypos);

vTransForm.x = vLocal.dotproduct (* vRight);
vTransForm.y = vLocal.dotproduct (* vUpward);
vTransForm.z = vLocal.dotproduct (* vForward);

în cazul în care (vTransForm.z <0.01)
return false;

ScreenX = screencenter [0] + (screencenter [0] / vTransForm.z * (1 / FOV [0])) * vTransForm.x;
ScreenY = screencenter [1] - (screencenter [1] / vTransForm.z * (1 / FOV [1])) * vTransForm.y;

Re: WorldToScreen sau cutie de dezvoltare esp

nu aveți o înțelegere corectă a matricelor. Amintiți-vă de clasa 10-11 - în orice omit lecții trigonometria, începe cu un simplu. moymu matrice bidimensional, iar apoi toți vor înțelege. Nu scotoci în matricile. dar calculele înțelege cum și de ce independent de evaluare și dimensiunea imaginii afișate pe ecran, sau dacă doriți doar pentru a înțelege cum să calculeze coordonatele traducerii în 2d 3d - atunci cunoscut sub numele de matrice nu are nevoie să lucreze la toate

articole similare