kollision mit Boundig Boxen
-
Hallo erstmal.
ich benutze DX9 und habe nun in einer Ebene verschhiedene Rechtecke diese möchte ich auf Kollisionen überprüfen.
Die Rechtecke sind die Umrandungen von jeweils 2 Vertizen (so ne art Sprite).
Da ich diese aber auch drehe, d.h. um die Z-Achse rotiere ist mein Problem nicht ganz so trivial wie ich es in den Tutorials finde.
meine Idee ist die, das ich die Strecken der Rechtecksseiten auf schnittpunkte untersuche und somit kollisionen finde.
Da ich aber anschliessend eine Pixlegenaue kollisionsprüfung machen möchte
( ich hab da was über bitmasken gelesen) muss ich in diesem Schritt auch gleich Schnittfläche der sich überlappenden Rechtecke herausfinden.
MEINE EIGENTLICHE FRAGE:
1: ist das ein gängiges bzw. praktikables vorgehen?
2: Ist das zu umständlich für eine Vorprüfung(vor der Pixelgenauenkollisionserkennung)?
3: kennt irgendwer ein besseres Verfahren?nun ja es wäre toll wenn ihr mir da irgendwie weiterhelfen könntet
muli
-
Hm, soweit ich weiß wird eine Pixelgenaue Kollisionsabfrage eher selten Praktiziert. Sie ist zwar 100% exakt, allerdings benötigt sie für heutige Prozessoren noch viel zu viel Rechenzeit, die mehr für Grafikdarstellung, KI Berechnung ect. verwendet werden sollte.
Ich habe mal von einer Methode gehört, wo die einzelnen objekte (Welche Quadrate sind, also bounding box technisch) in kleinere Quadrate unterteilt werden - das so genannte "Quadtree verfahren".
Dadurch wird die Fehlerqoute etwas gesenkt. Wenn man die aufgeteile Bounding box jetzt etwas kleiner macht, als das Objekt dürfte der Fehler kaum, bis gar nicht mehr auffallen.
-
Pixelgenaue Kollision ist doch ehh beknackt. Oder kannst du dafür sorgen, das sich jeweils nur 1 Sprite um 1 Pixel bewegt? Sonst ist nix mit pixelgenau. f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
-
TGGC schrieb:
Pixelgenaue Kollision ist doch ehh beknackt. Oder kannst du dafür sorgen, das sich jeweils nur 1 Sprite um 1 Pixel bewegt? Sonst ist nix mit pixelgenau. f'`8k
Warum sollten sich die Sprites nur um einen Pixel bewegen dürfen?
-
Nein, tun sie nicht, aber sie bewegen sich in den meissten Fällen um reelle Zahleneinheiten. Also z.B. 2.3 Pixel. Auf dem Bildschirm etc...ist das per SubPixel realisiert.
Um nicht zuviel scheisse zu reden:
Deine Grafik sollte von der Logik unabhängig sein. Die Darstellung ändert sich, dadurch sollte sich aber nicht das verhalten ändern !
Nimm also einfach ein Kollisionsmesh und rechne damit.
-
was so ein Kollisionsmesh ist muss ich noch herrausfinden, für mich scheint aber die Sache mit den Quadtrees gut geeignet zu sein.
Danke für eure anregungen
muli
-
Ein Kollisionsmesh ist einfach ein Mesh der weniger Polygone enthält aber noch einigermaßen genau genug ist um die Form des Originals anzunähern.
Ich denke, dass es klar ist, dass man diesen für den Kollisionstest verwendet..
-
Das mit den Quadtrees macht man natürlich auch. Trotzdem brauchst du ja einen Algo um auf Kollision zu testen. Also nimmst du dir halt einfach ein modell was ungefähr so aussieht wie dein Pixelmensch und testest damit. Den Quadtree kannst du übrigens auch erst später einbaun. Bei 2D sollten das 3 Zeilen sein

-
the-coder schrieb:
TGGC schrieb:
Pixelgenaue Kollision ist doch ehh beknackt. Oder kannst du dafür sorgen, das sich jeweils nur 1 Sprite um 1 Pixel bewegt? Sonst ist nix mit pixelgenau. f'`8k
Warum sollten sich die Sprites nur um einen Pixel bewegen dürfen?
Weil es dann nicht pixelgenau ist. f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
-
ChaosAngel schrieb:
Nimm also einfach ein Kollisionsmesh und rechne damit.
Hallo? Der Meister arbeitet in 2D!! Und natürlich kann er da eine Pixelgenaue Kollisionserkennung machen.
Tipp: Nimm als initialen Kollisionstest einfach zwei Kreise, Und mach dann einen pixelgenauen Test (bitwise AND), falls sich die Kreise schneiden.
Gruss, Gast
-
an Gast25250: Recht hast du.
Ich nehme aber keine Kreise sondern Rechtecke.naja egal
wenn diese sich überschneiden müsste ich dann am besten die Schnittfläche ausrechnen um nicht immer für alle Pixel zu prüfen sondern nur die in der überschnittenen Fläche, ODER ist das auwendiger als alle Pixel zu prüfen?danke an alle und diskutiert ruhig weiter...
Ich sauge aufmerksam all euer Wissen ab.
bis ich eines Tages...
muli
-
hi
ich denke das könnte dir weiterhelfen
http://uk.geocities.com/olivier_rebellion/Polycolly.zip
meiner meinung nach das beste kollisionssystem überhaupt.Gruss Tony