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:
x = -sinf(rotY);
y = sinf(rotX);
z = -cosf(rotY);
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???
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:
// matrix-transformationen für gesamte szene vornehmen ...
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:
x = -sinf(rotY) * cosf(rotX);
y = sinf(rotX);
z = -cosf(rotY) * cosf(rotX);
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
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
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
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
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*
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.