-
Engine Frage
Autor: Noren 04.06.14 - 17:23
Sobald beim Beispielcode die Geschwindigkeit des Balls auf über 160 gesetzt wird, wird die Wand sozusagen nicht mehr getroffen. Es scheint als würde die Collision Detection quasi einmal pro Bildrenderung aufgerufen werden. Wie verhält sich das bei anderen Engines? Ist das korrekt so? Schliesslich wird z.B. bei Shootergames ja auch mit hoher Geschwindigkeit auf ein Spieler geschossen, da wird bestimmt auch das Projektil quasi durch das Model durchfliegen...
1 mal bearbeitet, zuletzt am 04.06.14 17:24 durch Noren. -
Re: Engine Frage
Autor: dbalster 04.06.14 - 19:02
üblicherweise "sweeped" oder extruded man, d.h. du machst keinen punkt-test, sondern machst aus dem letzten und nächsten punkt eine linie und prüfst damit auf kollision, plus rückrechnung zu zeitpunkt t wann die kollision genau erfolgte - sonst stimmen die differentialgleichungen nicht und man berechnet murks.
-
Re: Engine Frage
Autor: dbalster 04.06.14 - 19:05
...und bei einem shooter wird zum zeitpunkt des abfeuerns berechnet, ob der gegner getroffen wird oder nicht (raycast). naja, dann wird nur noch das ergebnis zuende animiert.
-
Re: Engine Frage
Autor: Noren 04.06.14 - 19:14
Vielen Dank fürs füllen der Wissenslücke
-
Re: Engine Frage
Autor: Anonymer Nutzer 04.06.14 - 23:27
Nicht bei den besseren Shootern, mit einer Ballistik, wie Arma und BF3+
Da gibts kein Raycasting
Allerdings läuft das wenn es Lags gibt eher nicht immer perfekt. -
Re: Engine Frage
Autor: spambox 05.06.14 - 00:15
Bei der Renn-Simu "Live 4 Speed" funktioniert die C D nicht mehr, wenn man mit mehr als 320 Km/h gegen eine Wand fährt.
Ok, das beantwortet deine Frage nicht, ist aber im Grunde ein ähnliches Phänomen.
#sb -
Re: Engine Frage
Autor: nonsensual 05.06.14 - 02:55
das verhält sich bei anderen Engines höchst wahrscheinlich auch immer genau so, zumindest ist es für alle zutreffend mit denen ich schon einmal herumspielt habe, das wären Unity3d und Unreal 3. Generell gilt kontinuierliche Kollisionserkennung( zwischen zwei Frames) ist teuer, da recht aufwendig und wird vermieden wenn nicht unbedingt nötig. In den meisten fällen ist das aber ich nicht nötig. Eine Kollision zwischen zwei Frames tritt im Grunde nur auf wenn ein Objekt eine sehr hohe Geschwindigkeit( velocity) aufweist und/oder mit einem sehr kleinen/dünnen Objekt kollidiert( bullet-through-paper). Es passiert in der Regel also nur bei bestimmten Objekten/Objektkonstellationen und muss für diese dann individuell geregelt werden. In Unity3d muss der Programmierer sich selbst darum kümmern, musste es zumindest in der Version die ich kenne. In der Unreal Engine konnte man für Objekte wo das passieren konnte eine Flag setzten wenn mich meine Erinnerung nicht trübt und die Engine hat sich dann um alles gekümmert. Gleiches dürfte für moderne Engines wie die CryEngine gelten, dass jedoch ist nur eine Mutmaßung.
-
Re: Engine Frage
Autor: Haxx 05.06.14 - 10:43
Die 3D Physikengine ist im übrigen Bulletphysiks mit EMscripten kompiliert.
So wie bei den meisten kommerziellen Javascript WebGL Game-Engines, bis auf die Turbulenz Engine.



