Saturday, February 23, 2008

3D Programming

Are you thinking about writing the next Crysis? Well, you most likely won't. At least not by yourself. But if you want to write smaller games or virtual worlds in 3D, there are some good quality free libraries that you can use.

For me, this boils down to a battle between a cuddly pandabear and a trollish ogre, represented by two excellent free libraries called Panda3D and Ogre3D.

Panda3D is a library written by Disney, and maintained by Carnegie Mellon University's Entertainment Technology Center - while Ogre3D is a true open source project.

For simple usage, they are almost equal - but in my opinion Panda is easier to use while Ogre has the most features and cutting edge technology.

While both are written and optimized in C / C++, Panda is intended for programming in Python. If you are a Python user this is a good thing, as everything is very "pythonic". You can also get Python bindings for Ogre, but since this is more of an afterthought you can clearly see it's legacy from C++.

Why would I program a 3D application in Python anyway, you might ask. Isn't that really slow? Well, not really. Since all the 3D functions are already programmed in C / C++ there is no real slowdown in the rendering process. Your Python code is only "glue". And with Python, you get a lot more done in less time - so it makes sense if you are programming on your own or in a small team.

So in the battle of Panda vs. Ogre, who will win? If you are a C / C++ programmer, the choice is clear - Ogre is the most suited for you. If you, like me, like Python, the answer is more "it depends". I would go for Ogre because of it's more advanced features, but you might like the Panda better because it is very pythonic and a little simpler to use.

Check them out yourself here:

There is also Irrlicht, which is an impressive one-man effort. It also has a Python wrapper called Pyrr. It's real easy to start using, all you need is right there. However, it is somewhat lacking in features compared to Ogre and Panda, and seems to be geared at writing FPS games. You can check it out here:

No comments: