Ogre VS IRRLICH VS PANDA 3D

Hi all,

I’m new around here so i dont know very much about Panda 3D! :frowning:

I’m wondering use Ogre, IRRLICH or PANDA 3D

I need to do a project and the main funcionalities that i need are:
SPATIAL CULLING,
PERFORMANCE,
COMMUNITY,
INTEGRATION WITH MULTIMEDIA FILES,
POSSIBILITY OF CALLING WEBSERVICES, and OOP.

Can someone give an advice ? :unamused:

I have used those three a little, so there we go:

I don’t get the “spatial” bit, but the three engines implement all the culling that you are ever gonna need. I don’t even consider it because it’s a given.

Hard to tell. Nobody has implemented exactly the same complex scene in Ogre, Panda3D and Irrlicht and compared it. The only way of knowing is doing it (and if you do so, please share, I’d really love to know if Panda is slower to find the bottlenecks).

Panda3D > Irrlicht > Ogre3D

If python is the language you are gonna use, Panda3D is the obvious choice, anyway. If you are gonna use c++, Panda3D has the greatest percentage of solved threads I’ve ever seen in a forum of any framework. This is probably due to the fact that there’re two main developers that check every thread. People is much more rude on Ogre3D and Irrlicht forums (specially Ogre3D), but that is just because they are purely C++ frameworks and your average c++ coder is a bigger nerd than your average python coder, which leads to a worse attitude towards newbies (sad, but true) so let’s not take that into account.

Well, if you look at numbers, irrlicht wins hands down here, it supports reading a lot of formats. However, I would say that Panda still has better support because the import/export tools are provided and maintained by the same people that makes the engine. So you’ll usually get a much smoother experience. (Well, this is assuming you use the same tools Disney do, and I’d recommend doing so.)

This is easy, because Panda3D is the only one with networking support. Also from 1.7.0 onwards (coming out soon) Panda will have browser plugin support, which is also unique among these 3 engines.

Again, I assume you are gonna use C++, because otherwise, the choice is pretty obvious. The three of them are well designed in this regard. However, Ogre3D has too much abstraction in my opinion so modifying it is hard, sometimes impossible to do right, also it reinvents the standard containers (for string, vector, etc) and that is always a major pain. Irrlicht has a simple and horizontal design but it also sins by reinventing the standard library. Panda3D has a pretty simple, horizontal design and it uses the standard library, so you’ll find extending Panda3D the easiest of the three. Also, if you are gonna be using C++ you’ll end up wanting to submit some patches for your own convenience, and the Panda maintainers are very open and accept almost anything as long as it makes sense, even if it isn’t of use to them, whereas Ogre3D and Irrlicht (specially ogre) have an attitude of rejecting anything they don’t need. This is an usually overlooked factor that I would rate as the most important when deciding on what library to use for a project.

Someone made a port for some ogre demos (ocean shader?) for panda and if I recall correctly panda was 5-10fps slower then ogre on my machine.

Multimedia files like movie clips? Panda can use a avi file as a texture (I think ogre can with a plugin or something).

hearsay, proof please.

Hmm… the term “webservices” has a quite concrete meaning, not just “talking with a remote computer via sockets or whatever”. If you just want to do some client/server communication then Panda3D has built-in support and Python offers good networking modules too.

If you mean “real” webservices, that is you have seen the word WSDL, SOAP, UDDI, BPEL or ESB somewhere close to the word WEBSERVICE, then things are not that easy. Sorry.

Neither Panda3D nor Ogre nor Irrlicht have native support for webservices. At least I never have seen any support for webservices.

Python does have a few webservice modules, but they are ill maintained and outdaten (pySOAP, Zolera, etc.).

If you really have to work with webservices you should consider using a Java-based 3D engine (sorry guys, I know this hurts, but Java has the biggest community for webservices).

EDIT: Another option would be to use Panda3D, Python, and JPype. I had some good experiences with accessing JBoss EJB3 beans from Python through JPype.

EDIT2: suds does look promising. Wonder why I missed it so far.

Well, for any given sample program, you’re likely to find performance differences from one engine to the next. Porting a demo program originally written for a different engine (and presumably optimized specifically for that engine) may not be an accurate measure of relative performance.

Really, the concept of “performance” of a graphics engine is not well-defined. In any engine, some things are faster than others, and in any engine, you can write fast code or you can write slow code. One of the key questions is the relative effort it takes to write fast code in a particular engine.

David

note, if you are using SOAP i really recommend the SUDS, its made of pure awesome.

First, saying 5-10 fps is meaningless, if the fps is 900, a difference of 5-10 fps is insignificant, if it’s 25, then it’s huge.

But it still interests me, from searching the forum, I guess you mean this.

And yeah I somehow thought of 3d models when I read “multimedia files”, sorry.

True, all true. I’ve run once again the “ocean2” from clcheung’s Demomaster and the fps was around 30-40fps, the similar demo from ogre has running at 70-90 fps :confused: (on: athlon xp 2000+, 1gb ram, gf 6200)

I still take panda over ogre any day of the week :wink:

I kinda noticed that too…
Anyway, Panda is a GAME engine, should we really compare them?
Irrlicht is a 3d engine. Its “ultra fast” and very small. It has like 1 dll. But its a 3d engine. The zlib license is interesting too.
But the thing is if you want physics or at least audio youll need to learn some 3rd party libraries like Bullet, ODE; OpenAL or IrrKlang (which isnt zlib), which is hard (at least for me). In panda ill just use 1 function to load a music file.
In the irrlicht community if I ask if it has some feature I will likely get a reply like “you can write it yourself” or “use shaders for that” (in that case lets just use OpenGL [/sarcasm] ).
The newer versions of irrlicht dont look so clean too. New sample applications were added but they didnt add html docs for them like the old ones. Irrlicht is just getting “unclean”, or “untidy”.
Also, there was a time when Niko was writing the whole engine, now im not sure if he spends some time on it, or is it the team that do it, cause i have a feeling (from his blog) that he spends most of his time on commercial stuff like IrrKlang and CopperCube…
OGRE is so complicated for me, i couldnt even read the sample programs, and i dont think im THAT bad. Plus so many dlls, and they get even more when you add audio and physics. OGRE is bloated.
Finally, python is cleaner and smaller.
I achieved results with Panda in few weeks which would take me few months to do in irrlicht.

Yes, I do think we really should compare them as much as we can. Panda3D has a rendering engine after all and there’s no reason it should be slower. Comparing is the best way to measure performance, in fact I think I may take a day off to make a benchmark suite of portable demos that run in the 3 engines. Having a general benchmark (like the javascript benchmarks for browsers or 3dmark for gpus) is indispensable to measure progress and detect bottlenecks and regressions, imho.

Tell me when you do.
PS. Compared to Irrlicht Panda starts really slow. Is it reading the Config.prc that makes it slow?

One might consider comparing Python-Ogre: crystalspace3d.org/main/Main_Page as well. I’ve used both, along with Irrlicht in various projects and they have their merits and detractions too…

Cheers.

Ah, I did some work on that. Now Panda starts as fast as Irrlicht. See this thread:
EDIT: I just realized I never updated that thread with the resolution, I updated my p3pd page with the settings.

First of all, you need to switch to Panda 1.7 because the biggest bottleneck of all was fixed there. Then you have to use two experimental config variables that skip some initialization code. These two flags apply to windows only, and one of them apply to directx only.

Also take into account that an opengl device takes 0.5 seconds to initialize on Windows Vista/7. There’s no way to avoid that, if you want an instantaneous start you need directx.

Good job! :slight_smile:
But do you mean I can get the 1.70 from cvs or something and compile it?
You mean with OpenGL i wont get much difference? Because now it starts in about 4 seconds.

according to the page he linked, updating to 1.7.0 only will gain you 2 seconds (which aint bad at all)

It’s 2-3 seconds with merely changing to 1.7.0, regardless of platform and api. That was a simple thing that David removed when I asked about it so I didn’t measure it much. Then you gain another you 0.4 seconds in Windows (any renderer) when turning off request-dxdisplay-information. Then, if you use directx you can gain another 0.2 seconds by turning off dx-count-all-cards-memory, this seems like too little but considering directx can start up in 0.1 seconds it’s a lot. I don’t use python so this is c++, and if you use python it will take a little longer to start up, of course.

I´m very happy who´s everybody about graphics. But a good game is not just graphics. I already work with Ogre3d, Irrlicht and Panda3d and choose Panda3d for my projects. That´s my reasons:

  1. Input System : Just base.accept and not a complete object to do the work. The fact of direct.object accept all kind of custom events is wonderfull

  2. interval, parallels, sequences … once you know about it, you don´t live without it

  3. No rigid architecture. Engines like ogre force you to work inside a rigid pre-fab architecture. I hate this in ogre. In panda you can put your programming style freely.

  4. Game management : in panda isn´t hard you control tasks (enabled, disabled) and states (FSM rulezz) no arcane rituals to did it.

  5. Better Documented : all right people … between these 3 engines panda has better documentation. If you´re rookie, you´re in home

  6. Community : Believe me, Panda got comunity and support very very very more forward than ogre or irrlicht.

  7. 100% Blender´s compatibility: okay man, try to export .bsp levels from blender to ogre without learn more 2 or 3 softwares. Or models to irrlicht. If panda just export and be happy.

Okay boys. All game engines got strongs a weaks. But i choose co´s panda got more strongs than weaks for my projects. Besides python make your 100 lines c++ code in 20 lines (believe me boy!).

Regards for all

Hi All! :smiley:

Thanks for the fast (and very exaustive/usefull) responses!
I’m a newbie beggining in the area and i’ve put the same question in this forum, irrlicht forum and ogre forum! You guys were the most atencious and helpfull! :laughing:

Besides that, i’ve made comparisons and the Panda 3D seems to fit my needs, the network modules and python is a great thing (cause i’m used to php frameworks like Zend).

The final choice is almost done, i only will try to know wich of the three has best performace. With some luck Gogg does something that way but i’ll try to do (dont know yet how) or discover!

One more time thank you Gogg , wezu , treeform , enn0x , drwr , Anon , jhouck and texugo!!

btw: texugo are you portuguese ? Or anyone ? :stuck_out_tongue:

PS: Anon you were completely right: in the ogre and irrlicht foruns they were a “LITTLE” rude! :smiley:

the performance question is easy to answer but hard to proof.

panda’s performance is as good as your hardware is. if it’s not. you either did something wrong , or you didnt optimize somthing.

that’s also the reason why different engines might perform a lot different with one and the same benchmark. cause some engines optimiize some stuff by default while others leave that option to the programmer.

very simple example for panda. drawing 1000 cubes.
if you create 1000 nodes with one geom each. you will get low fps. even on good hardware. if you use flatten (or rigid body combiner) you can run 100times as many and still get decent performance).
so it really is up to you to optimize your scene to perform good.

sounds difficult. but since panda3d is a mature game engine, it comes with excellent profiling tools. you can just fire up pstats and you can immediately see which part of your game eats how much processing. and. this is a BIG help for finding bottlenecks and eliminating them.
i’d say it’s one of the coolest and strongest features you get by using panda. not only an engine but a number of (maybe boring) but extremly useful tools you’ll definetly need one day.