Kollisionserkennung bei animierten und beweglichen Modellen?

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Kollisionserkennung bei animierten und beweglichen Modellen?

Beitrag von Eisflamme »

Hallo,

Ich habe mir Mal ein paar Artikel zu Kollisionserkennung durchgelesen. Collision Spheres, AABBs, OBBs und so Trees dazu erscheinen ja eigentlich ganz interessant.

Jetzt habe ich aber Mal weitergedacht. Was, wenn man ein animiertes Modell oder ein bewegliches oder beides hat?

Bei Animationen müsste man ja irgendwie alle Boxen entsprechend zu den Meshes oder Modellteilen binden und diese dann genau so mitbewegen wie das Objekt selbst. Das ist bei Rotationen dann aber ziemlich aufwändig, oder? Sagen wir z.B. ich habe ganz viele wild rotierende Objekte in meinem Spiel (warum auch immer). Dann müssen ja die ganzen Boundingboxen lustig mitrotieren. Während ich für ein Objekt nur eine Matrix pro Frame neu erstellen muss, die dann natürlich sin/cos nutzt, habe ich bei den Boxen ja für alle Boxen jeweils die Rotationsberechnungen.

Oder ich richte die jeweils inneren Boxen relativ zu der übergeordneten Box mit Vektoren aus. Dann rotiere ich nur einmal die Vektoren und kann die anderen Boxen relativ dazu berechnen. Wäre es dann nicht auch schlau, die Berechnung der inneren Boxen auf den Zeitpunkt zu verlagern, wo eine Kollision mit der äußeren Box bereits statt gefunden hat? Dürfte ja einiges an Zeit sparen.

Hm, eigentlich reicht für eine BoundingBox doch auch ein einziger Vektor für die Achsen, der neu berechnet werden muss. Wichtig ist aber irgendwie, dass alle Teile eines Modells die sich bewegen können (z.B. ein Arm) auf alle Fälle eine eigene BB erhalten, sonst ist das ja witzlos, hm...

Nagut und bei beweglichen Objekten, die auch lustig hin- und her rotieren, ist es dann letztlich das gleiche wie bei animierten Modellen.

Habt ihr irgendein Stichwort, wozu ich was suchen kann, bzw. habt ihr sonst irgendwelche guten Ideen für so was im Kopf?

Viele Grüße

PS: Ich glaube, ich sollte erstmal animierte Objekte korrekt benutzen können. ^^
pUnkOuter
Establishment
Beiträge: 303
Registriert: 15.04.2002, 15:59

Re: Kollisionserkennung bei animierten und beweglichen Model

Beitrag von pUnkOuter »

Hmmm, ich hab immer gedacht, nach erfolgreichem Schneiden der ersten BoundingBox/Sphere kommt gleich ein Kollisionscheck mit der Geometrie. Aber vielleicht ist so ein "Kollisions-Mesh" gar keine so dumme Idee. Du könntest ja einfach das normale Mesh viel gröber nachmodellieren, genauso animieren wie das detaillierte, und dann mit diesem zuerst noch checken. Oder gleich nur mit diesem, wenn die Genauigkeit reicht.
Ein Zeiger ins Blaue ist wie ein Wegweiser nach <SEGFAULT>. Wenn du denkst, mein Name hat was mit abgefuckter Kleidung und bunten Haaren zu tun, dann kehr besser um.
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Re: Kollisionserkennung bei animierten und beweglichen Model

Beitrag von Eisflamme »

Genau. Das Genauigkeitslevel kann man dann ja bestimmen, wie man lustig ist. Ich glaube, wenn schon eine BB-Kollision auftritt, kann man ruhig in der Hierarchie etwas runter gehen. Aber auf Polyebene direkt... weiß nicht.

Gut, aber dieses Mitdrehen von den Boxen war jetzt halt so mein Problem. Wird das denn üblicherweise so gemacht, dass man einfach nur einen Vektor dreht und die Unterboxen der Box so ausrichtet? Aber das funktioniert eigentlich nicht, wenn die Unterboxen andere Achsen benutzen, was sie ja vermutlich tun.

Oder man sagt, dass Level 1 und 2 des BB-Baums OBBs haben, also sich so ausrichten, wie se lustig sind, aber um dann Rechenzeit für die Berechnung zu sparen, sind untergeordnete Boxen dann in der gleichen Ausrichtung wie die übergeordnete OBB. Das könnte man je Modell ja dynamisch festlegen.

Was meint ihr?
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Kollisionserkennung bei animierten und beweglichen Model

Beitrag von kimmi »

Ich würde eine Bouding-Box-Hiererchie aufbauen:
-> Große BB um das Modell ( zum Beispiel eine Sphere )
verweist auf:
-> OBB um die einzelnen animierten Meshes um dein animiertes Modell.
verweist auf
-> Einzelne Faces des animierten Meshes.
Kollisionsmodell per Sphere ermitteln, welches Mesh per OBB ermitteln, beteiligte Trianles dann per Triangle-gegen-Ray / whatever Test.

Gruß Kimmi
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Re: Kollisionserkennung bei animierten und beweglichen Model

Beitrag von Eisflamme »

Das gefaellt mir sehr gut, dann habe ich auch drei verschiedene Kollisionstest, was eine prima Uebung ist. Danke! :)
Antworten