Probleme mit physikalischen Einheiten
Wir haben Dominos aufgestellt und umgeworfen und mussten feststellen, dass sie deutlich langsamer fielen als wir es gewohnt waren. Wir hatten die Größe der Dominos willkürlich festgesetzt ohne darüber nachzudenken, welcher realen Größe sie entspricht. Die Dokumentation von PhysX schweigt sich leider darüber aus, welcher realen Längeneinheit eine „1” in PhysX enspricht. Wir haben dann einen Quader aus großer Höhe auf eine Ebene fallen lassen und die Zeit zwischen Loslassen und Aufschlag ermittelt. Aus der Zeit t, der eingestellten Beschleunigung a und der Fallhöhe s konnten wir schließen, dass „1” einem Meter bzw. einem Meter pro Quadratsekunde bei der Beschleunigung entspricht.
Verhalten bei Durchdringung von Körpern
Wenn sich zwei Körper berühren, dürfen sie minimal ineinander eindringen. Je größer die Durchdringung, desto stärker stoßen sie sich ab. Werden zwei Körper an der selben Stelle erzeugt stoßen sie sich extrem heftig ab, wie man an folgendem Bild sehen kann:
Erkenntnisse über PhysX
PhysX ist ein mächtiges Werkzeug zur Simulation von Mechanik und die Einbindung in eigene Software ist komfortabel. Schwächen zeigen sich bei der Simulation komplexerer Objekte; dafür muss erst eine konvexe Hülle mit maximal 256 Dreiecken berechnet werden. Der Ansatz, dass Objekte bei Berührung ein Stück ineinander eintauchen dürfen stabilisiert zwar die Simulation, führt aber leider auch dazu, dass aufeinandergestapelte Objekte wirken, als seien sie aus Gummi. Diesen Nebeneffekt kann man durch eine kleinere „skinWidth“ abmildern, allerdings muss man auch die Länge eines Simulationsschrittes verringert werden, was einen höheren Rechenaufwand nach sich zieht.
Limitationen
- Höchsten 64k Objekte oder Partikel. Diese Grenze ist bei der Simulation von Flüssigkeiten, Rauch, Gewebe oder Haaren durch Partikelsysteme schnell erreicht.
- Höchstens 256 Polygone als konvexe Hülle, komplexere oder nicht-konvexe Körper müssen aus mehreren kleinen Körpern mittels Joints zusammengefügt werden, was die Performance merklich senkt.
- Verschiedene Flüssigkeiten können nicht interagieren.
- Gewebe kann nicht mit anderem Gewebe oder weichen Körpern interagieren.
- Physikalische Regeln verhindern u.U. eigenes Verhalten.
- Keine Hardware-Unterstützung auf Linux oder Mac OS.