COLLADA: The game developers' open source data exchange format

by Jon Peddie on 7 September 2006, 11:30

Quick Link: HEXUS.net/qagqi

Add to My Vault: x

COLLADA questions and answers

By Rémi Arnaud and Mark Barnes

1. Is COLLADA an interchange or intermediate format?
COLLADA is designed to be an Intermediate format but it also has similarities to an interchange format. An interchange format is used to exchange data from one digital content creation (DCC) tool to another. The goal for such a format is to be able to transfer files with the features that the DCC tools provide. A simple example would be the ability to exchange NURBS primitives from Maya to 3ds max. The programs need to have export and import support for a specific interchange format.

An intermediate format is a format that is used to extract data from a DCC tool in a form that can be processed to create the data used in the final application such as a game

So, the main difference between an interchange format and an intermediate format is that the interchange format needs to support the desired features provided by the source and destination DCC tools. The intermediate format only needs to represent the data in a way that is useful for the next application in the tool chain, and does not need to be loaded back in to the DCC tool.

COLLADA is designed as an intermediate format for interactive applications such as games, interactive training tools, and web-based interactive applications with the addition that all applications need to be able to export and import the COLLADA format. Therefore COLLADA can be seen also as an interchange format, but limited to the features required for its domain of application.

2. Can COLLADA be used as source or target format?
A source format is the format that is used to save all the information from the DCC tool. Frequently, this will be a proprietary format that can only be opened with the same DCC tool used to create it. The target format is used by the target application directly, typically a compiled, binary optimized, often encrypted, format that is specific to the application and the target platform.

COLLADA is not designed to be a source format nor a target format though it may be used as either. It is designed to be an intermediate format that can carry the data from the source to the target. COLLADA can represent the same data in several forms, and can store more than one form in the same document. For example, N-sided polygons with holes as well as optimized triangle strips and fans can be represented in COLLADA. The main reason all the COLLADA tools can load and save the format is to enable content processing tools to reformat the data in the proper form during its trip from the source to the target.

COLLADA is highly extensible, so some tools use COLLADA as a source format (Equinox 3D), and use the extra data to store any additional information specific to the tool, such as the menu placement, the background color, etc.

On the other end, some applications such as Google Earth, use COLLADA as the target format. This works well if the goal is to enable better portability and data access at the cost of directly parsing XML data in the application

3. Why do I care about the COLLADA Schema?
COLLADA leverages industry standard XML technology, and takes advantage of the XML Schema language to describe itself. In addition to the human readable specification, the schema provides a description that can be used by many commercial and open-source products to automatically create an access interface to COLLADA documents, and to validate any COLLADA document.

The validation stage is important when adding COLLADA support in a tool. It is also very useful to validate content when a lot of content development is sub-contracted.

4. What features are supported?
COLLADA 1.4 supports all the features required for game development for all platforms, including PC, PLAYSTATION 3, Xbox 360, Wii.

This includes geometry, materials, textures, lights, camera, animations, instantiations, and scenes. COLLADA also includes skinning and morphing for character animation. In addition, shader effects for several shader languages are included, as well as all the physics properties for rigid bodies, and the associated analytical shapes, and constrained joint systems.

5. Does COLLADA support my specific data?
COLLADA supports two extensions mechanisms to enable support for all data: extension by addition and by substitution. COLLADA documents must at least represent the data in a common way in addition to the extensions that may have be added. For example, the same data can have specific additional data for each target platform. For instance, data required by the Xbox 360 or data required for the PS3.

6. How should I use COLLADA in my content pipeline?
The content pipeline is the process by which the data is created, and then processed to create the data for the application in the target format. COLLADA can be used at all the stages of the content pipeline, from the output of the DCC exporter, through the end of the pipeline where the data is “compiled” for the specific platform.

7. XML is too big and too slow!
XML is not the most concise format for data; its value is in its usefulness for cross-platform, international development. But XML has many advantages for cross-platform, international support For example, UTF-8 (8-bit Unicode Transformation Format) and human readability are key features for an intermediate format. At the same time computers are becoming more powerful and able to handle large files making XML more practical.

Since the data is also growing in size, it is a concern for COLLADA to enable large blocks of high frequency data to be stored outside of the XML representation. COLLADA is using standard URI (Uniform Resource Identifier) technology to reference external dependencies, so that the majority of the data, such as textures, can be stored in industry formats that are better suited for this type of data. Any array of raw data in COLLADA can be stored as an external binary file, including the vertex and normal data.

As a result, COLLADA users find that XML works really well as an intermediate format, and that performance is mostly limited by the DCC SDK API rather than the XML parser.

8. How is COLLADA data organized?
COLLADA does not impose any specific data organization. The data should be organized to fit the workflow and the asset management tools that a developer is using. COLLADA documents are XML documents that contain a collection of libraries that make it easy to locate the data for each category of features. As a result, several developers can work simultaneously on different parts of the database without access conflicts since they all have their own document to work with.

In addition, many parts of the data can be externally referenced. The developer is free to organize the data in any way needed. Tools are able to understand such references and leverage the organization by enabling partial loading of scenes in order to provide even better performance, since the user does not need to load all the data in order to change a parameter for a given entity.