2016-05-20 16 views
0

Gibt es einen "einfachen" Weg, um zu erkennen, ob sich zwei Objekte kreuzen, die nicht mit Cuboid verbunden werden können?Kollision in 3D implementieren

Ich benutze LWJGL-Bibliothek und wollte einfache Kollisionserkennung implementieren. Ich möchte JBullet nicht verwenden, weil es für meine aktuellen Fähigkeiten und Bedürfnisse zu schwierig ist, und leider haben meine Objekte unregelmäßige Formen, so dass ich die AABB-Kollisionserkennung nicht verwenden kann.

Ich habe Vertices von Objekten in Arrays gespeichert (geparst von. OBJ) Kennen Sie nicht einen Weg, um zu überprüfen, ob sie sich schneiden?

+0

Nein. Außerdem können Sie die AABB-Kollisionserkennung für jede Form verwenden, ob unregelmäßig oder nicht. – Serge

+0

Ok, aber die AABB Boxen sind selbst rechteckig und ich möchte mehr oder weniger die Form meines Objekts behalten. – Ch0mik18

Antwort

0

Sie können immer noch AABBs für grobe Kollisionen verwenden. Wenn Sie eine genauere Kollision haben möchten, können Sie diese vorgefilterten Entitäten überprüfen, aber es gibt keine wirklich "einfache" Möglichkeit, dies zu tun. Wenn Sie keine Bibliothek verwenden möchten, müssen Sie prüfen, ob ein Würfel die Scheitelpunkte eines anderen für alle möglichen Anordnungen von Formen enthält. Es sollte jedoch mit etwas Geometrie machbar sein.

0

Sie könnten eine Sammlung von AABBs, Kugeln und Zylindern verwenden, um die Form jedes Objekts anzunähern. Abhängig von der Komplexität des Modells kann ein erheblicher Arbeitsaufwand erforderlich sein, um die verschiedenen Kollisionsvolumina manuell zu definieren.

Ein Baum könnte einen Zylinder für den Stamm und eine Kugel für das Laub verwenden. Ein LKW könnte drei Würfel benutzen, einen für die Front, einen zweiten für die Kabine und einen dritten für das Bett. Eine Kollision zwischen den beiden würde gelöst werden, indem der Kofferraum und das Laub gegen die Front, die Kabine und das Bett des Lastwagens geprüft werden.