I’ve read articles dating few years back about how Collada is dead and never became the only format everyone would ever need, but honestly, Khronos certainly hasn’t killed it and while few libraries for parsing it have died and it never became what we expected, that’s not really a good reason to try searching for something else.
Collada is still supported by 3d modellers, with tools still updated, better than any other format I know.
We just don’t have a better option. Alternatives come and go.
So what’s the situation with Collada and Panda now? Last time checked animations weren’t supported.
I personally have few reasons I’d like to switch to Collada from Egg for my project.
Most common issue is people not using Max, Maya or Blender. Personally to me Blender’s UI has always been very intuitive and since it’s free you can just export/import in blender/re-export in egg, but seems I’m in the minority when it comes to Blender’s UI and I still agree this is an unnecessary step.
Of course for many 3d modelling packages the Collada exporter doesn’t support everything or is even broken, but then it makes more sense to improve or rewrite an importer/exporter for Collada than Egg which will only benefit Panda users.
An example of this for Blender can be found here: godotengine.org/wp/download/
When you are a company hiring artists for your project, it’s not hard finding Max, Maya or Blender users. For indie devs and/or games with heavy emphasis on user created content this is a huge issue.
Games with (model) modding support.
I want to modify my old project to use Collada format instead of Egg format for model mods. I don’t think games supporting modding are rare these days. I personally have no issues with Egg, but modders are not really fan of the format because, besides the above issue, there’s almost no way to get it back into the 3d modeller after exporting in one piece. Maybe not an issue for the mod’s original author, but when others want to make a derivative work when the original author has allowed so it gets problematic: trying to find out how to contact the original author, hoping he’s still around then hoping he uses the same 3d package and when he doesn’t asking to share in a format like Collada. Then they wonder why not use Collada for the game as well in the first place and not go through all this? I can understand that.
Another reason I have myself for switching to Collada is I have projects using other engines which use Collada. Having the same format for all my assets helps, especially when I’m switching between engines, like right now when I want to port a game to mobile.
The other 3d formats Panda supports are too limited to even consider.
Using an engine which has its own format and tools for exporting from few modelling packages is certainly better than having an in-house format and writing the exporters ourselves as we used to do, but this isn’t a good option either.
So what’s Panda’s current situation and position on Collada?
I fully agree with the need to have good, native support for a well-supported interchange format. This is exactly how we felt a few years ago when we had intended to move towards replacing the .egg format with COLLADA entirely.
However, the adoption of COLLADA as an industry standard interchange format has been very wanting. There are a few major issues that come to mind:
COLLADA does not specify explicit support for anything but the most basic types of materials. This means that every modelling program ends up either not supporting basic features like normal maps or PBR maps, or they have to write their own extension to do the same thing.
The spec is rather broad and vague in several areas, particularly skinning, which ends up meaning that every modelling program has their own idea of how things like skinning matrices should look. This means that supporting every possible modelling program that can export some form of COLLADA is a pain.
The most popular modelling program of choice in the community is Blender3D, which has abysmal support for COLLADA. (You have to use Godot’s “Better Collada exporter” to get even reasonable results.)
Given that it is a pain to properly get assets from most modelling programs into a 3D engine via COLLADA at the moment, and given that a loader has to support so many different dialects (defeating the purpose of an interchange format), it doesn’t seem very feasible as a good replacement for .egg, at least not at the moment.
I wouldn’t quite say there aren’t alternatives that enjoy better support. FBX has a long-standing reputation of being an interchange format supported by game engines and modelling programs alike, which makes it seem like an appealing option. It even enjoys better support from Blender than COLLADA does. I think investigating this might be more worthwhile.
Of course, I’m not saying that we shouldn’t have better support for COLLADA. I fully agree that we should, and I welcome any effort to build a native COLLADA loader into Panda. At this point, it just seems unlikely to me that I’ll personally spend time on it in the near future, nor that it grows to become a replacement for the .egg format.
As for the current state of COLLADA in Panda3D: we have dae2egg, which is written using a now-obsolete parsing library (FCollada). It has as of recently limited support for animations (by “limited”, I mean that the animations of some modelling programs are still broken), and is subject to the limitations of .egg (ie. no lights), but it otherwise gets the job done for simple models.
We also have a native loader for Assimp, which does support loading COLLADA (among other formats) including lights. It does not support animations at present, but there seems to be someone interested in adding support for it.
When has this been checked the last time? I mean comparison of different modelling programs/exporters? Things might have changed in the last few years. I know 3dsmax and Maya both have several exporters now. Maybe some of them store data in a more similar way.
If you want, I could try them all (Blender, Max, Maya) and see if anything has changed in this regard. Just tell me what data will need to be exported and tested in Panda.