Collada Hell

Started by
22 comments, last by wiegje85 14 years, 5 months ago
It is official, my spirit has been broken by the inconsistency of model formats, SDKs and APIs. First I tried FBX, it had an SDK and all that and it is a pretty solid binary format, even supporting CGFX shaders. So much win, I thought. It made me cry. So I thought that Collada would be the cure to my broken spirit. This made me cry harder. From what I gather there are 3 major collada parsers out there: FCollada, ColladaDOM and OpenCollada. All 3 parsers have one thing in common: bad documentation, lack of examples and/or support. FCollada went commercial, ColladaDOM is making me cry and the "doc" folder in OpenCollada is empty. I ask all, am I doing something wrong? Or is this really the ugly truth? Are there any examples out there to get a beginner up and running using Collada? Yes I have searched the forums, but no answers. That and most threads were 3 years old and apparently Collada changes its specs every week.
Advertisement
Quote:Original post by wiegje85
I ask all, am I doing something wrong?

I think not. While I wasn't directly involved, I heard a lot of swearing from some guys at our company who were evaluating various Collada SDKs for both data import and export. AFAIK, it was eventually decided to code everything from scratch instead.
Yeah, I use the Horde3D engine, and they ended up writing their own collada parser from scratch too. It's apparently not too difficult if you know which parts of the spec you want to support -- the hardest part is adding in all the "special cases" when different Collada exporters do things slightly differently...
Can I suggest assimp? I've been using it in my current project to convert from various formats (though usually Collada, since that's the format that Blender and assimp have in common) to my game's own format, and it's really great! The API is clean and obvious - so much so that I've barely glanced at the documentation.

Plus, as the assimp website says, "just because of its name, the use of Assimp will render your program sexier"

(I've got nothing to do with the assimp project, just a happy customer [smile])
Just curious, what part of the FBX sdk made you cry? I started working with FBX a few years ago and I didn't find it that bad. I even made some video tutorials showing how to extract data from FBX files. I currently use FBX to load 3D models into the games that I make.
Hi all,

Thanks for the replies. It's good to know that I'm indeed not the only one pulling his hair out over this asset issue. I'm checking out Assimp right now :)

About FBX... I hate the fact that their documentation is heavily out dated, the samples they provide don't really show anything.

I'll keep you updated ;)
You could buy the collada book then use something like tinyxml to read and write your own collada files. The collada file format is quite easy to follow and the book details it quite well.

And aside from Assimp you might want to look at Irrlicht. Its a graphics engine but it supports alot of file formats and I recently, as an experiment, used it as an importer for Cinema4D to load in quake files.

[Edited by - kbar on November 7, 2009 4:16:40 AM]
To me, COLLADA_DOM isn't THAT bad, though from time to time you do find that they change things and there you are chasing the documentation for the new stuff in the wiki.

The guys from Sony do frequent the DOM forums, so you can ask post your questions there and receive answers directly from the developers though.

I think the problem is inherent to the format, it just does too much, in so many different ways, and even allows for you to do things your way, no matter the API, in the end you'll end pulling your hair.
Same here. I used fbx a couple of years ago (don't remember the version, maybe was 2007). It was a bit messy, but I succesfully implemented bone animation export from a fbx file to a custom format in 2 days. Woah!

...then the night arrived.

I tried recently the new fbx release (2010 or something similar). I wanted to create a full fbx2myformat converter for everything (meshes, normals, binormals, textures, animations, etc.). I failed. I drowned in the ugly code, the poor documentation and examples. When I was looking for a functionality, it was usually so unnecessarily nested into sub-classes and spreaded into sub-methods to make me crazy. And then, after digging in the sdk headers, I found some functions with interesting names (like "getTheNormalsYouWereLookingSoHardly()" or "finallyHereTheresTheMatrixYouWereLookingFor()")... but a couple of lines before a comment was saying /* !!! DEPRECATED/TESTING METHODS, DON'T USE THEM, UNDEFINED BEHAVIOUR !!!.

Cool.

Then I tried with Collada, and discovered that it was the same fbx mess but in ascii format (btw fbx includes an ascii format as well). Poor documentation, unstandardized exporters, several format revisions, etc...

I started crying with you.

So what did I? I resurrected the previous 3dsmax plugin I wrote and updated it with the new custom format used in my engine. Fortunately 3dsmax is sold each year with a BUV (Brandnew useless version), but my original plugin code (wrote originally for 3dsmax 3!!) is *STILL* compiling exactly the same way without *ANY* change after 7/8 releases of studio max. Very good backward compatibility? Just smoke in the eyes with newer versions? Roll the dice and check the answer! :-P
Quote:Original post by apeternier
Same here. I used fbx a couple of years ago (don't remember the version, maybe was 2007). It was a bit messy, but I succesfully implemented bone animation export from a fbx file to a custom format in 2 days. Woah!

...then the night arrived.

I tried recently the new fbx release (2010 or something similar). I wanted to create a full fbx2myformat converter for everything (meshes, normals, binormals, textures, animations, etc.). I failed. I drowned in the ugly code, the poor documentation and examples. When I was looking for a functionality, it was usually so unnecessarily nested into sub-classes and spreaded into sub-methods to make me crazy. And then, after digging in the sdk headers, I found some functions with interesting names (like "getTheNormalsYouWereLookingSoHardly()" or "finallyHereTheresTheMatrixYouWereLookingFor()")... but a couple of lines before a comment was saying /* !!! DEPRECATED/TESTING METHODS, DON'T USE THEM, UNDEFINED BEHAVIOUR !!!.

Cool.

Then I tried with Collada, and discovered that it was the same fbx mess but in ascii format (btw fbx includes an ascii format as well). Poor documentation, unstandardized exporters, several format revisions, etc...

I started crying with you.

So what did I? I resurrected the previous 3dsmax plugin I wrote and updated it with the new custom format used in my engine. Fortunately 3dsmax is sold each year with a BUV (Brandnew useless version), but my original plugin code (wrote originally for 3dsmax 3!!) is *STILL* compiling exactly the same way without *ANY* change after 7/8 releases of studio max. Very good backward compatibility? Just smoke in the eyes with newer versions? Roll the dice and check the answer! :-P


We should be friends, considering we shared the same blood and tears. I have implemented Assimp into my engine, and .. yes of course, it does not work out of the box. Not only is the SVN version of Assimp bad (some retard commited stuff that doesn't work (forgot to declare variables needed by a function) and forgot to commit a needed header file, Thanks Assimp!!!! ._.) but it cannot import the model I have exported to Collada with the standard settings. Oh and animations aren't fully supported by Assimp's Collada importer either.

Sigh. Will it ever end?!

This topic is closed to new replies.

Advertisement