Collada support any progress at all?

Is there any progress in adding native support of Collada dae files to Panda3d?
The last info I can find is around two years old and it seems very little is supported.

I am thinking if I should add a Blender 2.6 to EGG pipeline for our projects or wait for Collada support.

I’ve put it on hold for now, it’ll probably be in 1.9 or so.

Keep in mind that for now there is always dae2egg, which should support most basic features (except for animations). I will keep supporting that and providing bugfixes for it until the native support is ready.

Oh, too bad.
OK, I’ll probably write an egg exporter then.
The problem with egg files is that it’s text based and loads comparably slow. Bam is binary, but it seems it’s version dependent.

Um, Egg is an simple (text) XML file, Collada is XML (text) too.

Also there is bam2egg which converts bam files back to egg files…

hope this helps,

That’s the way it should be!

EGG format is for exchange between tool, e. g. Blender to Panda3D. A format for exchange between tools has to be easy to read/write, and humand-readable. It does not have to store data in an optimized/performant way. All these things are true for EGG format. (By the way: EGG format is not XML, but more like C-syntax).

BAM format is binary, and optimized for fast loading. BAM is the format you should use inside your Panda3D applications only. My advice would even be to use EGG for development, and use BAM only for release/deployment.

Look at it this way: import your data to Panda3D using EGG format, then compile it with Panda3D tools to binary BAM format. If you switch to a new Panda3D version re-compile your BAM files. So keep the EGG sources around somewhere.

I would add that this workflow is “transparent” if you use Panda3D’s deployment tools. Indeed, you can just maintain egg files inside your repository, and when you build your application they are automatically converted to bam files. So, you don’t need to bother with bam files, recompilation and the like, you can just use egg files (obviously, if you don’t specifically need bam files before the build process).

Furthermore, with the model-cache-dir set in your Config.prc file (it is set by default), Panda will automatically convert any egg files to bam files internally for fast loading after the first load. So there’s really very little reason to have to deal with bam files at all–you can use egg files exclusively and get the version independence of egg files, and still have the fast loads of bam files.


I may have mistaken that Collada also has a binary version. If this means dae and egg will likely load at the same speed and dae will also be converted to bam in the end, then never mind.

The “convert your eggs to bams before distributing your game (optimize your assets before distribution)” model won’t really work for our game, because of it’s heavily moddable nature. Users make their model mods and upload and share them with other users. We could only make sure the original models are optimized, but that wouldn’t be a good idea either because users are meant to edit those too. We could write a bam importer/exporter for Blender like we do for our in-house binary model format (which supports far less than egg/bam), but this wouldn’t be a good idea either as bam seems to be so optimized for Panda, some required data for importing back to Blender could be lost and most importantly old models might not load properly in never versions of the game.

Anyway, I understand the philosophy behind the egg/bam files, I just wanted to clarify why it’s not perfect for our case.

I have an unrelated question: can you change the cache folder of Panda, to say the game’s dir? Some people are a bit conscious were the game stores it’s data in their computer.

You can set the model-cache-dir variable in your Config.prc file to set the cache directory wherever you like.


For the record, though, I believe the default model-cache-dir is set to a directory in the user’s Application Data directory, or the home directory on other systems.

Out of curiosity, how complete is the current DAE to EGG converter? Does it have full animation, texture, and material support?

It should have full texture and material support (excluding things that .egg doesn’t support, such as shaders), but it has no working animation support.