Reicht nur Intersection als Kollisionsabfrage
-
Gibts ein Unterschied zwischen hull und boundingbox?
Komplexe Shapes zu simplifizieren durch Primitives ist klar.Aber ich kann doch dann die Methoden benutzen oder?
Teilweise stellt sich mir auch die Frage, warum muss alles Kollidieren,
ich renne ja auch nich gegen eine Wand, ich sehe sie, und sie kommt näher,
ich bleib davor stehen und renne da nich erst gegen.oder was ist mit sowas:
+-------+ |\ +-+ | | \ |\| | | \+-+ | | \ | | \ | | \ | | \| +-------+
dürfte hier sicher interessant sein, rauszufinden ob die sich schneiden.
Leider beschäftigen sich kaum SpieleProgrammierungs Bücher mit dem Thema.
Obwohl es ja ein wichtiger bestandteil ist. Aber das wird wohl der Grund sein,
warum die meisten mit sowas anfangen wie, Raumschiff im Weltraum.Erstmal reicht mir ja etwas einfaches, will erstmal nur druch einen Raum laufen.
Dafür wirds ja hoffentlich reichen.
-
Was genau kann ich mir unter einem diskreten Objekt vorstellen?
Darf es sich nur nicht schnell bewegen oder muss es fix sein?
Oder ist das was ganz anderes?
-
Hi,
diskret meint in diesem Zusammenhang, dass die Otto-Normal-Intersection Tests die man überall im Internet findet mit der konkreten Transformation des Objektes arbeiten. Sprich man betrachtet einen konkreten Zeitpunkt und kein Zeitintervall.
In der Regel reicht das aus, so lange ein Objekte nicht so klein oder so schnell ist, dass es sich von einem Frame zum anderen komplett durch ein anderes hindurchbewegt. Denn dann versagt die diskrete Kollisionsabfrage weil es im Frame n und im Frame n+1 keine Kollision gibt. Lediglich im Zeitraum dazwischen ...
Wichtig ist das hauptsächlich bei Kollisionsabfragen für Projektile oder in Physiksimulationen.
Ciao,
Stefan
-
Lassen sich so schnelle Objekte überhaupt realisieren?
Projektile sind ja ein bischen sehr schnell, wenn es sich, sagen
wir von frame 0 zu frame 1 schon 10Meter bewegt hat, wie soll ich darauf
noch reagieren und das dann noch visualisieren, dann bräucht ich schon
eine sehr hohe Framerate oder?So richtig vorstellen kann ich mir das nicht.
Oder hab ich da nen Denkfehler?
-
Du musst zwischen "Grafik-Frames" und "Logik-Frames" unterscheiden. Das Thema hatten wir bereits ein paar mal im Forum. Such mal nach Dingen wie "logic tick", "Zeitunabhaengige Bewegung" und dergleichen.
Jedenfalls, der Trick ist der: du musst dich fragen, kann ein Objekt von einem Logik-Tick sprich "von einem aufruf der game-logik", also Objekte Bewegen, Kollisionserkennung, etc.) zum Naechsten "durch" ein anderes Objekt bewegen. Eben bei Projektilen ist das sehr gut moeglich. Und du kannst dann ja nicht einfach sagen "tja, das Projektil ist von Frame 0 zu Frame 1 von Meter 0 auf Meter 10 gesprungen, also hat es das Objekt bei Meter 5 einfach nicht getroffen, Pech gehabt". Deshalb musst du das Problem irgendwie loesen, und dann brauchst du mehr als nur die Funktionen, die DirectX dir bietet.
-
Hi,
nein man braucht nicht mehr als DirectX einem bietet. Jedenfalls nicht für solche Probleme. Man muss den Test eben nur gut durchdenken. Im Fall eines Projektils zieht man einfach ein Liniensegment (DirectX Ray Inetrsection Test) von der Position des Projektils im Frame n zu den Position im Frame n+1. Alles was mit diesem Ray kollidiert wird von dem Projektil getroffen.
Je nach Durchschlagskraft des Projektils bzw. der Dichte des getroffenen Objektes kann man dann auch multiple Treffer bei Durchschuß zulassen.
Ciao,
Stefan
-
Für sowas einfaches reicht ein Ray, richtig.
Blöd wird es nur wenn die zu testenden Shapes beides keine sehr "einfachen" Objekte sind, trotzdem aber sehr schnell bewegt werden.
-
Danke für die Antworten, werd erstmal die Mittel benutzen die mir zur Verfügnung
stehen. Muss ich mich näher mit beschäftigen, wenn die Mittel nicht ausreichen
sollten.
-
Oder aber du suchst dir eine Physics-Engine die das alles schon kann
-
Gibt leider noch nich sehr viel für managed directx, probiere
grad unmanaged dll's einzubinden, scheint ganz gut zu Funktionieren.
physixsdk, hab ich hier noch rumliegen, vielleicht bekomme ich die ja zum laufen.
-
hustbaer schrieb:
Hehe, das ist bloss Raycasting.
Hier wird nur getestet ob ein Strahl ein Mesh schneidet, das mag zwar bei Raycasting von Bedeutung sein, aber Raycasting ist was anderes.
-
ein test ob ein ray ein mesh schneidet nennt man allgemein raycasting.
-
Also ich verbinde den Begriff "Raycasting" mit dem Verfahren, das beispielsweise bei Wolfenstein 3D verwendet wurde.
Das sagt übrigens auch Wikipedia
-
Genau, damit verbinde ich den Begriff auch.
-
dann darf ich zur horizonterweiterung gratulieren
-
Ob wir es noch erleben dürfen, dass rapso mal zugibt sich geirrt zu haben? ...
-
TomasRiker schrieb:
Ob wir es noch erleben dürfen, dass rapso mal zugibt sich geirrt zu haben? ...
nur weil du etwas (noch) nicht kennst, liegen wir anderen falsch
-
rapso schrieb:
TomasRiker schrieb:
Ob wir es noch erleben dürfen, dass rapso mal zugibt sich geirrt zu haben? ...
nur weil du etwas (noch) nicht kennst, liegen wir anderen falsch
Oder andersrum? Kannst du deine Meinung denn belegen? Ich kann nichts dergleichen finden!
-
David_pb schrieb:
rapso schrieb:
TomasRiker schrieb:
Ob wir es noch erleben dürfen, dass rapso mal zugibt sich geirrt zu haben? ...
nur weil du etwas (noch) nicht kennst, liegen wir anderen falsch
Oder andersrum?
andersrum? du meinst, wenn wir behaupten es gibt etwas, weil wir es kennen, heisst es noch lange nicht dass es das gibt, weil ihr behauptet ihr kennt das nicht?
-
Nein, wir kennen die Verfahren alle, nur geht es doch um die korrekte Bezeichnung. Alle Quellen, die ich bislang dazu gefunden habe, sehen in Raycasting genau dieses Wolfenstein 3D-Verfahren:
http://www.gamedev.net/dict/term.asp?TermID=415
http://de.wikipedia.org/wiki/Raycasting
http://en.wikipedia.org/wiki/Ray_casting
http://www.cacs.louisiana.edu/~mgr/404/burks/pcinfo/progdocs/rgpfaq.htm#B1
...