Seite 1 von 1

Welche Physikengine?

Verfasst: 07.11.2010, 21:19
von Jonathan
Ich überlege demnächst eine Physikengine zu benutzen und frage mich jetzt, welche ist gut, und wie groß sind die Unterschiede zwischen ihnen eigentlich?
Ich bin jetzt mal auf Bullet Physics gestoßen, die scheint ganz ordentlich zu sein. Vor allen Dingen gibt es so nette Features wie Hardwarebeschleunigung per OpenCL, was ja auf mehr Grafikkarten funktioniert, wie die physX Beschleunigung, die meines Wissens nach nur mit nVidia Karten funktioniert.

Ansonsten behaupten alle Bibliotheken, sie seinen schnell und robust, und nahezu alle haben auch ganz ordentliche Spiele, die diese Lib benutzen als Referenz.
Also: Womit habt ihr gearbeitet und habt ihr vorher verschiedene Libs verglichen?

Re: Welche Physikengine?

Verfasst: 07.11.2010, 21:47
von Alexander Kornrumpf
Habe mit Newton (lange her) ODE (nicht gut) und Bullet (nur wenig) gearbeitet. Wenn ich heute ein Projekt anfangen müsste würde ich Bullet verwenden, die Lizenz ist auch liberal.

Re: Welche Physikengine?

Verfasst: 07.11.2010, 21:50
von antisteo
Was ich dir auf alle Fälle empfehlen kann: Nimm was, was OpenSource ist!

Ich benutze Newton Game Dynamics und muss sagen, der Support ist einfach nur schlecht. Die Engine ist kostenlos nutzbar und der einzige Entwickler will alles selber machen. Zur Zeit versucht er gerade ergebnislos, irgendwelche GUI-Wrapper plattformunabhängig einzubinden und baut gewisse benötigte Features nicht ein.

Edit:
Ich hab mal rumgeschaut und rausgefunden, dass die meisten Physikengines noch schlechter sind und ich mit Newton schon ziemlich das beste gefunden habe (vor allem, weil es einen OpenGL-Kontext braucht [läuft also auch auf deditierten Servern] und Sprachen- und Plattformunabhängig ist)

Re: Welche Physikengine?

Verfasst: 07.11.2010, 22:01
von Alexander Kornrumpf
Jap so war es früher schon. ODE ist ähnlich trotz OpenSource gibt es nur eine Person die den Code durchblickt, wenn überhaupt. Da wird wohl nicht mehr viel passieren.

EDIT: Crossedit:

antisteo labert mal wieder rum. Weder ODE noch Bullet benötigen einen OGL Context. Für Bullet gibt es AFAIK alle möglichen Bindings, mindestens aber Java. Unterstützte OS laut Wikipedia: PlayStation 3, XBox 360, Wii, Mac, iPhone, Linux, Windows, etc

Re: Welche Physikengine?

Verfasst: 07.11.2010, 22:24
von Sternmull
Ich hab vor einer Weile mal ein bisschen mit Bullet rumprobiert. Dafür hatte ich mich entschieden weil es die einzige Cross-Platform Physik-Bibliothek (für mich sind Windows und Linux relevant) zu sein schien die halbwegs ausgereift ist und aktiv entwickelt wird. Die Lizenz ist prima. Die Einbindung ging auch halbwegs gut. Allerdings stört mich ganz gewaltig das die Doku sehr schlecht bzw. extrem spartanisch ist. Der unglaublich hässliche Beispielcode bringt mich auch auf die Palme.
Wer ausschließlich für Windows entwickelt ist mit Havok oder PhysX wahrscheinlich besser bedient. Natürlich nur wenn man mit deren Lizenzen leben kann. Im Vergelich zu Bullet ist die Doku bei beiden um ein Vielfaches besser. Außerdem hat man bei denen die Gewissheit das sie von großen kommerziellen Titeln erfolgreich verwendet werden. Bullet scheint eher in Hobby- und Low-Budged-Projekten, 3D-Modellern etc. Verwendung zu finden.

Re: Welche Physikengine?

Verfasst: 07.11.2010, 23:15
von eXile
Ich habe mal früher (ich glaube so um 2005 herum) die ODE früher ausprobiert. Da es damals noch nicht wirklich viele Alternativen gab, war ich erst einmal damit zufrieden, dass irgendetwas halbwegs anständig simuliert wurde. Den Umstrukturierungsaufwand, um sie einzubinden, fand ich moderat. Man könnte noch anbringen, dass auch die Stalker-Reihe die ODE zur Physikbereichnung einsetzt, aber man sollte sich fragen, ob das ein Qualifikationsmerkmal ist ... ;)

Re: Welche Physikengine?

Verfasst: 08.11.2010, 00:12
von Chromanoid
Wenn du 2D Kram machen willst: ich habe mit Box2D ganz gute Erfahrungen gemacht.
Bullet scheint mir eine gute Wahl zu sein. Es gibt sogar eine pure Java Portierung, was meiner Ansicht nach für die Qualität spricht. AFAIK wird Bullet auch bei vielen professionellen Entwicklungen eingesetzt und sollte im Open Source Bereich wahrscheinlich die beste Wahl sein (im Kopf habe ich als Beispiel jetzt nur Free Realms, so ganz sicher bin ich mit dieser These also nicht).

Re: Welche Physikengine?

Verfasst: 08.11.2010, 15:40
von RustySpoon
Kennt eigentlich jemand eine vernünftige Lib mit brauchbarem C#/XNA-Support? So wie ich das sehe geistern da draußen von den meisten großen Physikengines nur halbgare Wrapper rum.

Re: Welche Physikengine?

Verfasst: 08.11.2010, 16:02
von Seraph
Der PhysX-Wrapper ist ganz brauchbar gewesen. Der Bullet-Wrapper war glaube ziemlich veraltet. Vom Rest reden wir erst gar nicht. :D

Fuer C++ wuerde ich wohl auch eher zu Bullet tendieren. Havok duerfte ausser Reichweite liegen und PhysX, so sehr ich es von der Bedienung her auch mag, hat halt doch ein paar Schattenseiten und nVidias Einstellung ist auch fraglich, auch wenn ich sie vom Geschaeftsstandpunkt aus auch verstehen kann. Die ganzen anderen kleinen Libs ... naja, sind halt klein und 'unbedeutend' im Vergleich zu den 'Grossen', an die man mittlerweile auch ran kommt.

Re: Welche Physikengine?

Verfasst: 08.11.2010, 16:04
von The_Real_Black
RustySpoon hat geschrieben:Kennt eigentlich jemand eine vernünftige Lib mit brauchbarem C#/XNA-Support? So wie ich das sehe geistern da draußen von den meisten großen Physikengines nur halbgare Wrapper rum.
Dito!
Ja leider ^^
Ich wollte auch schon Fragen, da ich aber die nächte Zeit sowieso nicht zum XNA Programmieren komme hatte ich es mir verkniffen.

Den MS Leuten sollte man mal einreden, dass eine Physikengine sich ins Framework gehört... Ebenso einige bessere Serverunterstützung die mehr können als die paar Listener (HttpListener zB). Und weil mich gerade OpenCV und der C# Wrapper EmguCV nerven (AccessViolationException!!!!!!!einseinself!) Computer Vision Klassen auch noch!
ok mag etwas überzogen sein aber schön wäre es denoch oder? Aber es ist doch egal wenn ein Framework mehr als 20 Giga hat...
VideoGame bestseller = new MMORPG(PlayerMax, xTimesBetterAsWOW, ContentArray); // ;-)
*Jammer-Thread Ende*

Re: Welche Physikengine?

Verfasst: 08.11.2010, 16:11
von antisteo
Alexander Kornrumpf hat geschrieben:EDIT: Crossedit:

antisteo labert mal wieder rum. Weder ODE noch Bullet benötigen einen OGL Context. Für Bullet gibt es AFAIK alle möglichen Bindings, mindestens aber Java. Unterstützte OS laut Wikipedia: PlayStation 3, XBox 360, Wii, Mac, iPhone, Linux, Windows, etc
Pah. Wenn ich im Make-Log sehe, dass GL-Abhängigkeiten mit reinkompiliert werden, darf ich doch mal drauf schlussfolgern, dass das jeweilige Ding, was ich anpacke, eine schlechte Physikengine ist... Bloß weil es auf die 2 Beispiele ODE und Bullet nicht zutrifft liege ich damit noch lange nicht falsch!

Was die Bindings für Bullet angeht - such mir doch mal welche raus, falls du findest... ;) http://www.google.de/search?client=oper ... 8&oe=utf-8

Eine Physikengine lieferte mir nur ein Code::Blocks- und ein MSVC-Projekt, also auch fail.
Bei Bullet hab ich nach Anleitung kompiliert, aber es war nicht wirklich ersichtlich, welche libs noch gefehlt hatten. Ging also auch nicht. (wobei das Kompilat dank fehlender Header auch nix gebracht hätte)

Übrig bleibt die Newton-Engine, die ich sowieso schon benutze.

Re: Welche Physikengine?

Verfasst: 08.11.2010, 17:12
von Seraph
Also sind ODE und Bullet schlechte Physics-Libs weil sie keinen OGL-Context benoetigen? Was ist das denn bitte fuer eine Logik? Und selbst wenn dem so waere, muesste die Physics-Library doch nicht schlecht sein.

Und ich finde es unheimlich interessant, dass Bullet in doch recht vielen professionellen Spielen und Anwendungen zur Anwendung kommt, aber Du dennoch damit Probleme hast. ;)

Ist Newton mittlerweile eigentlich OpenSource oder warum empfiehlst Du ihm erst eine Open Source Lib und im naechsten Moment dann Newton?

Wie auch immer, es waere schoen, wenn Du Dich ein wenig zurueck halten wuerdest und vielleicht auch mal ueber die Argumente deines Gegenuebers nachdenkst bevor Du antwortest.

Nachtrag: Ich habe eben mal spasseshalber Bullet runtergeladen, was ca. 5min :S gedauert hat. Das Builden aller Projekte mit MSVC hat ca. 3min gedauert. Und anschliessend lief es auch schon. Wo war nochmal das Problem? Ach Du benoetigst die Pascal-Bindings. Aber ging es hier nicht um den Thread-Autor? Und dieser hat es afaik nicht angegeben, also gehen wir einfach mal davon aus, dass er MSVC benutzt, so wie ein grosser Teil der Entwickler.

Re: Welche Physikengine?

Verfasst: 08.11.2010, 21:20
von glassbear
Sternmull hat geschrieben:Außerdem hat man bei denen die Gewissheit das sie von großen kommerziellen Titeln erfolgreich verwendet werden. Bullet scheint eher in Hobby- und Low-Budged-Projekten, 3D-Modellern etc. Verwendung zu finden.
Also GTA IV und Red Dead Redemption find ich jetzt nicht so Low Budget-mäßig ;)
antisteo hat geschrieben: Pah. Wenn ich im Make-Log sehe, dass GL-Abhängigkeiten mit reinkompiliert werden, darf ich doch mal drauf schlussfolgern, dass das jeweilige Ding, was ich anpacke, eine schlechte Physikengine ist...
Nein, dann darfst du darauf schließen, dass du dich verlesen hast :lol:
OpenGL wird für die Demos benutzt, was nix mit der Engine zu tun hat. Oder wie soll die sonst auf ner XBox 360 funktionieren? :roll:

Re: Welche Physikengine?

Verfasst: 09.11.2010, 00:04
von antisteo
Seraph hat geschrieben:Also sind ODE und Bullet schlechte Physics-Libs weil sie keinen OGL-Context benoetigen? Was ist das denn bitte fuer eine Logik? Und selbst wenn dem so waere, muesste die Physics-Library doch nicht schlecht sein.
OGL-Bindings sind tabu für eine Physik-Engine, da man sie sonst nicht auf einem dedizierten Server laufen lassen kann. Soviel zur Klarstellung. Ich habe nicht behauptet, dass die Libs schlecht sind, was ich kritisiert habe sind deren Buildsysteme. Zudem habe ich die Engines zwar nicht beim Namen genannt (vor allem die schlechteren nicht), ich habe aber nicht alle über einen Kamm geschert. (sondern jede einzelne per Source geladen, kompiliert und ausprobiert)
Seraph hat geschrieben:Ist Newton mittlerweile eigentlich OpenSource oder warum empfiehlst Du ihm erst eine Open Source Lib und im naechsten Moment dann Newton?
Es ist closed, aber bietet immer noch die beste Anbingung und ein einfach zu verstehendes Interface, auch wenn es an Featurewünschen nicht so rosig aussieht im Moment (genauer um die Einführung von "stiff joints").

Re: Welche Physikengine?

Verfasst: 09.11.2010, 08:46
von glassbear
antisteo hat geschrieben:OGL-Bindings sind tabu für eine Physik-Engine, da man sie sonst nicht auf einem dedizierten Server laufen lassen kann.
Geht sehr wohl. Wir haben ein komplettes Ogre auf unserem (dedizierten) Server laufen :oops:
was ich kritisiert habe sind deren Buildsysteme.
Ah, die Buildsysteme sind schlecht, weil sie per default die Demos mitbauen? Dann deaktivier das doch, wenn es du es selber kompilierst :roll:
Zudem habe ich die Engines zwar nicht beim Namen genannt (vor allem die schlechteren nicht)
Dann mach doch mal und lass uns an deinen Erfahrungen teilhaben :)

Re: Welche Physikengine?

Verfasst: 09.11.2010, 10:10
von The_Real_Black
Ich hätte mir von diesen Thread gewünscht, dass eine Liste von Physikengines mit einigen Vor und Nachteilen aufgelistet herauskommt welche man dann so in das Ressourcen Forum ("Artikel, Tutorials und Materialien") stellen kann. Könnte man das gezanke etwas einstellen?

Bei welcher Engine gibt es eine gute uU auch Deutschsprachige Doku?
Gibt es in den C# Wrappern (wenn es einen gibt) gute Klassen- und Methodenkommentare?

Ich habe bei doch ein paar lieblosen Wrappern für C# (keine Physikengines im speziellen) gemerkt, dass man die Kommentierung von C\C++ usw nicht nach oben zieht so sitzt man entweder vor C++ Quellcode und muss sich Kommentare suchen oder ständig im Netz googeln. Für mich ist eine (offline)Doku bzw die XML Kommentare in C# Wappern ein Entscheidungsgrund da es den Workflow doch fördert.

Re: Welche Physikengine?

Verfasst: 09.11.2010, 10:35
von antisteo
The_Real_Black hat geschrieben:Ich hätte mir von diesen Thread gewünscht, dass eine Liste von Physikengines mit einigen Vor und Nachteilen aufgelistet herauskommt welche man dann so in das Ressourcen Forum ("Artikel, Tutorials und Materialien") stellen kann. Könnte man das gezanke etwas einstellen?
Gerne,
ich wurde drauf hingewiesen, was ich geschrieben habe und hab direkt einen Tippfehler gefunden :o
Ich habe natürlich sagen wollen, dass sie "einen GL-Kontext" und nicht "keinen" benötigen.

Jetzt einige meiner Erfahrungen:
- Newton Game Dynamics: schneller Einstieg, schnelle Ergebnisse, guter Support im Forum, allerdings fehlen einige Komfortfunktionen (der Character Controller ist verbuggt) und die Joints sind sehr "schwach" - das heißt sie wackeln rum, wenn man etwas fest verketten will
- Tokamak: Keine Makefiles, nur ein C::B- und ein MSVC-Projekt, sieht auch von den Features eher mager aus
- Bullet: CMake findet die noch libglut nicht, habs jetzt installiert, aber keine Zeit mehr zum Testen; FAIL: Er linkt mit "opengl32" und "glu32", also Windows-Only. Richtigerweise sollte es "gl" und "glu" heißen.
- ODE: Linker-Error-Spam beim Linken mit den eigenen Bibliotheken

Bei Bullet, Tokamak und ODE somit nicht das, was man von OpenSource-Projekten eigentlich gewöhnt ist/erwartet hätte (das da wäre cmake . && make und es geht)

Bitte jetzt keine Kommentare a la "du bist zu blöd zum bauen" - wenn ich Zeit hätte, würde ich es sicherlich hinbekommen, allerdings ging es mir eher um den ersten Eindruck.
The_Real_Black hat geschrieben:Bei welcher Engine gibt es eine gute uU auch Deutschsprachige Doku?
Gibt es in den C# Wrappern (wenn es einen gibt) gute Klassen- und Methodenkommentare?
Deutschsprachig musst du dann wohl selber schreiben ;)
und es wird wohl kaum jemand die Doku in den Fremdsprachen-Wrapper pasten.

Re: Welche Physikengine?

Verfasst: 09.11.2010, 11:04
von Schrompf
Havok ist inzwischen auch für kleine Leute zu haben - Performance und Feature Set sind da wohl kaum zu schlagen. Persönliche Erfahrungen habe ich damit aber bisher nicht gemacht. Wir benutzen PhysX - dafür gilt dasselbe: exzellente Performance und solide Features. Die Doku fand ich sehr gut, auch wenn ich ne Weile nichts mehr damit gemacht habe. Für alle Plattformen verfügbar, soweit ich weiß, auch wenn Linux evtl. fehlt. Dafür werden alle Konsolen abgedeckt. Lizenz ist begrenzt, aber akzeptabel - für PC halt kostenlos in allen Lebenslagen. C#-Anbindung... puh, da bin ich überfragt.

Re: Welche Physikengine?

Verfasst: 09.11.2010, 11:11
von Alexander Kornrumpf
eine Liste von Physikengines
http://de.wikipedia.org/wiki/Physik-Engine
antisteo hat geschrieben: Bei Bullet, Tokamak und ODE somit nicht das, was man von OpenSource-Projekten eigentlich gewöhnt ist/erwartet hätte (das da wäre cmake . && make und es geht)
ODE unterstützt wohl kein CMake weil CMake beim letzten ODE release längst nicht so verbreitet war wie heute. Wir haben unter Ubuntu ein größeres Studienprojekt mit ODE durchgezogen, man kann ODE viel vorwerfen, aber es baut mit make tadellos und lässt sich dann auch ohne Probleme linken. Du hast mit Sicherheit irgendwas falsch gemacht. Laut o.g. Liste ist Tokamak übrigens für Windows. Kein Wunder dass es bei dir nicht ging.

Re: Welche Physikengine?

Verfasst: 09.11.2010, 12:50
von Seraph
@The_Real_Black: Bei den meisten C#-Wrappern bedient man sich der Original-Doku. Es ist in 95% der Faelle auch nicht weiter problematisch, wenn man ein wenig C#-Erfahrung hat. Nur in seltenen Faellen bauen sie es so um, dass man nicht auf Anhieb weiss, wie man es nun genau anstellen soll, aber da hilft dann zumeist aber Google. So konnte ich z.B. problemlos letztes Jahr mit dem PhysX-Wrapper arbeiten, zumindest bis er meinte, dass er nur eine bestimmte Anzahl von Szenen erstellen kann, was ein wenig mit unserem Sektorsystem kollidiert ist.

Havok ist inzwischen fuer kleine Leute zu haben? Das habe ich wohl verpasst. Danke fuer den Hinweis, gleich mal nach suchen gehen. :)

Re: Welche Physikengine?

Verfasst: 09.11.2010, 17:10
von Sternmull
antisteo: Deine Aussagen betreffend Bullet sind unqualifiziert und falsch. Ich hab Bullet problemlos unter Linux verwenden können. Sowohl aus dem Paketmanager als auch manuell aus dem SVN-Sourcen kompiliert. Und OpenGL wird dort (wie dir ja hier bereits mitgeteilt wurde) ausschließlich für die Demos verwendet.

Was mir aber noch als Kritikpunkt zu Bullet eingefallen ist: Der "Character Controler" war leider sehr rundimentär und war für mich praktisch unbrauchbar.

Re: Welche Physikengine?

Verfasst: 11.11.2010, 08:27
von Schrompf
Gerade entdeckt: eine C#-native Physikbibliothek. Von der Featureliste her klingt es gut, aber ich habe natürlich keine persönlichen Erfahrungen damit. Lizenz ist anscheinend irgendwas Eigenes, scheint aber kostenlos für Kleingewerbe. http://www.mataliphysics.com/

Re: Welche Physikengine?

Verfasst: 11.11.2010, 10:18
von The_Real_Black
Schrompf hat geschrieben:Gerade entdeckt: eine C#-native Physikbibliothek. Von der Featureliste her klingt es gut, aber ich habe natürlich keine persönlichen Erfahrungen damit. Lizenz ist anscheinend irgendwas Eigenes, scheint aber kostenlos für Kleingewerbe. http://www.mataliphysics.com/
Man muss zwar erstmal den Code sehen, aber für den ersten Blick sieht es schon mal gut aus.

Re: Welche Physikengine?

Verfasst: 11.11.2010, 11:13
von Seraph
Danke fuer den Link. Werd ich mir heute Abend mal ansehen. :)

Re: Welche Physikengine?

Verfasst: 13.11.2010, 22:28
von The_Real_Black
Ist zwar im Moment offtopic, aber ich hatte ja hier über Emgu und die Kommentare gemeckert...
ich nehme diese Meckerei hiermit zurück, denn wenn man mal sich selbst frisch die Dateien zieht und sich nicht auf die veralteten Versionen welche auf der Hochschule rumgeistern verlässt ist alles so wie man es sich wünscht.
;)

Re: Welche Physikengine?

Verfasst: 10.12.2010, 15:29
von Brandlnator
Tag die Herren!

Hab mich hier länger nicht mehr zu Wort gemeldet, aber das Thema interessiert mich auch gerade.
Meine bisherigen Erfahrungen (leider nicht ganz aktuell):
ODE: Nicht so toll. Wenige Features, schlecht dokumentiert, Projekt macht einen relativ toten Eindruck
Tokamak: Same same.
PhysX: Funktioniert gut, schnell und hat eine recht gute Doku. Hab es aber zuletzt benutzt, als es noch nicht NVidia gehörte und bin über den aktuellen Stand nicht ganz im Bilde.

Hat jemand von euch mal PAL ausprobiert? Ich finde, das klingt nach einer sehr vernünftigen Lösung, konnte es aber noch nicht genau ansehen. Ansonsten würde ich für neue Projekte wegen der Lizenz wohl Bullet nehmen.

VG

Re: Welche Physikengine?

Verfasst: 18.01.2011, 17:46
von Zudomon
Hat jemand eigentlich Erfahrungen mit einer eigenen Physikengine?

Re: Welche Physikengine?

Verfasst: 18.01.2011, 18:15
von Hanno
Zudomon hat geschrieben:Hat jemand eigentlich Erfahrungen mit einer eigenen Physikengine?
Ich hab mal eine kleine Physik-Bibliothek geschrieben: Scalable Dynamics
Kann nicht besonders viel und war viel Arbeit, hat aber einen Haufen Spaß gemacht. Willst du was bestimmtes wissen?

Re: Welche Physikengine?

Verfasst: 19.01.2011, 07:25
von Zudomon
Hanno hat geschrieben:
Zudomon hat geschrieben:Hat jemand eigentlich Erfahrungen mit einer eigenen Physikengine?
Ich hab mal eine kleine Physik-Bibliothek geschrieben: Scalable Dynamics
Kann nicht besonders viel und war viel Arbeit, hat aber einen Haufen Spaß gemacht. Willst du was bestimmtes wissen?
Mich interessiert schon, wie man einigermaßen vernünftige Physik hinbekommen kann.