Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 14:08

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Berechnung des Blickvektors
BeitragVerfasst: Di Nov 15, 2005 20:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Hi ...

Ich bastel gerade an einem kleinen Ego-Shooter-mäßigen Programm, in dem ich mit Partikeln herumschießen will.
Bis jetzt klappt alles ganz gut, die Partikel fliegen auch schön, nur leider nur annähernd in die richtige Richtung ;)

Den Blickvektor berechner ich derzeit über:
Code:
  1.  
  2. x = -sinf(rotY);
  3. y = sinf(rotX);
  4. z = -cosf(rotY);
  5.  


Allerdings ist diese Rechnung vollkommen falsch, da der Partikel dann auch nach forne fliegt, wenn ich nach oben schaue ... und das ist nicht gerade Sinn der Sache ;)

Kann mir da evtl jemand erklären wie ich an den genauen Blickvektor komme???

schonmal Danke im Voraus ...
Gruß
Shai

achja, ich programmier in C++ ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 15, 2005 22:11 
Offline
DGL Member

Registriert: Di Jun 22, 2004 17:40
Beiträge: 51
Wohnort: Aachen
ich dachte bis jetz in opengl drehst du die welt um dich :shock:
demnach müsstest du einfach den partikel richtung (0,0,z) verschieben.

oder vertuh ich mich da jetz komplett? :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 15, 2005 22:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Hi ...

Die Z-Achse verschiebt sich ja auch durch diverse transformationen und rotationen, da reicht das nicht ... und ich schalte nicht jedes mal wieder in die identity-matrix bevor ich was neues zeichne ...

naja, wie dem auch sei ... habs jetzt rausbekommen ...

Und zwar habe ich die Berechnung einfach aus der Frustum-Klasse genommen ...
Dort ist der Blickvektor ja als Normalenvektor der front-Plane enthalten ...

Die Rechnung sieht jetzt also so aus:
Code:
  1.  
  2. // matrix-transformationen für gesamte szene vornehmen ...
  3.  
  4. float projM[16],modM[16];
  5. glGetFloatv(GL_PROJECTION_MATRIX,projM);
  6. glGetFloatv(GL_MODELVIEW_MATRIX,modM);
  7.  
  8. float proj = projM[10] + projM[11];
  9. m_vView.Set(modM[ 2] * proj + modM[ 3] * projM[14],    // x-Koordinate
  10.                modM[ 6] * proj + modM[ 7] * projM[14],    // y-Koordinate
  11.                modM[10] * proj + modM[11] * projM[14]);    // z-Koordinate
  12. m_vView.Normalize();
  13.  
  14. // rendern ...
  15.  


Wenn jemand allerdings noch eine bessere Möglichkeit hat, würde ich mich darüber freuen, wenn er sie hier posten könnte ...

Gruß
Shai


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 10:13 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Du musst nur die Winkel ins Bogenmaß umrechnen ;) Also rotX * Pi / 180.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 15:14 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Ich glaube er redet nicht vom rendern, sondern von der Richtung, in die er schießt. Wenn ja, dann is der Code auch fast richtig, hast nur ne Kleinigkeit vergessen:

Code:
  1.  
  2. x = -sinf(rotY) * cosf(rotX);
  3. y = sinf(rotX);
  4. z = -cosf(rotY) * cosf(rotX);
  5.  


Wenn du jetzt nach oben guckst, dann is y = sinf(rotX) = 1 und die x und z Komponenten werden mit cosf(rotX) = 0 multipliziert.

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Hi ...

danke für den Tip.
Ich habe mal einen Test gemacht und da ist meine Variante allerdings ein klein wenig schneller, erst recht wenn sich die Winkel vergrößern werden sin und cos langsamer, da handelt es sich aber nur um etwa 1/10000s bis 3/10000s differenz ;)

Gruß
Shai


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 20:01 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Da du das Frustrum wohl sowieso berechnest, is dein Weg natürlich raffiniert. Nur das funzt nicht mehr so ganz, wenn du Bots hast, die auch feuern. Weiß ja nicht, was genau du geplant hast. Für die müsstest du es dann mit den Winkelfunktionen machen. Und ich denke 3/10000 sec pro Spieler kann man noch gerade eben so verkraften...

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 22:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Das denke ich auch ;)
und von Bots bin ich noch weit entfernt ... ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 16, 2005 23:15 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Erstmal kommt Doom3 ohne Bots ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 17, 2005 00:25 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenns was vorzeigbares gibt, kannst du ja mal was posten. Aber den Hinweis mit den Bots solltest du ernst nehmen, sonst hast du später Mehrarbeit und das nervt...

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 19, 2005 01:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Ja da hast du recht, aber ich weiß garnicht ob ich Bots will, da ich eigentlich vor hatte das als ein fun-lan-game aufzubauen, aber das kann sich auch alles noch ändern *g*


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]