I have been working with collada support for a third-part engine in java since April.
This included support for most things in the collada specification: Geometry, textures, materials, light, static animation and skinning.
I can share some positive and negative thoughts I have encountered. This is just my personal reflections, I’m not an experienced programmer, but I have good understanding of how the collada format can work as a data format besides as an exchange format.
It is an ASCII format so data loading may be very slow.
There are fast XML parsers out there both in C++ and Java. Even if you gain a differ in loading time that is noticeable for the user your bottleneck might not be the parsing time but geometry instancing, texture data loading or any other algorithm that could be focused on if loading times are considered slow.
There is no binary format for collada as I know of.
Something to keep in mind for Collada is that the specification is very clear through its XML schema. Exporters for various DCC cannot (read should not) output data that differs from this specification. My experience is that the good specification in collada made it easy to write a reader and very easy to debug. If I encountered a problem I would almost always know if it was a fault in my reader or in the XML document not following the specification. I think that a speed increase of a programmer maintaining the reader could be considered together with the speed loss for choosing an ASCII format.
I could not get from the engine specification if you use a scene graph of some kind. This could map very well with collada depending on your internal structure in the engine.
The format and tool exporters don’t appear to be mature enough yet
I think that the format is very powerful. For example Collada 1.3 should allow you to store shader information and advanced animation support through the channel targets. Collada 1.4 should be even more powerful with physics support and additional features.
Personally, I have had several problems with the DCC exporters. I’m not the only one but the problems depends on how your engine works and what features you need from the exporter in order for your engine to work. I had problems with schema specifications due to the strict validation routines in my parser. Others had problems with missing features.
If you think that the format and tool exporter is not mature enough yet … then you have a great opportunity to point out what changes you would like to make here in the public forum or directly to the plug-in developers! It’s great to have influence to the format and developers so that you can make it more suited to your engine and its structure. And also perhaps to influence the feature of the format. My experience is that the open format for collada and open source of collada related things helped me tremendously with my work. My guess is that I would not have this chance if I worked with a closed format.
If you want feature X and the DCC tool does not export it then push the plug-in developers, report bugs and/or post feature request.
Can we enhance the format to add additional entity details for our levels?
IlyaBely’s post said is well. It is extend-able without interfere with the specification. Even if you miss elements in the collada format you can always use the existing specification and interpret them in any way you want. The node elements could be AI spawn points, exported quads could be used in a portal system etc.
Any other issues that we may be missing to understand yet?
I would suggest looking at Collada 1.4 support. The DCC plug-in should work with 1.4 when 1.4 is released so there is no point in writing a 1.3 reader. So get in contact with the development team of collada and ask them for features of the 1.4 version.
Collada could be used as a engine->collada pipeline. If your engine works with nodes similar to collada you could have a very powerful feature of recording world data, parse this into a collada document and import the document into a DCC tool for debug, rendering and even movie playback. An engine that provides engine GUI debugging in their artist favorite DCC tool is in fact such a good idea that I’m thinking of stop writing right now before anyone steals that idea!
Again, this is all my personal opinions… (and yes I tried to keep it short but failed!)
… but I hope you have gained some insight from a programmers point of view.