PhysicsEngines/de

From OpenSimulator

Jump to: navigation, search

Contents

Einleitung

Hinweis: Ein Großteil dieser Seite wurde im November 2009 verfasst. Das OpenDynamicsEngine OpenSimulator-Plugin befindet sich derzeit nicht mehr in signifikanter aktiver Entwicklung, da das BulletSim-Physik-Plugin voraussichtlich standardmäßig in der nächsten OpenSimulator-Version verwendet wird. Allerdings wird BulletSim in OpenSimulator 0.7.6 noch als experimentell angesehen. -- [[Benutzer |Justincc]] 20:45, 19. November 2013 (UTC)

Hinweis: BulletSim ist jetzt standardmäßig. Informationen zur Einrichtung und Nutzung finden Sie auf den BulletSim-Seiten. -- [[Benutzer |Misterblue]] 17:54, 06. Juni 2014 (UTC)

Die derzeit verfügbaren Physik-Engines für OpenSimulator sind "basicphysics", "POS" und "OpenDynamicsEngine". Ab OpenSimulator 0.6.9 ist das Plugin "OpenDynamicsEngine" standardmäßig und kann in der Datei OpenSim.ini eingesehen werden.

ODE hat den Großteil der Tests erhalten. Seit 2010 unterstützt es Kollisionen mit allen Prims (Würfel, Kugeln, Zylinder usw.) in Kombination mit verschiedenen Verzerrungen wie hohl, zulaufend, verdreht, schnitt usw. In Kombination mit Meshmerizer unterstützt es auch korrekte Kollisionen mit skulptierten Prims.

ODE-Plugin

In Linux sollten Sie das enthaltene Shell-Skript opensim-ode.sh verwenden oder ulimit -s 262144 eingeben, bevor Sie mono OpenSim.exe ausführen, wenn Sie eine große Anzahl von Physikobjekten planen (jeder Avatar ist ein Physikobjekt, ebenso wie diejenigen, bei denen die Physik-Flagge auf dem Simulator gesetzt ist). Das ulimit -s 262144 in Linux schützt vor Stapelkollisionen und beschädigtem Speicher, wenn viele physische Objekte herumlaufen.

Aktuell unterstützt das ODE-Plugin Kollisionen Av2Av, Av2Prim und Prim2Prim. Bewegung von Avataren und (aktiven) physikalischen Prims wird unterstützt.

Das derzeitige Kollisionsverhalten ist:

   Für Avatare eine Kapsel mit 0,2 m Radius und einer Länge basierend auf der Avatar-Höhe und 80 kg Masse.
   Für Prims wie eine Box oder Kugel mit einer Masse einer Box von = 0,5 kg/l = 0,5 kg/dm³ = 500 kg/m³.
   Prims sind in ~30m große Bereiche unterteilt mit ihrer eigenen Begrenzungsbox zur Beschleunigung der 'Nähe'-Berechnung.
   Die Reibung wird bei Kollisionen von Avatar zu Objekt/Boden reduziert, wenn der Avatar sich bewegt.

Aufgabenliste (nächste Änderungen)

   Dieses Plugin befindet sich derzeit nicht in aktiver Entwicklung. Es werden jedoch Patches begrüßt, die zusätzliche Funktionalitäten implementieren, ohne dass Regressionen zu befürchten sind.

Bekannte Fehler

   Die Unterstützung für Fahrzeuge ist unvollständig.

Letzte Änderungen

Kompilierung aus Quellcode

OpenSimulator enthält derzeit r1755 von ODE (eine Revision nach 0.11.1). Der Code befindet sich im Opensim-libs git repository, im Verzeichnis trunk/unmanaged/OpenDynamicsEngine-r1755/. In diesem Verzeichnis wurden einige Patches speziell für OpenSimulator angewendet (siehe "git log" für weitere Informationen dazu). Es enthält auch Anweisungen zum Erstellen und Installieren für OpenSimulator.

Alte Kompilieranweisungen

(Vorübergehend aufbewahrt für Vergleichs- und historische Zwecke).

Linux

Stellen Sie sicher, dass die Datei ../ou/bootstrap ausführbar ist und starten Sie dann den Build-Prozess wie folgt:

Es könnte erforderlich sein, die bootstrap-Datei (falls nicht bereits) mit diesem optionalen nächsten Schritt ausführbar zu machen:

$ cd ou $ chmod +x bootstrap

Jetzt vorbereiten und autogen ausführen

$ sh autogen.sh

und kompilieren Sie es wie unten gezeigt. Je nachdem, wie Berechtigungen eingerichtet sind, müssen Sie möglicherweise sudo für den Schritt make install verwenden:

./configure --enable-shared --disable-demos --disable-asserts make make install cp /usr/local/lib/libode.so /my/opensim/production/dir

Wenn Sie nach dieser Aktion Probleme haben, versuchen Sie die Debug-Bibliothek durch Verwendung der folgenden Zeile;

./configure --enable-shared --disable-demos

(Ich habe früher --with-trimesh=gimpact vorgeschlagen, aber nicht mehr. Ab ODE 0.9 ist Opcode die bevorzugte und am besten unterstützte Kollisionsbibliothek)

Dadurch sollten eine libode.a- und eine lidode.so-Datei im Unterverzeichnis src/ode erstellt werden. Kopieren Sie diese beiden Dateien in das bin-Verzeichnis von opensim (nachdem Sie die dort vorhandenen Originaldateien gesichert haben). [Äh, ich denke nicht, dass die .a-Datei notwendig ist, um sie in bin zu legen!]

Versuchen Sie ein wenig mit den Avatar-Einstellungen in OpenSim.ini zu spielen, wenn der Avatar seine Füße im Gelände stecken hat oder wenn die Grundposition kriecht. Diese Einstellungen scheinen auf Linux64 zu funktionieren: (Beachten Sie, dass dies alte Einstellungen sind und möglicherweise nicht mit den neuesten OpenSimulator-Versionen funktionieren) av_capsule_radius = 0.68 av_capsule_standup_tensor_linux = 1900000 av_density = 90

Mac OS X

Sie können den gleichen Build-Prozess auf OS X verwenden wie auf Linux, aber es gibt ein paar kleine Unterschiede.

Zunächst versucht das Skript autogen.sh, den Namen der libtoolize-Binärdatei automatisch zu bestimmen (die auf OS X glibtoolize heißt). Dazu verwendet es den which-Befehl unter bash, aber der Fehlercode, den which unter bash zurückgibt, ist immer 0. Wenn Sie eine Fehlermeldung wie diese sehen:

autogen.sh: Zeile 44: no: Befehl nicht gefunden

dann öffnen Sie autogen.sh in einem Texteditor und ändern Sie die erste

LIBTOOLIZE=`which libtoolize`
zu
LIBTOOLIZE=`which glibtoolize`

und führen Sie es erneut aus.

Außerdem benötigen Sie automake 1.10 oder höher. Sie können Ihre aktuelle Version mit dem Befehl überprüfen:

automake --version

Sie können Version 1.10 von MacPorts oder fink beziehen, wenn Ihre älter ist. Stellen Sie sicher, dass die neuen Verzeichnisse für Binärdateien vor den Systembinärdateien in Ihrem PATH stehen. Möglicherweise müssen Sie eine neue Shell öffnen, damit Ihre Änderungen wirksam werden.

Dann können Sie den Anweisungen für Linux folgen, um die Bibliothek zu erstellen. Wenn sie erstellt wurde, kopieren Sie die Datei ode/src/.libs/libode.dylib in das OpenSimulator bin-Verzeichnis.

Windows

Die Standardverteilung enthält ein Build-Verzeichnis, in dem Sie Unterverzeichnisse für mehrere Microsoft Compiler finden.

Die Standard .sln-Dateien (zumindest für VS2005) kompilieren ode.dll, sodass sie mindestens von zwei Microsoft Runtime-DLLs abhängt. Dies kann zu Fehlern und Verwirrung führen, also führen Sie folgende Schritte aus: Klicken Sie mit der rechten Maustaste auf ode in der Solution Explorer und wählen Sie Eigenschaften. unter Konfigurationseigenschaften/Allgemein, ändern Sie "Use of MFC" in "Use MFC in a Static Library"

Unter Konfigurationseigenschaften/Linker/System. Ändern Sie Stack Reserve Size auf 262144000. Klicken Sie auf die OK-Schaltfläche und kompilieren Sie dann wie gewohnt.

POS Plugin

POS ist Physics Of Simplicity. Es ist BasicPhysics mit Kollisionen.

Ich habe meine alten Wiki-Sachen entfernt, weil sie einfach falsch waren. Der Algorithmus, der in POS implementiert ist, modelliert den Avatar nicht als Kugel; vielmehr wird er als rechtwinkliger Körper modelliert, ebenso wie die Prims. Die Kollisionsdetektion erfolgt jedoch immer im Rotationsrahmen des Prim, sodass je nach Prim, gegen den geprüft wird, der Avatar tatsächlich unterschiedlich orientiert ist.

Aufgabenliste (nächste Änderungen)

   TODO

Bekannte Fehler

   TODO

Alte Plugins

Dies sind Plugins, die nicht mehr gewartet werden und aus OpenSimulator entfernt wurden.

BulletX-Plugin in OpenSim: Modifiziertes BulletX

Seit 2007 unterstützt Bullet box-förmige Prims und scheint stabil zu sein; es gab wenig Tests, und es ist bekannt, dass es Probleme mit der Reibung hat (man rutscht auf unebenen Oberflächen umher).

Das BulletX-Plugin in OpenSimulator führt die modifizierte Version von BulletX aus. Die Originalversion von BulletX läuft unter und hat Code-Abhängigkeiten mit MS.XNA. Die Original-BulletX finden Sie unter XNADev.ru. Die modifizierte Version entfernt alle Code-Abhängigkeiten mit MS.XNA. Andererseits benötigt es eine weitere Bibliothek, um zu funktionieren. Diese Bibliothek basiert auf Mono.Xna und heißt MonoCompactMaths. Das modifizierte BulletX und die MonoXnaCompactMaths finden Sie im svn von OpenSimulator. Aufgrund seiner Code-Unabhängigkeit von MS.XNA sollte das modifizierte BulletX entweder unter MS.Net oder Mono und somit entweder unter Windows oder Linux laufen (offensichtlich können Sie Windows + Mono kombinieren).

Derzeit unterstützt das BulletX-Plugin Kollisionen Av2Av, Av2Prim und Prim2Prim. Bewegung von Prims und Avataren wird unterstützt. Übrigens, Kollisionen müssen abgestimmt werden. Das aktuelle Kollisionsverhalten ist:

   Für Avatare wie eine Kugel mit 1 m Radius und 50 kg Masse
   Für Prims wie eine Box der Primgröße und einer Masse, die von ihrer Größe abhängt. Die Masse ist die Masse einer Box aus Wasser mit einer Dichte von 1 kg/l = 1 kg/dm³ = 1000 kg/m³ (Sei Wasser, mein Freund!
   ).

Aufgabenliste (nächste Änderungen)

   Kollision abstimmen
   Einführung des Prim-Formtyps, um mehr als die Box-Form zu haben.
   Mehr als 1 Region in einem Sim und dann mehr als 1 Sim (Grid)
   Fehler beheben

Bekannte Fehler

   Icy Bug: Ein Avatar verhält sich, als wäre er auf Eis und neigt dazu, nach einer Weile vom Rand des Sims abzudriften.
   Absturz bei BulletX. Sie werden manchmal die folgende Nachricht in der Konsole finden: Overflow in AABB, object removed from simulation. Wenn Sie dies reproduzieren können, senden Sie bitte eine E-Mail an bugs@continuousphysics.com. Bitte geben Sie die oben genannten Informationen, Ihre Plattform und die Version des Betriebssystems an. Danke.
   Rotation scheint nicht zu funktionieren
Personal tools
General
About This Wiki