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

Aktuelle Zeit: Di Mär 19, 2024 08:01

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: So Mär 24, 2019 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Hi,

ich versuche gerade, mit dem vom Tutorial beschriebenen (ebenfalls anhand des Papers von peroxide.dk) Swept-Sphere Algorithmus zu verwenden. Nun - irgendwie bereitet mir der Algorithmus Kopfweh. Denn entweder hab ich etwas grundlegendes nicht verstanden oder ich mache etwas gewaltig falsch - oder beides. Was ich möchte: Ganz normal mit FPS sicht durch meine 3D Welt laufen. Einfach ein Gang mit Boden, Wänden und Decke. Zum Problem:

Ich habe mein Level und habe eine Wand vor mir. Diese Wand besteht aus 2 Dreiecken. Ich laufe dagegen und gleite brav an der Wand entlang bis - tja bis alles schief geht. Nämlich dann, wenn die Kollisions-Erkennung eine Kollision mit einer Kante feststellt. Dann geht die Kamera entlang der Kante nach oben. Ich rede hier von der diagonalen von links-unten nach rechts-oben, die nunmal existiert, wenn man 2 Dreiecke zu einer Rechteckigen Wand zusammen baut.

Es macht ja auch irgendwie Sinn, dass es so passiert. Ich habe mir die Werte ausgeben lassen. Mit meiner Kamera-Einstellung (Höhe Y=0.9) hat der Vector, der mitteilt wo die Kollision geschieht, im Y-Wert brav seine 0.9, solange ich mit der Fläche des Polygons kollidiere. Geschieht die Kollision aber auf der Kante, dann ist der Y Wert ein anderer: nämlich die Position auf der Länge der Kante und nicht mehr die Y Position in meinem Welt-Koordinaten System. (Liegt da bereits der Fehler oder ist das beim Swept-Sphere normal?). Wenn ich nun eine schräge Kante hab, ist das ja gewollt. Denn dann laufe ich diese auch entsprechend hoch. Aber bei einer Wand will ich doch nicht hochlaufen. Sondern es soll normal weitergehen und sich genau so verhalten, als würde ich mit der Fläche des Polygons kollidieren: brav mit Y auf der Höhe 0.9 (also - so lange der Boden auf gleicher Höhe bleibt, versteht sich - in meinem Fall auf 0).

Auch wenn ich nach unten teste, für Gravitation, funktioniert das so lange, bis ich beim Laufen eine Kante zwischen 2 Dreiecken passiere. Dann hüpft die Kamera wild herum an dieser Stelle (also entweder nach oben oder nach unten). Wo liegt der Fehler? Muss da noch etwas zusätzlich berechnet werden? Oder hab ich da etwas falsch verstanden an meiner Vorgehensweise?

Oder ist das gar der Falsche Algorithmus für das, was ich möchte? Verwendet man für eine 1st Person Kamera etwas anderes?

Wäre echt dankbar für Tipps. Sitze bereits den ganzen Sonntag an diesen bescheuertem Problem. :-(

Gruß
Marc

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 19 Queries | GZIP : On ]