OldSchoolHack

Register / Login English

World2Screen failed


icon World2Screen failed #1

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Moin, ich bin mal wieder an der World2Screen am verzweifeln. Erstmal der code, danach erklär ich mein Problem.
CPP Code:
  1. void AngleVectors(const Vector &angles, Vector *forward, Vector *right, Vector *up)
  2. {
  3. float angle;
  4. static float sr, sp, sy, cr, cp, cy, cpi = (M_PI/180);
  5.  
  6. angle = angles.y * cpi;
  7. sy = sin(angle);
  8. cy = cos(angle);
  9. angle = angles.x * cpi;
  10. sp = sin(angle);
  11. cp = cos(angle);
  12. angle = angles.z * cpi;
  13. sr = sin(angle);
  14. cr = cos(angle);
  15.  
  16. if(forward)
  17. {
  18. forward->x = cp*cy;
  19. forward->y = cp*sy;
  20. forward->z = -sp;
  21. }
  22.  
  23. if(right)
  24. {
  25. right->x = (-1*sr*sp*cy+-1*cr*-sy);
  26. right->y = (-1*sr*sp*sy+-1*cr*cy);
  27. right->z = -1*sr*cp;
  28. }
  29.  
  30. if(up)
  31. {
  32. up->x = (cr*sp*cy+-sr*-sy);
  33. up->y = (cr*sp*sy+-sr*cy);
  34. up->z = cr*cp;
  35. }
  36. }
  37. //---------------------------------------------------------------------------
  38. bool WorldToScreen ( Vector viewangles, Vector mypos, const Vector WorldLocation, float *fScreenX, float *fScreenY)
  39. {
  40. Vector vLocal, vTransForm, vForward, vRight, vUpward;
  41.  
  42. AngleVectors(viewangles, &vForward, &vRight, &vUpward);
  43.  
  44. vLocal = WorldLocation - mypos;
  45.  
  46. vTransForm.x = vLocal.dotproduct(vRight);
  47. vTransForm.y = vLocal.dotproduct(vUpward);
  48. vTransForm.z = vLocal.dotproduct(vForward);
  49.  
  50. if(vTransForm.z < 0.01)
  51. return false;
  52.  
  53. *fScreenX = screencenter[0] + (screencenter[0]/vTransForm.z * (1/90)) * vTransForm.x;
  54. *fScreenY = screencenter[1] - (screencenter[1]/vTransForm.z * (1/90)) * vTransForm.y;
  55.  
  56. return true;
  57. }
So, nun habe ich aber das Problem, dass vTransform.x und vTransform.y immer 0 sind, und das ganze daran scheitert. Wenn man sich mal die AngleVectors Funktion anschaut, können die beiden ja auch nur 0 werden.

CPP Code:
  1. angle = angles.z * cpi;
  2. sr = sin(angle);
  3. cr = cos(angle);
  4. if(right)
  5. {
  6. right->x = (-1*sr*sp*cy+-1*cr*-sy);
  7. right->y = (-1*sr*sp*sy+-1*cr*cy);
  8. right->z = -1*sr*cp;
  9. }
  10.  
  11. if(up)
  12. {
  13. up->x = (cr*sp*cy+-sr*-sy);
  14. up->y = (cr*sp*sy+-sr*cy);
  15. up->z = cr*cp;
  16. }
angle.z ist der roll, und der ist für gewöhnlich in css 0. Dadurch werden sr und cr auch 0.
right->x = (-1*sr*sp*cy+-1*cr*-sy): (-1*0*sp*cy+-1*0*-sy) Folglich ist right.x 0 und so folgt es bei den anderen werten für right und up. Liegt es also an mienen Funktionen, oder ist das beabsichtigt, das right und up immer 0 sind? Falls es an mir liegt, was mache ich denn falsch?
Greetz Manta

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #2

Join Date: Aug 2007

Posts: 8646

User-Rating:

199 positive
33 negative
in CSS funktioniert die Berechnung nicht. Am einfachsten hastes da, wenn du mit dem arbeitest, was dir die Engine zu verfügung stellt.

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Ich benutz auch die engine w2s, nur seit dem letzten update funktioniert sie irgendwie nicht bei jedem seitenverhältnis anständig. Hat das Problem noch wer? Also bei mir auf 16:9 1920x1080 läuft es 1a, aber bei nem Kollegen, der auf 16:10 1650xschießmichtot spielt, ist alles total verschoben.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #4

Join Date: Jun 2012

Posts: 18

CPP Code:
  1. bool WorldToScreen( const Vector &vOrigin, Vector &vScreen ){
  2. if( ScreenTransforme(vOrigin , vScreen) == false ){
  3. int iScreenWidth, iScreenHeight;
  4. g_pEngine->GetScreenSize( iScreenWidth, iScreenHeight );
  5. float x = iScreenWidth / 2;
  6. float y = iScreenHeight / 2;
  7. x += 0.5 * vScreen.x * iScreenWidth + 0.5;
  8. y -= 0.5 * vScreen.y * iScreenHeight + 0.5;
  9. vScreen.x = x;
  10. vScreen.y = y;
  11. return true;
  12. }
  13. return false;
  14. }

ich bin mir nicht sicher ob dat noch funktioniert.
Die Renderview funktion bei CSS hatte sich beim letzen Update geändert
icon #5

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Ja die Engine World2screen Nutz ich ja auch allerdings scheint diese seit dem Update von vorgestern nicht bei jedem Seitenverhältnis so recht zu funktionieren.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #6

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
wahrscheinlicher ist, dass deine screenwidth/height bei deinem mate nicht richtig ausgelesen werden, lass die mal ausgeben und gucks obs immer stimmt, auch bei den exotitschen seitenverhältnissen.

wahrscheinlich haste da i-was erwischt, was nur im windowmode sich richtig aktualisiert, oder sonstwas.

wenn du dx gehookt hast, kannste dir aus der device die aktuelle height/width holen.

__________________

http://www.abload.de/img/signfj5o.png
Spoiler
Vids:
Zitate:
Spoiler

Quote from xst
Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit.
Quote from f4gsh0t_h4x
VAC ist an,immer,überall
Quote from gibson.w
Ich mag braune Würstchen
Quote from irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Quote from irc
<OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ...
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
Quote from irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Quote from irc
<~KN4CK3R> dann liegts wenigstens an mir
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)
Quote from Dr_Pepper
ihr seit beide dumm
Tutorials:
Releases:
Gifs:
Spoiler
http://www.abload.de/img/uberesp2sgul2.gif
https://i.imgur.com/Z5VQMrV.gif
http://www.abload.de/img/minesweeperzgaef.gif
icon #7

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Habs hinbekommen. Danke Silver für deinen Tipp :* Ich hol mir jetzt die Auflösung über GetWindowRect und jetzt klappt es.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg