Präzise EntityCollision

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Präzise EntityCollision

Beitrag von FosJonas »

Guten Tag,

Ich habe ein Problem mit der Hauseigenen Physik Engine von Purebasic, wenn ich 2 Entities (Eine Höhle und ein Cube) auf Collisionen Prüfen, dann gibt dies, sobald der Cube in der Höhle ist immer 1 zurück, auch wenn eigentlich gar keine Collision stattfindet.
Ich habe schon alle Arten des EntityPhysicBodies ausprobiert, allerdings hat nichts diesen Effekt verhindert.

Sollte ein PhysicBody mittels #PB_Entity_StaticBody nicht eigentlich eine Präzise Collision hervorrufen?

Da dies ja nicht so zu sein scheint, gibt es vielleicht eine Möglichkeit trotzdem eine entsprechend Präzise Kollision zwischen 2 Entities auszuführen? (Also eine die tatsächlich auf dem Mesh basiert und nicht nur eine Box darum legt)

Wäre dankbar für jede Hilfe.
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Präzise EntityCollision

Beitrag von STARGÅTE »

Soweit ich das verstehe ist #PB_Entity_StaticBody nur für sich nicht bewegende (statisch) Körper.

Wenn du zwei Körper aufeinander fliegen lassen willst, dann solltest du lieber #PB_Entity_ConvexHullBody verwenden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Re: Präzise EntityCollision

Beitrag von FosJonas »

Wie gesagt, ich habe schon alle Kombination ausprobiert, alle erstellen letztendlich nur eine sehr unpräzise Hülle, die vielleicht bei einem Terrain Funktioniert, nicht aber bei einer Höhle .

Das erste Entity ist im Prinzip das Terrain, bewegt sich also auch nicht. Das 2. Entity hat nur ne ganz normale Box. Diese Box soll dann sozusagen sich durch die Höhle bewegen können und entsprechend mit den Wänden dort Kollidieren. Aber genau das geht ja nicht, die Kollision erfolgt (egal mit welchem PhysicBody) sobald ich die Höhle betrete, völlig egal ob die Meshes mit einander Kollidieren.

Die Frage ist letzendlich also, ob es möglich ist eigene PhysicBodies zu erstellen oder eben sowas in der Art.
Bzw. kann man irgendwie die Faces eines Meshes auslesen und dann selber eine Physic Routine schreiben?
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Präzise EntityCollision

Beitrag von DarkDragon »

Probier mal das Terrain aufzutrennen, sodass du das "Dach" jeder Höhle in einem Mesh ablegst und den Rest in einem anderen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Re: Präzise EntityCollision

Beitrag von FosJonas »

Ich habe jetzt mal Probeweise die Wände und das Dach entfernt, sodass nur noch der Boden da war.
Und auch hier ist die Collision viel zu ungenau um damit was anfangen zu können (Sowohl mit StaticBody als auch mit ConvexHull getestet).
Testweise habe ich auch mal nen Würfel drauffallen lassen und da sieht man ganz gut das der teilweise Meterweit über dem Mesh abprallt.

Gibt es eigentlich Physicengine alternativen die sich auch unter Linux leicht einbinden lassen?
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
Antworten