So, uh, the “post in a week” idea did not quite work. Sorry about that.
About half a year ago, our team at work that develops the engine decided to try and switch from the proprietary Maya export plugin (it exported geometry, animation and materials) to COLLADA. The old export pipeline was somewhat obscure, lacked some useful optimizations, and (what’s most important) lacked any convenient way to setup materials. That was not a problem for platforms with more or less fixed functionality, but with next-generation consoles (or should I say current-generation already?) it’s quite different.
So the switch has been made (it did not take half a year, it’s just that I’m writing about it only now), and I’m going to share some experience gained throughout the process.
What is COLLADA exactly? It’s an asset interchange format, based on XML (with complete XML Schema and specification), and a series of tools – exporters from popular DCC software (Maya, 3d Studio Max, XSI, Blender, etc.), viewers, libraries for loading/saving/manipulating COLLADA DOM tree.
This means several important things. First, it’s an asset interchange format, which means that it is not supposed to be used as a format for the retail assets. DCC saves COLLADA file, the custom tool loads it, reads useful information from it, applies optimizations (possibly platform-specific), and saves to some binary format. Second, you don’t have to write the export plugin for any DCC tool you use – in theory, all you do is write the said tool that converts .dae to your format and it magically works with all possible tools. Third, it’s slowly becoming something like an industry standard – every popular DCC has an export plugin, some well-known tools can read DAE files (i.e. FXComposer), it has support of well-known companies like Sony, and more and more engines are adopting it.
But that, of course, does not mean that it is a perfect solution.
So, what exactly are COLLADA advantages (why do you want to use it)?
Well, so I’ve told all the good things about COLLADA I know of. Unfortunately, there is a number of things that are not so good.
So, generally, ColladaFX seems great on paper, but requires a lot of work, both in technical implementation and usability areas. We are considering rewriting the Maya interface part from scratch.
Fortunately, COLLADA exporter plugins we're using are open-source, so we debug them if they do not work, fix bugs (isn't it exciting?!) and add functionality as we feel appropriate (though of course this complicates the process of updating plugin versions).
Let’s summarize the above. If you do not have any established and well-working export pipeline and are not planning a custom DCC plugin for material setup or things like that – I’d definitely recommend COLLADA, because it’ll be easier than a custom plugin if you don’t have the relevant experience, and it will make it possible to support several DCC tools, which is a good thing. If you have a well established export pipeline that you’re happy about, there is obviously no need to use COLLADA. In other cases the answer is more complex. I myself am quite happy because of transition to COLLADA, because it made everything better, and the major disappointment of COLLADA was ColladaFX, which we did not have an equivalent for anyway (and export of default materials like Phong/Blinn/Lambert works just fine), but of course your mileage may vary.
If you are using COLLADA and have different experience about any of the enlisted areas, please write a comment! For example, do you use ColladaFX? Do you use FCollada and/or ColladaDOM and does it help you? Perhaps you use Feeling Software proprietary export plugins and have something good (or bad) to say about them?
Sunday, February 24, 2008
COLLADA: Best thing since sliced bread or not?
Posted by Arseny Kapoulkine at 7:40 PM
Labels: asset pipeline, COLLADA
Subscribe to:
Post Comments (Atom)
We use COLLADA FX with the ColladaMaya exporter, but it took some alteration of the exporter to pass along some information that Feeling didn't think was important (the other problem with using ColladaMaya/Max, is Feeling doesn't support the whole COLLADA spec). Specifically, we use Ogre3D for rendering and it is much more expressive in terms of material capabilities than COLLADA's material support (any part of it). The answer we chose was to leverage the <annotation> sub-elements of the COLLADA FX parameter declarations, but ColladaMaya/Max only pass along the actual UI annotations it needs to create the HyperShade UI elements.
ReplyDeleteAll in all, COLLADA has worked for our needs (so far, we've used it here only for environments, for which it admittedly is a bit heavy), but the promise it holds (and on which it often delivers) in terms of instant interoperability is worth the few pains I've had to deal with in terms of integrating it into the pipeline.
Lastly, the reason I chose FCollada is that I started with raw XML, then the COLLADA DOM API (and then its integration classes) and while I was constructing my intermediate-class codebase, I realized that someone surely had done this before, and shortly after that found FCollada and haven't looked back (even now that Feeling has dropped its support for all of its COLLADA tools and made them all SourceForge projects).