COLLADA vs AUTODESK fbx

Started by
19 comments, last by Sc4Freak 16 years, 6 months ago
Hi everyone I am trying to find out which one of these formats above has more promising future, which one has better support, which one would be better to use. As I understand both of these formats are supposed to be used to convert one format to another, though I read somewhere that .fbx can also be used in a game engine, is that wise? (I'm little suspicious) I heared people complain about .fbx, using various modelling packages with autodesk plugins usualy ended up with their applicatin crashing. Can you tell me something about this? Thanks for help.
Advertisement
Last I checked, FBX was a closed format which you access via the FBX SDK. That was enough to turn me off then; I didn't feel up to wrapping the SDK in C++/CLI to be able to use it with my tools, and I could use the .NET XPath APIs to wrangle Collada quite easily. XML -- text -- is also a little nicer as an interchange format because the data is more-or-less human-readable.

Because of the above, I never used FBX so I can't comment on it beyond that. Collada supports a lot, but has a definite feeling of overengineering sometimes and can be a little awkward to handle at times. For the most part, I'm pleased with it.

I wouldn't really recommend using any format designed for interchange directly in a game, as they tend to be overly verbose and ill-suited to optimized load paths.
I don't quite understand what you mean by "wrapping SDK in C++/CLI", could you explain that to me, please?
I don't know fbx either, but collada. Collada has been adopted by many 3d tools, developers etc., so I think that this format will be the de-facto standard in the future. Collada supports all you need, including phyisics, animation etc.

As jpetrie already said, I wouldn't read collada or whatever format directly into my engine. I designed my own model-format optimized to my engine requirements and wrote a collada-converter.

An other tipp: don't write your own exporter ! Use an existing exporter and just write a converter. An exporter is tool bound and that is really a bad idea (learned it the hard way ;-) ).

--
Ashaman

Thanks for info guys, I appreciate it

can you tell me what usefull tools for working with collada are there?
Quote:
I don't quite understand what you mean by "wrapping SDK in C++/CLI", could you explain that to me, please?

I develop in C#. The FBX SDK only provides a C interface, iirc. Which means I would have to write a wrapper around it in C++/CLI so that I could call it from my managed code.

Quote:
can you tell me what usefull tools for working with collada are there?

VS can generate C# code for handling Collada file's from the schema, but I've found this ugly and prefer XPath. There's FCollada and the Collada DOM SDK for C++.

Tool-wise, nearly every modelling package can export to it (I use XSI) and there are external tools like the Collada Refinery to perform content processing.
Hi,

I was wondering why you wouldn't use collada directly in your engine?
theres nothing wrong with using collada (loading/parsing is fast enuf with most datasets)
the major issue is how much to support, collada does everything under the sun, whereas for your game youre most likely only wanting a small subset of that, ie its overkill. i suppose theres nothing wrong with a having a collada-lite loader
Quote:Original post by bronxbomber92
Hi,

I was wondering why you wouldn't use collada directly in your engine?


Takes too much space and handling it takes too much time, kills the performance.
Collada is designed to be an interchange format; this basically means it's designed to support a lot of data formats, data sets, et cetera in a generic fashion. Collada in particular elects to do this via XML.

While the Collada schema imposes some restrictions on element ordering, it still allows for extensive cross-referencing between data sets, which ultimately makes for less-than-optimal load performance -- especially when you factor in the conversions neccessary to bring the Collada data into the in-memory format you'll actually be using for rendering.

The performance impact isn't generally a huge issue for the small datasets of hobby games. For professional games, the sheer amount of assets that need to be loaded is generally large enough that load-time optimization can become a valid concern.

It is certainly possible to use Collada directly, it's just not the best choice.

This topic is closed to new replies.

Advertisement