I finally got around to reading the entire 1.0 spec. Great job guys!
Lets go over the goals and see if just maybe a different set of goals would lead to more useful decisions.
The goals as stated in the spec are:
Goals and Guidelines Design goals for the COLLADA interchange format include the following:
• Enable validation of files against the XML Schema.
• Is designed and adopted by the major DCC vendors.
• Can be used as a source repository for interactive content.
• Will grow to incorporate additional features.
• Provide Extensibility and Modularity.
• Interoperates with industry standard authoring tools
• Eases content development and prototyping.
• Supports internationalized textual content.
• Supports content streaming.
A few other infered goals are there as well
First of all, this is an interchange format, not a game engine format. We assume that the format will be beneficial to authoring tool users and interactive application content creation pipelines.
Next we assume that content creation pipelines will include rapid prototyping of test content, therefore easy creation and editing of the COLLADA resource is important.
Noticably missing from those goals are anything about being a good format for actually making 3D assets, helping artists, being useful to the most number of projects and a few other things.
I’d like to suggest a different set of goals might help direct collada to something that would benefit more people and help it become more successful, something that I think we all want.
Here are another set of goals
[li] To help artists make the best art possible[/ezzrwkbb][/li][li] To be useful to the most number of teams possible[/ezzrwkbb][/li][li] To make it possible for most teams not to have to write their own exporter or modify collada’s[/ezzrwkbb][/li][li] To make it possible for any team’s pipeline to use collada files exported from any collada conforming 3D tools in as many cases as possible[/ezzrwkbb][/li][li] To be adopted by the major DCC vendors.[/ezzrwkbb][/ul][/li][ul]Unspoken Lesser Goals:
[li] To be a basis for data exchange between 3D packages[/ezzrwkbb][/ul][/li]
I bring this up because the goals listed in the document can arguably work counter to the goals listed directly above and I feel like the goals listed directly above are the real goals for collada. I feel like they are assumed but as they are not written they are often forgotten and the written goals end up leading away from these unspoken goals.
Here’s some examples:
Unspoken Goal: To be useful to the most number of teams possible
This goal would suggest that collada should export every piece of data it possible can from all packages even if it has to export the majority of them as <extra> items. As the spec is now, if one team requires Maya’s Translucency Focus setting to be exported they can’t use collada. With the above goal in mind it would be clear that data needs to be exported and any other data found in the scenes. User Attributes, notes, blind data, etc.
This would allow the team to code their collada-to-game-engine-format converters to look for the extra attributes needed for their game until such time as a more generic non <extra> solution is added to the standard
Unspoken Goal: To make it possible for most teams not to have to write their own exporter or modify collada’s
This means collada is not just a format. It is a format, exporters and possibly a library (a reader). As just a format it’s not very useful to most teams. As a format AND set of exporters (and possibly a library) it’s of great use to many teams. Without this goal it’s apparent from both the spec and comments on this board that collada is considered just a format and if the exporters don’t meet your team’s needs you are expected to just write your own.
It has also been mentioned in other threads that modifying collada’s exporters is not a useful option. First, it would be a burden to have to re-modify the export each time a new version came out. Second, it would defeat the goal below of allowing multiple tools to be used since then a programmer would have to become fimilar with each of those tools and make custom mods to each and every exporter.
Unspoken Goal: To make it possible for any team’s pipeline to use collada files exported from any collada conforming 3D tool in as many cases as possible
This goal as well goes hand in hand with the previous two goals. The only real benefits of collada over any private format are (1) not having to write a custom exporter and (2) allowing the use of multiple 3D tools on the same project.
Unspoken Goal: To help artists make the best art possible
I put this last because the other 3 goals support it but it’s really the single most important goal. Art is clearly the largest most costly investment in game titles today and anything which makes it easier for artists to do their job is paramount. Conversely, anything which hinders them is bad. It’s good to keep this goal in mind when designing features.
For example, the goal of attempting to allow teams to use all 3D packages means artists can use what they are most comfortable with. It also means packages that have special features can be used only when they are needed while the rest of the team uses a tool more familiar or more useful for common tasks.
To be a basis for data exchange between 3D packages
I put this goal as a lesser goal because it is in conflict with some of the other goals above. While I think it’s a great idea, in practice there is no way to be 100% exchangable between 3D packages. For example above I mentioned Maya’s Translucency Focus setting. Max has no equivilent feature so including it in collada would not support the goal of data exchange yet the goal of usefulness to as many teams as possible is more important because as stated, if the team needs that info and the collada exporters don’t export it they are forced to write there own exporters and collada is then not useful.
I hope it is clear these would be a better set of stated goals as they would lead to decisions better in line with making games.
There are some issues with the currently stated goals as well I would like to bring up because they are in conflict with the unspoken goals.
Current Goal: Can be used as a source repository for interactive content.
A “Source” repository would suggest the artist can throw away their Maya, Max and XSI files since all you need is the “source”. Collada is clearly not up to this task and trying to achieve would be a giant burden for Collada. There are thousands of features Maya, Max, XSI and other 3D programs support for which there is no equivalent support in Collada. Constraints, particle settings, IK solutions, expressions, and other items that Collada could generally never hope to cover all yet our artists will use those feature while creating their art. That means the “source” to their art will never be collada files. The source will always be the original files in the 3D editor.
Current Goal: … easy creation and editing of the COLLADA resource is important
Easy creation is great. It’s “editing” of the COLLADA file is the problem. To me, Collada would be best used as a middle format. A format that is used between the artists source files (Maya, Max, XSI file) and the final game engine format. As such it should never ever EVER be edited. It should be considered like a .o or .obj file from a C++ compiler. You take the source file and the fact that it turns info a .obj file before it becomes a .exe file is not of a concern to anyone.
A developer would never consider hand editing a .obj since they know what they are going to need to edit the original source at some point and those edits to the .obj file would get lost. In the same way, editing a COLLADA file should be considered off limits because any editing will be done by artists in their 3D tool (Max, Maya, XSI, etc.)
I bring this up because putting the goal of easy editing directly in the stated goals of collada suggests that decisions will be made effecting the design and usability of collada that directly effect how useful it is as a true middle format. For example a solution that might support a middle format might be passed over thinking the asset will just be edited later by some other tool.
I hope it’s clear there are consequences from the current set of goals. Many of the other current goals do not seem to be directly related to the unspoken goals that I believe we all generally agree on.
I strongly believe that making the unspoken goals the stated and actual goals of collada will help direct collada to being a truely useful and lasting standard which would benefit everyone.