OpenCL basierte Rigid Body Physik Simulation

Im Rahmen seiner Master Thesis Real-Time Rigid Body Interactions (Norwegian University of Science and Technology / NTNU, 2011) entwickelte Fredrik Fossum eine für GPUs optimierte OpenCL basierte Rigid-Body-Physik-Simulation.

Wichtige Teile dieser Arbeit basieren auf dem GPU-Gems-3-Artikel Real-Time Rigid Body Simulation on GPUs von Takahiro Harada:



Rigid Bodies (Starrkörper) werden im Rahmen dieser Simulation als eine Ansammlung von Partikeln betrachtet (Particle Approach, Voxelization). Obwohl sich mit diesem Ansatz das physikalische Verhalten beliebig geformter Objekte simulieren lässt, werden in der vorliegenden Arbeit lediglich einfache Boxen betrachtet.

Gegenüber dem klassischen Ansatz, einen Starrkörper als Ganzes zu behandeln, vereinfacht der Partikel-Ansatz die Parallelisierung der Simulation:

Vorteile:

  • Kollisionsberechnungen werden vereinfacht. Die Objektgeometrie spielt eine untergeordnete Rolle, da lediglich Kollisionen zwischen den Partikeln verschiedener Physik-Objekte berücksichtigt werden müssen.
  • Das Verhalten eines Physik-Objekts ergibt sich aus dem Verhalten seiner Partikel (Translations- und Rotationsbewegung).

Hauptnachteil:

  • Die Genauigkeit der Simulation steigt mit der Anzahl der Partikel pro Starrkörper. Soll das Verhalten einer möglichst großen Anzahl von Körpern simuliert werden, muss die Anzahl der Partikel pro Körper möglichst klein gehalten werden. Abstriche bei der Simulationsgenauigkeit sind hierbei unausweichlich.


Der dieser Arbeit zugrunde liegende OpenCL-Kernel-Source ist vollständig im Anhang abgedruckt.