Ich habe Box2d und Bullet in JavaScript portiert gesehen, aber keiner von ihnen hat mich angezogen, außer dem Quellcode. Es schien alles ziemlich einfach zu sein, als ich hineinschaute.
Was tun sie in jeder dieser Bibliotheken, um eine schöne Physiksimulation zu erhalten? Ich kann keine Erklärung finden.
Antworten:
Die starre Körperphysik ist eigentlich recht einfach im Konzept - das heißt, die Verhaltensweisen, die ein Motor zu erzeugen versucht, sind nicht sehr kompliziert. Das ist wahrscheinlich der Grund, warum Ihnen die Bibliotheken, die Sie sich angesehen haben, recht einfach erscheinen.
Der Trick besteht darin, dass es ziemlich schwierig ist, eine Sim zu erstellen, die robust , stabil und schnell ist , selbst wenn Gleitkommafehler und niedrige, variable Frameraten vorliegen, und in der Regel viel gezwickt und herumgespielt wird. Eine weitere Komplikation ist die Tatsache, dass viele äußerst kluge Leute heldenhafte Anstrengungen unternommen haben, um bessere Lösungen zu finden, und schöne und leistungsstarke, aber schwer verständliche Algorithmen entwickelt haben, die dem Gebiet einen Ruf für schwarze Magie verliehen haben.
Im Allgemeinen wird sich eine Physik-Engine mit drei Dingen befassen (die Reihenfolge, in der sie in der internen Schleife ausgeführt werden, variiert):
Für die meisten von ihnen gibt es sowohl einfache, aber nicht so genaue Algorithmen als auch komplexe, aber genauere Algorithmen. Um Ihnen den Einstieg zu erleichtern:
In den ersten Kapiteln des gerade veröffentlichten Buches Game Physics Pearls finden Sie eine hervorragende Einführung in einfache Methoden und was schief gehen kann.
quelle
Lesen Sie Glenn Fiedlers Spielphysik-Reihe: http://gafferongames.com/game-physics/
Auch Erin Catto (die Autorin von Box2D) hat einen Artikel über eingeschränkte Dynamik .
Informationen zur Kollisionserkennung finden Sie unter Echtzeit-Kollisionserkennung durch Christer Ericson
quelle
http://en.wikipedia.org/wiki/Rigid_body_dynamics könnte ein guter Anfang sein. Verschiedene Spiele teilen die Dinge in verschiedene Körper auf, aber im Allgemeinen haben Sie eine Reihe von diskreten starren Körpern, die durch Gelenke mit bestimmten Eigenschaften verbunden sind. In jeder Runde des Spiels berechnen Sie die Kräfte auf jeden Körper und die neuen Parameter (Position, Geschwindigkeit usw.). Sie müssen auch Kräfte von jedem Körper auf die anderen übertragen, mit denen er Gelenke teilt, und globale Kräfte (Schwerkraft) berücksichtigen.
Dies betrifft nicht Dinge wie Flüssigkeits- oder Stoffphysik, diese sind für mich alle Kauderwelsch. Es gibt Differentialgleichungen und das ist ungefähr der Punkt, an dem meine Augen glasig werden.
quelle
OpenCloth beschreibt alle Integrationstechniken so einfach wie möglich. Viel ist in Vorbereitung.
Details: http://code.google.com/p/opencloth/
quelle
Neben den physikalischen Gleichungen ist es wichtig, alle Objekte zu verfolgen, damit die Überprüfung auf Kollisionserkennung und Interaktionen so schnell wie möglich erfolgt. Spatial Hashing ist die Technik, die die Chipmunk- Physik-Engine verwendet.
quelle
Um die Liste der Links zu erweitern, fand ich Baraffs SIGGRAPH-Notizen sehr hilfreich.
quelle