3D Engine für Python


Bisher habe ich unter Python mit pygame+Box2d gearbeitet und war damit im Großen und Ganzen zufrieden. Mit relativ wenig Code konnte man eine Szene erzeugen, die sogar über eine Physik verfügte. Leider häuften sich in letzter Zeit die Mängel. Zum einen reagiert Box2D bei mehreren Ground-Objekten etwas hackelig in der Steuerung und zum zweiten ist sowohl pygame als auch Box2D nur in 2d erhältlich.

Nur zur Probe habe ich mal über den Tellerrand geblickt und panda3d entdeckt. Installiert wird das über „sudo pip install panda3d“ und ein Demoprogramm gibt es auf https://www.panda3d.org/manual/index.php/Loading_and_Animating_the_Panda_Model Wenn man das Demoprogramm startet sieht man eine Bären in 3d laufen und die Kamera bewegt sich um ihn herum. Für die wenigen Lines of Code eine beachtliche Leistung. Und ruckelfrei ist das ganze auch. Ob ich wirklich zu panda3d wechseln werde ist noch unklar, aber ein wenig rumspielen kann nicht schaden.

UPDATE
Leider hat sich herausgestellt dass Panda3D nicht praxixtauglich ist. Die Game-Engine ist überwiegend auf das Anzeigen von schicken Texturen und Lichtverhältnissen spezialisiert. Dazu gibt es die meisten Tutorials. Wenn man so simple Dinge tun will wie einfach eine Linie zeichnen oder zwei Boxen mit einem Joint zu koppeln muss man schon das Forum fragen. Und dort entdeckt man dann dass in Panda3D gleich mehrere Physik-Engines (Panda-original, ODE, Bullet) integriert sind die sich alle unterschiedlich konfigurieren lassen. Kurz gesagt, Panda3D ist einerseits an Funktionen überladen auf der andere Seite gibt es weniger als bei Box2D. Es hat schon seine Gründe warum sich Box2D so großer Beliebtheit erfreut obwohl die Library viele Schwächen besitzt.

UPDATE2
Was ist die Alternative zu Panda3D? Diese lautet, dass man sich selber eine Physik-Engine hernimmt wie pybullet oder pyode und ontop dann eine Graphic-Engine drauflegt. Leider gibt es das Problem, dass sich pyode unter Ubuntu nicht installieren lässt. Es gibt eine Compiler-Fehlermeldung, und zu pybullet gibt es keine gute Doku. Aber was ist gibt, ist eine Ode-Doku unter Panda3d https://www.panda3d.org/manual/index.php/Collision_Detection_with_ODE#Example Das abgedruckte Beispielprogramm hat zwar nichts mehr mit Panda3D zu tun ist aber dafür erfrischend simpel aufgebaut. Und das beste ist, es läuft reibungslos durch, man sieht nach dem Starten eine Fläche auf die würfel hinabpurzeln. Ist also ODE unter panda3D eine Art von Geheimtipp wie man leicht und ähnlich wie in Box2D komplexe Animationen erstellen kann? Derzeit kann ich das nicht sagen, dafür ist es noch zu früh.

Der eigentliche Grund dennoch bei Box2D zu bleiben hat weniger etwas mit panda3d zu tun als vielmehr mit dem Umstand dass Spieleprogrammierung in 2D um sehr vieles leichter ist. Man denke nur mal an einen Pathplanning Algorithmus wie PRM. Wollte man den in 3D realisieren muss man schon ziemlich fit sein. Kurz gesagt, fürs erste bietet 2D genug Herausforderung, auch wenn natürlich 3D sehr reizvoll ist.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s