Objekte in Ruhelage spawnen

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.

Objekte in Ruhelage spawnen

Beitragvon Krishty » 20.09.2015, 23:49

Ich möchte ein Auto in meiner Landschaft spawnen. Ich kenne die horizontalen Koordinaten, und ungefähr die vertikale. Und kann beliebig Kollisionstests mit meiner Landschaft durchführen.

Nun erzeuge ich das Auto. Aber es befindet sich etwas zu weit über dem Boden, oder etwas zu tief. Dadurch können die Federn nicht ganz gegenhalten, oder drücken zu stark gegen, und es hüpft. Nach einer halben Sekunde hat es sich dann in Ruhelage eingependelt.

Was tue ich nun, um es ohne Hüpfer zu spawnen, direkt mit richtiger Position und Rotation und Federkompression?

Mein erster Gedanke war, dass ich einfach das Gewicht berechne, auf die verschiedenen Federn verteile, deren Kompression ausrechne, und dann die Höhe zum Spawnen habe. Das geht aber nur, wenn alle Federn gleich lang sind, denn wenn das Auto z.B. hinten schwer beladen ist, bewirkt das ein Drehmoment, das in der Berechnung leider völlig vernachlässigt ist.

Mein zweiter Gedanke war, die Physik zu simulieren bis das Objekt in Ruhe ist, und dann erst zu spawnen. Ganz ab von der furchtbaren Performance kann es aber auf schrägen Flächen zu rollen anfangen und dann erst einen Kilometer entfernt im Tal zur Ruhe kommen.

Wie löst man das normalerweise? Ich hätte an ein Gleichungssystem mit allen Federstärken gedacht, aber auch da weiß ich nicht, wie man das Drehmoment einkalkulieren könnte …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6129
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Objekte in Ruhelage spawnen

Beitragvon Tiles » 21.09.2015, 09:48

Wie wäre es mit einem Raycast? Wenn Auto zu hoch, setze Auto ein Stück nach unten. Wenn Auto zu tief, setze Auto ein Stück hoch. Eventuell könntest du da auch etwas trixen, indem du erst mal ein Nullobjekt erzeugst und das mittels Raycast passend positionierst. Dann spuckt dir nicht die Fahrzeug Physik dazwischen. Und wenn das dann auf Position ist spawnst du das Auto auf Position des Nullobjekts.

Obiges sollte zumindest bei ebenem Gelände funktionieren. Bei unebenem Gelände könntest du den Raycast von den Reifen aus machen. Da wird es dann allerdings ein wenig verzwickter alles passend einzustellen. Aber es geht ja um die Idee :)
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
 
Beiträge: 1089
Registriert: 11.01.2003, 14:21

Re: Objekte in Ruhelage spawnen

Beitragvon Alexander Kornrumpf » 21.09.2015, 10:15

Krishty hat geschrieben:Mein zweiter Gedanke war, die Physik zu simulieren bis das Objekt in Ruhe ist, und dann erst zu spawnen. Ganz ab von der furchtbaren Performance kann es aber auf schrägen Flächen zu rollen anfangen und dann erst einen Kilometer entfernt im Tal zur Ruhe kommen.

Wie löst man das normalerweise?


Wieso ist es für die Perfomance schlechter das Auto unsichtbar zu spawnen als sichtbar? Wenn die Engine das Auto später simulieren kann, dann kann sie es auch während des Spawn-Vorgangs?! [Je nach gewünschtem Effekt musst du auf Kollision ggf. anders reagieren als gewöhnt, aber das ist ja eine Brot und Butter Aufgabe für Physik Engines]

Gegen das Wegrollen hat mein Auto eine Handbremse. Mit angezogenen Handbremse unsichtbar spawnen, warten bis in Ruhe, sichtbar machen, Handbremse lösen, Profit???
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: Objekte in Ruhelage spawnen

Beitragvon Chromanoid » 21.09.2015, 11:33

Viele Physikengines haben aus Performance-Gründen ja meist auch so eine Art Schlafmodus für Objekte. Vielleicht reicht es Dir ja den zu aktivieren, so dass das Gezuckel erst bei der ersten Fremdeinwirkung auf das Auto los geht.
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3635
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: Objekte in Ruhelage spawnen

Beitragvon B.G.Michi » 21.09.2015, 13:23

Gegen das Wegrollen kannst du vor dem Spawnen eine Zwangsbedingung erzeugen, die die x- und y-Koordinate des Schwerpunktes des Autos fixiert. Hat das Auto seine Ruhelage erreicht (nach einer bestimmten Zeit oder wenn es sich nicht mehr signifikant bewegt) löscht du die Zwangsbedingung. Die Performance sollte eigentlich akzeptabel sein, da du ja nur das eine Auto simulieren musst und nicht die ganze Welt.
Benutzeravatar
B.G.Michi
Establishment
 
Beiträge: 159
Registriert: 07.03.2006, 21:38
Alter Benutzername: B.G.Michi

Re: Objekte in Ruhelage spawnen

Beitragvon Alexander Kornrumpf » 21.09.2015, 14:34

B.G.Michi hat geschrieben:Gegen das Wegrollen kannst du vor dem Spawnen eine Zwangsbedingung erzeugen, die die x- und y-Koordinate des Schwerpunktes des Autos fixiert. Hat das Auto seine Ruhelage erreicht (nach einer bestimmten Zeit oder wenn es sich nicht mehr signifikant bewegt) löscht du die Zwangsbedingung.


Brute Force Handbremse.

Die Performance sollte eigentlich akzeptabel sein, da du ja nur das eine Auto simulieren musst und nicht die ganze Welt.


Ich würde das "in production" simulieren, nicht in einer eigenen Instanz der Simulation. Ich verstehe jetzt allerdings wieso Performance überhaupt ein Problem sein sollte, danke.
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: Objekte in Ruhelage spawnen

Beitragvon DerAlbi » 21.09.2015, 16:13

Nur mal so als Randinfo: Ubisoft hat das im FarCry3-Multiplayer bei den Fahrzeugen auch nicht auf die Reihe bekommen. Dort springen oder fallen die Autos nach dem Spawnen auch sinnlos durch die Gegend, sobald der Spieler daran stößt (und somit die Physik initialisiert) und jedes mal krachts und scherbelts..
DerAlbi
Establishment
 
Beiträge: 177
Registriert: 20.05.2011, 05:37

Re: Objekte in Ruhelage spawnen

Beitragvon Krishty » 22.09.2015, 01:25

Tiles hat geschrieben:Obiges sollte zumindest bei ebenem Gelände funktionieren. Bei unebenem Gelände könntest du den Raycast von den Reifen aus machen. Da wird es dann allerdings ein wenig verzwickter alles passend einzustellen. Aber es geht ja um die Idee :)
Und genau da wird es dann WIRKLICH verzwickt, mit Drehmomenten und Rotation des Fahrzeugs :)

Alexander Kornrumpf hat geschrieben:Wieso ist es für die Perfomance schlechter das Auto unsichtbar zu spawnen als sichtbar? Wenn die Engine das Auto später simulieren kann, dann kann sie es auch während des Spawn-Vorgangs?!
Ich verstehe jetzt allerdings wieso Performance überhaupt ein Problem sein sollte, danke.
Da ist man mal einen Nachmittag NICHT auf ZFX und sofort werden alle Fragen doppelt gestellt ;) Ein Problem ist es, weil diese Simulation nicht in Echtzeit läuft (wie sonst) sondern rapide beschleunigt, damit das Fahrzeug auch wirklich am Ende des Frames, in dem es in Sichtweite kommt, in Ruheposition steht. (Bzw. in dem Augenblick, in dem sein LOD hoch genug wird, sich um Physik zu scheren). Ich mutmaße – ich kann’s nicht wissen, aber ich frage hier ja, damit ich nicht jeden Fall erst implementieren muss ;) – bei mehr als einem Auto, das in Sicht kommt, äußert sich das dann als kleiner Ruckler, weil ja die 60-fache Menge Physik berechnet werden muss.

Gegen das Wegrollen hat mein Auto eine Handbremse. Mit angezogenen Handbremse unsichtbar spawnen, warten bis in Ruhe, sichtbar machen, Handbremse lösen, Profit???
Die Handbremse funktioniert aber nur, so lange das Auto bereits ausbalanciert ist. Wenn die Räder nicht den Boden berühren, weil das Auto vom Boden abprallt, bringt dir die Handbremse nichts (da sind B.G.Michis Zwangsbedingungen schon wirkungsvoller). Du kannst das damit vergleichen, dass du einen Klotz zwar sanft auf einem steilen Hang positionieren kannst, ohne dass er runterrollt. Aber sobald du ihn aus einem Zentimeter Höhe auf die selbe Position fallen lässt, kullert er runter und kommt werweißwo zum Stehen.

Chromanoid hat geschrieben:Viele Physikengines haben aus Performance-Gründen ja meist auch so eine Art Schlafmodus für Objekte. Vielleicht reicht es Dir ja den zu aktivieren, so dass das Gezuckel erst bei der ersten Fremdeinwirkung auf das Auto los geht.
DerAlbi hat geschrieben:Nur mal so als Randinfo: Ubisoft hat das im FarCry3-Multiplayer bei den Fahrzeugen auch nicht auf die Reihe bekommen. Dort springen oder fallen die Autos nach dem Spawnen auch sinnlos durch die Gegend, sobald der Spieler daran stößt (und somit die Physik initialisiert) und jedes mal krachts und scherbelts..
Abgesehen davon, dass es hässlich wirkt, macht es auch Gameplay-Probleme – z.B. scheppert es bei Spielstart scheinbar grundlos, weil das Auto mit dem Spieler drin erstmal zu Boden fällt. Dann gibt es, sagen wir, ein Achievement, sobald alle Räder in der Luft sind. Auch das wird sofort im dritten oder vierten Frame ausgeteilt, weil das Auto da vom Boden abprallt. Und der Spieler so: WTF?! Und nein, ich baue keine Sekunde stummen Blackscreen am Level-Anfang ein ;) Ich brauche Spawning ja auch zwischendurch.

Also wenn der Tenor in Richtung „Simulier ein paar Sekunden“ geht, werde ich morgen eine abgespeckte Simulation (keine Fremdeinwirkung, kein Schaden, einfach nur Terrain vs. Reifen) mit Zwangsbedingung (X und Z nach jeder Iteration wieder wie vorher) einbauen und schauen, wie’s läuft.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6129
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Objekte in Ruhelage spawnen

Beitragvon Tiles » 22.09.2015, 09:22

Und genau da wird es dann WIRKLICH verzwickt, mit Drehmomenten und Rotation des Fahrzeugs :)


:P

Zumindest könntest du über einen Raycast schon mal verhindern dass das Auto, bzw. die Räder im Gelände steckt. Oder das Ganze zu weit in der Luft schwebt und runterplumpst.

Ich würde wohl die Physik erst mal abschalten und das Auto ohne Physik spawnen. Dann die Raycasts von den Reifen aus starten um die Lage des Autos am Gelände anzupassen. Mittelwert zwischen den linken Reifen und den rechten Reifen um die Seitenneigung des Autos zu ermitteln. Mittelwert von vorn und hinten um die Frontneigung zu ermitteln. Auto passend hinrotieren. Mittelwert von allen vier Casts um das Auto passend abzusenken oder anzuheben. Und dann noch mal die Reifen einzeln in der Höhe nachjustieren und die entsprechenden Drehmomente annähern. Und wenn ich damit die Sache einigermassen angenähert habe dann die Physik wieder anschmeissen. Und dann ein wenig rumexperimentieren mit welchen Werten das Ganze am wenigsten springt. Soweit die Theorie, ich habs auch noch nicht gemacht :D

Und ganz kriegst du die Ruckler vermutlich eh nicht weg. Die Physik wird immer ihre Spässe treiben, und sei es wegen Floatingpoint Ungenauigkeiten. Aber das sollte sich doch brauchbar minimieren lassen :)
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de
Benutzeravatar
Tiles
Establishment
 
Beiträge: 1089
Registriert: 11.01.2003, 14:21

Re: Objekte in Ruhelage spawnen

Beitragvon Alexander Kornrumpf » 22.09.2015, 10:55

Krishty hat geschrieben: Ein Problem ist es, weil diese Simulation nicht in Echtzeit läuft (wie sonst) sondern rapide beschleunigt, damit das Fahrzeug auch wirklich am Ende des Frames, in dem es in Sichtweite kommt, in Ruheposition steht. (Bzw. in dem Augenblick, in dem sein LOD hoch genug wird, sich um Physik zu scheren). Ich mutmaße – ich kann’s nicht wissen, aber ich frage hier ja, damit ich nicht jeden Fall erst implementieren muss ;) – bei mehr als einem Auto, das in Sicht kommt, äußert sich das dann als kleiner Ruckler, weil ja die 60-fache Menge Physik berechnet werden muss.


Und nein, ich baue keine Sekunde stummen Blackscreen am Level-Anfang ein ;) Ich brauche Spawning ja auch zwischendurch.


Ja, dass du das so sehen würdest war klar. Ich in deiner Situation würde sehr sehr gründlich darüber nachdenken ob es nicht reicht, das Fahrzeug in der normalen-Echtzeit-live-production Simulation mitzusimulieren, bis die Simulation stabil ist (ggf. nicht dasselbe, wie Auto in Ruhe). Ich gehe davon aus, dass das, wenn du es geschickt machst, nach wenigen Zyklen der Fall ist und man die Wartezeit für den Spieler akzeptabel gestalten kann. (Einschub: Levelanfang ist eine Sondersituation. Deine Optimierungsfähigkeiten in allen Eheren aber auch dein Level läd nicht instantan. Es ist physikalisch nicht möglich. Also versteck die paar Zyklen da, wo du den Rest des Level-Ladens versteckst. Andererseits wundert es mich _sehr_ dass deine Simulation bis auf das Auto von Anfang an stabil sein sollte. Ein paar Zyklen warm-up brauchst du doch so oder so?!) Letztlich ist alles akzeptabler als das was DerAlbi von FarCry beschreibt. Andererseits hab ich noch nie ein Spiel gespielt in dem spawnen ein Gameplay Element ist also YMMV.

Wichtig ist ja, dass das Problem was du lösen willst eben genau keine physikalisches ist (in der Realität spawnen Objekte nicht) sondern nur eins der Simulation. Wie willst du wissen, wie sich was in Simulation verhält, ohne die Simulation (ggf. "rückwärts") durchzurechnen? Das ist immer gleich teuer. Insbesondere glaube ich nicht dass es eine analytische Lösung gibt, weil die Simulation ja Eulerschritte und keine Analysis macht. (Falls du eine "klassische" Physikengine verwendest, das behältst du ja für dich hier).

Die Handbremse funktioniert aber nur, so lange das Auto bereits ausbalanciert ist. Wenn die Räder nicht den Boden berühren, weil das Auto vom Boden abprallt, bringt dir die Handbremse nichts (da sind B.G.Michis Zwangsbedingungen schon wirkungsvoller). Du kannst das damit vergleichen, dass du einen Klotz zwar sanft auf einem steilen Hang positionieren kannst, ohne dass er runterrollt. Aber sobald du ihn aus einem Zentimeter Höhe auf die selbe Position fallen lässt, kullert er runter und kommt werweißwo zum Stehen.


Ja schon richtig. Aber ich glaube nicht, dass das wirklich das Problem ist. Als allererstes ist es mMn eine Frage des Leveldesigns. Ich kenne kein Level und keine Physik-Engine wo du ein Auto ohne Probleme an jedem Punkt spawnen kannst. Eine gewisse Kontinuität muss die Landschaft schon haben. Zweitens ist ein Auto nichts was sich dazu anbietet einen Überschlag zu machen [meine Physikkenntnisse reichen nicht aus um das besser zu beschreiben]. Ich vermute die Dinger werden mit Absicht so konstruiert, dass sie sich nicht ständig überschagen. Sondern das Bild, dass wir jetzt hoffentlich beide vor Augen haben entsteht, weil Numerik auf einem Digitalrechner ein Problem ist. Ein echtes Auto in der echten Welt würde ein einer sehr großen Reihe von Szenarien meinem Verständnis nach einfach stabil landen. Drittens dachte ich, dass du eh so sanft wie möglich aufsetzt und



Also wenn der Tenor in Richtung „Simulier ein paar Sekunden“ geht, werde ich morgen eine abgespeckte Simulation (keine Fremdeinwirkung, kein Schaden, einfach nur Terrain vs. Reifen) mit Zwangsbedingung (X und Z nach jeder Iteration wieder wie vorher) einbauen und schauen, wie’s läuft.


Siehe oben: Wie soll es sonst gehen? Rein von der Logik her. Die Frage ist wirklich nur, wie du es versteckst. Wenn du im Hintergrund beschleunigt simulierst, während die eigentliche Simulation weiterläuft hast du dein Performance-Problem, wenn du es in der Live Simulation machst, hast du ein Wartezeitprblem. Es gibt kein Free Lunch.
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: Objekte in Ruhelage spawnen

Beitragvon Chromanoid » 22.09.2015, 11:56

Wie ich es verstehe geht es ja darum, dass die Autos deshalb immer wieder spawnen, weil sie aus LOD-Gründen immer mal wieder verschwinden und wieder auftauchen. Das finde ich eine ziemlich valide Problematik. Ggf. weiß man in so einem Fall noch nicht einmal wo sich alles Autos befinden, wenn man das Level lädt... Der Sinn des LOD ist ja gerade das so spät wie möglich festzustellen.

Vielleicht könnte man das Auto an einer festen Position anzeigen und im Hintergrund die Physik unsichtbar laufen lassen und dann die Darstellung des Autos langsam zur richtigen Position tweenen lassen. Sobald da irgendwas richtig holpert bzw. eine Kollision auftritt, muss man natürlich das Tweening beschleunigen und die Ruhefindung abbrechen.
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3635
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: Objekte in Ruhelage spawnen

Beitragvon Alexander Kornrumpf » 22.09.2015, 12:02

Chromanoid hat geschrieben: Das finde ich eine ziemlich valide Problematik


Die Validität des Problems steht doch gar nicht in Frage?!
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Re: Objekte in Ruhelage spawnen

Beitragvon Chromanoid » 22.09.2015, 12:48

Ja, stimmt, ich hatte das irgendwie in Deinem Post gelesen... :)
Benutzeravatar
Chromanoid
Christian Kulenkampff
Moderator
 
Beiträge: 3635
Registriert: 16.10.2002, 19:39
Wohnort: Lüneburg
Alter Benutzername: atr_23

Re: Objekte in Ruhelage spawnen

Beitragvon Krishty » 22.09.2015, 14:51

Tiles hat geschrieben:Zumindest könntest du über einen Raycast schon mal verhindern dass das Auto, bzw. die Räder im Gelände steckt. Oder das Ganze zu weit in der Luft schwebt und runterplumpst.
Ja, das mache ich schon. Im Fall eines Hangs platziere ich bspw. so, dass mindestens ein Rad den Hang berührt (bei entspannter Feder allerdings); siehe Bild unten.
Tiles hat geschrieben:Ich würde wohl die Physik erst mal abschalten und das Auto ohne Physik spawnen. Dann die Raycasts von den Reifen aus starten um die Lage des Autos am Gelände anzupassen. Mittelwert zwischen den linken Reifen und den rechten Reifen um die Seitenneigung des Autos zu ermitteln. Mittelwert von vorn und hinten um die Frontneigung zu ermitteln.
Da beginnen schon die Probleme: die Neigung des Autos hängt nämlich von den Federkräften ab. Du kannst z.B. ein normales Serienauto auf ebener Fläche nach hinten neigen, indem du den Kofferraum füllst. Der Algorithmus würde es allerdings genau horizontal spawnen, und dann würde es kurz zurückschlagen, sobald die Physik angeht.

Alexander Kornrumpf hat geschrieben:Wichtig ist ja, dass das Problem was du lösen willst eben genau keine physikalisches ist (in der Realität spawnen Objekte nicht) sondern nur eins der Simulation. Wie willst du wissen, wie sich was in Simulation verhält, ohne die Simulation (ggf. "rückwärts") durchzurechnen? Das ist immer gleich teuer.
Ja; damit hast du absolut recht und so habe ich das noch nicht gesehen :)
Insbesondere glaube ich nicht dass es eine analytische Lösung gibt, weil die Simulation ja Eulerschritte und keine Analysis macht. (Falls du eine "klassische" Physikengine verwendest, das behältst du ja für dich hier).
100 % genau nicht, weil die Simulation nicht genau ist, stimmt. (Ich benutze meine eigene Physikengine.) Aber nach meinen Tests (Federstärken für bestimmte Situationen hard-coden) reicht eine Annäherung aus, damit der Spieler nichts merkt. Ab grober Annäherung hören schon die negativen Gameplay-Effekte (falsche Achievements und so) auf.
Alexander Kornrumpf hat geschrieben:
Die Handbremse funktioniert aber nur, so lange das Auto bereits ausbalanciert ist. Wenn die Räder nicht den Boden berühren, weil das Auto vom Boden abprallt, bringt dir die Handbremse nichts (da sind B.G.Michis Zwangsbedingungen schon wirkungsvoller). Du kannst das damit vergleichen, dass du einen Klotz zwar sanft auf einem steilen Hang positionieren kannst, ohne dass er runterrollt. Aber sobald du ihn aus einem Zentimeter Höhe auf die selbe Position fallen lässt, kullert er runter und kommt werweißwo zum Stehen.

Ja schon richtig. Aber ich glaube nicht, dass das wirklich das Problem ist. Als allererstes ist es mMn eine Frage des Leveldesigns. Ich kenne kein Level und keine Physik-Engine wo du ein Auto ohne Probleme an jedem Punkt spawnen kannst. Eine gewisse Kontinuität muss die Landschaft schon haben. Zweitens ist ein Auto nichts was sich dazu anbietet einen Überschlag zu machen [meine Physikkenntnisse reichen nicht aus um das besser zu beschreiben]. Ich vermute die Dinger werden mit Absicht so konstruiert, dass sie sich nicht ständig überschagen. Sondern das Bild, dass wir jetzt hoffentlich beide vor Augen haben entsteht, weil Numerik auf einem Digitalrechner ein Problem ist. Ein echtes Auto in der echten Welt würde ein einer sehr großen Reihe von Szenarien meinem Verständnis nach einfach stabil landen.
„So sanft wie möglich“ bedeutet nicht, was du dir vorstellst (Fall 1 im Bild), sondern, dass mindestens ein Reifen den Boden berührt. Bei einem Hang sind die anderen Reifen aber wahrscheinlich noch immer über dem Boden und fallen, während die Reifen mit Bodenkontakt ihre Federstärke als Drehmoment übertragen, und dann kullert das Ding runter (Fall 2):
vehicle placement.png
Die sanftmöglichste Orientierung will ich ja eben ausrechnen.
Alexander Kornrumpf hat geschrieben:
Also wenn der Tenor in Richtung „Simulier ein paar Sekunden“ geht, werde ich morgen eine abgespeckte Simulation (keine Fremdeinwirkung, kein Schaden, einfach nur Terrain vs. Reifen) mit Zwangsbedingung (X und Z nach jeder Iteration wieder wie vorher) einbauen und schauen, wie’s läuft.
Siehe oben: Wie soll es sonst gehen? Rein von der Logik her. Die Frage ist wirklich nur, wie du es versteckst. Wenn du im Hintergrund beschleunigt simulierst, während die eigentliche Simulation weiterläuft hast du dein Performance-Problem, wenn du es in der Live Simulation machst, hast du ein Wartezeitprblem. Es gibt kein Free Lunch.
Numerisch, wäre meine Vorstellung gewesen: Schwerpunkt und Rotation und Gewicht und Federstärken und Abstand vom Boden als Parameter, und dann lösen. Da gibt es schließlich nur einen Gleichgewichtszustand, den ein reales Auto anstreben würde. Nur fehlt mir dafür einfach das mathematische Wissen, wie man sowas umsetzen würde. Und wenn ihr sagt, dass sowas nicht geht, dann halt nicht :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6129
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: Objekte in Ruhelage spawnen

Beitragvon Alexander Kornrumpf » 22.09.2015, 15:20

Krishty hat geschrieben:Numerisch, wäre meine Vorstellung gewesen: Schwerpunkt und Rotation und Gewicht und Federstärken und Abstand vom Boden als Parameter, und dann lösen. Da gibt es schließlich nur einen Gleichgewichtszustand, den ein reales Auto anstreben würde. Nur fehlt mir dafür einfach das mathematische Wissen, wie man sowas umsetzen würde. Und wenn ihr sagt, dass sowas nicht geht, dann halt nicht :)


Wie man das im Prinzip macht ist eigentlich klar oder? Es gibt eine Funktion die aus dem Zustand s_t den zustand s_{t+1} macht, nennen wir die S. Dein Eulerschritt wendet diese Funktion an, als s_{t+1}=S(s_t) Wenn du dein Auto spawnst dann fixierst du die Freiheitsgrade, die du nicht frei haben willst (wahrscheinlich translation in der Ebene und Yaw), setzt das in s_t ein und löst für die anderen Freiheitsgrade (wahrscheinlich Translation entlang der Gravitation, Pitch und Roll, sowie alle Federzustände und was du noch so hast) die Gleichung s_t = S (s_t), also die Fixpunktgleichung der Simulation.

Geht nicht ist ein großes Wort. Mir wäre es halt zu aufwendig.
Alexander Kornrumpf
Moderator
 
Beiträge: 1610
Registriert: 25.02.2009, 14:37

Nächste

Zurück zu Algorithmen und Datenstrukturen

Wer ist online?

Mitglieder in diesem Forum: Yandex [Bot] und 1 Gast