Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.11.2005, 13:25

Umfassende Kollisionserkennung

Hallo

Kennt jemand eine Quelle, bei denen restlos alle Kollisionsarten zwischen AABB, OBB, BoundingSphere, Ray und Triangle abgedeckt werden? Sowohl im Buch von Scherfgen als auch in dem von Zerbst werden nur einige Auswahlen behandelt. Auch wenn dies wahrscheinlich diejenigen sind, welche man am meisten verwendet, möchte ich doch in meiner Kollisionsbibliothek alle möglichen Kollisionen drin haben. Ich konnte zwar alle diese Methoden programmieren, leider aber die meisten nur durch geometrische Überlegungen. Deshalb sind sie zum Teil sehr langsam. Was ich suche sind geschwindigkeitsoptimierte Algorithmen.

Danke schon im Voraus

mfg Hitman

Anonymous

unregistriert

2

15.11.2005, 14:32

Ich kenn eine Quelle:
Hirnschmalz + Mathebuch = Lösung ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

15.11.2005, 19:57

Man kann dann aber nicht erwarten, dass die Lösung auch so effizient ist wie die Algorithmen, die schon seit zig Jahren bekannt sind und immer weiter optimiert werden.

http://www.google.de/search?q=3d+collision+detection

Anonymous

unregistriert

4

16.11.2005, 12:20

Wie schon erwähnt: Ich habe für alle möglichen Paarungen Methoden, welche funktionieren (programmiert mithilfe von Gehirnschmalz und Mathebuch ;) ). Aber wie David richtig erkannt hat, sind diese zum Teil sehr langsam.

Danke für den Link... Habe bisher immer nur nach 'collision' gesucht. Und da finden sich dann einige hunderttausend Seiten.

mfg Hitman

5

16.11.2005, 16:07

Habe da was gefunden (für diejenigen, welche sich dafür interessieren):

http://www.geometrictools.com/Intersection.html

Hat so ziemlich alles und noch mehr :-)

mfg Hitman

6

16.11.2005, 22:07

Gibt es irgendwo ne Implementierung für nen Sphere-Triangle-Kollisionstest? Ich such da schon so lange nach aber ich find einfach nichts.
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

16.11.2005, 22:30

Ja wenn ein Punkt des Dreiecks in der Kugel ist ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

8

16.11.2005, 22:32

Schön wärs, wenn's so einfach wäre. Aber die Kugel kann auch im Dreieck liegen, ohne dass ein Eckpunkt in der Kugel liegt. Und das Dreieck kann in der Kugel drinliegen.
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

16.11.2005, 23:02

Wenn das Dreieck drinne ist, dann sind alle Punkte innerhalb der Kugel ;) Der andere Fall ist zwar möglich und ich habe mir auch schon Gedanken darüber gemacht, dass es unwarscheinlich ist das eine Kugel kleiner als ein Dreieck ist in einem Modell.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

16.11.2005, 23:10

Man möchte aber schon eine Lösung, die immer funktioniert.

Ich würde es so machen (das ist nicht getestet!):
1. Prüfen, ob einer der Eckpunkte in der Kugel liegt. Falls ja => Schnitt
2. Prüfen, ob eine der Dreiecksseiten die Kugel schneidet. Falls ja => Schnitt
3. Prüfen, ob die Dreiecksebene die Kugel schneidet. Falls ja: bestimme den Schnittkreis, den die Kugel mit der Ebene bildet. Jetzt ist der Fall schon etwas einfacher, weil man nur noch in zwei Dimensionen arbeiten muss (Dreieck schneidet Kreis).
Wenn vorher schon ausgeschlossen wurde, dass
- kein Eckpunkt in der Kugel liegt und
- keine Seite die Kugel schneidet,
dann sollte der Schnittkreis nur noch komplett im Dreieck oder komplett außerhalb des Dreiecks liegen können. Jetzt müsste es ausreichen, einfach zu testen, ob der Mittelpunkt des Schnittkreises im Dreieck liegt. Falls ja, dann schneiden sich Kugel und Dreieck.

Ansonsten: Kein Schnitt!

Werbeanzeige