COLLADA FAQ

Is COLLADA free to use? How about the licensing issues?

COLLADA follows the same model as other standards already in place in the graphics industry, such as OpenGL. It is free to use, no royalties or any other fees. The specification and schema are available through anonymous http download on the Khronos web site (www.khronos.org/collada) in English and Japanese.

What features does COLLADA support?

COLLADA 1.4 supports all the features required for game development for all platforms, including Mac, Windows, Linux, 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. Shader effects for several shader languages are included (Cg, GLSL, OpenGL ES 1.1, and a standardized platform independent simple model and via common convention extensions support for binding to HLSL based FX and CgFX) as well as all the physics properties for rigid bodies, and the associated analytical shapes, and constrained joint systems.

Is COLLADA an intermediate format (and what is an intermediate format)?

COLLADA is designed to be an Intermediate format whose primary goal is to simplify the workflow between the different tools and the game engine.

What is 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 back and forth between applications without data loss. A simple example would be the ability to exchange NURBS primitives from Maya to 3ds max. For an interchange format to be effective, each DCC tool has to be able to import and export all information in a document. So that means that if you have a tool creating physics data, and want to load it in a tool designed to create shaders, the physics tool needs to import and export shader data, and visa versa. This is complicated to achieve and runs in to issues with proprietary code and the need to constantly update importers/exporters.

What is an Intermediate 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. Complete interoperability between applications is not essential. As an intermediate format, a COLLADA document can broken into pieces that can be individually processed by the best tool. For example one COLLADA document may only contain physics data. The shader data may be contained in another COLLADA document. You can then merge the shaders and the physics later on in your pipeline or in the final applications. COLLADA does not impose that the data is organized one way or another. Indeed it is actually a good idea to split your data in several documents, per type for instance. COLLADA is designed so that data can be split the way the user needs it for its particular tool chain. The data is even organized in libraries of specific type to help with this process (i.e.: shader and physics data is not mixed in COLLADA so it is easy to separate). Some tools are able to aggregate all of the COLLADA features, in one place. Some tools are limited in what they can handle. The final application (game or visualization engine) just need to be able to take the individual COLLADA documents and assemble them into a unified document.

So, the main difference between an interchange format and an intermediate format is that the interchange format needs to support all of 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 an earlier DCC tool.

Note: 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. This enables COLLADA data to easily move between different applications and different devices.

How does Collada FX integrate with OpenGL ES and OpenGL?

OpenGL and OpenGL ES use the OpenGL Shading Language to describe shaders. Vertex shader and fragment shaders are compiled as separate objects which then must be linked into a program. HLSL for Direct3D works at a similar low level.

COLLADA FX provides a way to package up these shader objects, describe the full visual style and provide a simplified model for operating them. Specifically these shader effects (FX):

  • Combines multiple shaders into a single file rather than having one or more "*.vert" and one or more "*.frag" files.
  • Describes which vertex and fragment shaders should be linked together.
  • Sets the API render state required for the use of a particular vertex and fragment shader combination
  • Provides a method for variables to be "shared" across multiple shaders and programs
  • Provides a metadata mechanism about the effect to the application that is using it. This makes it possible for applications that were not directly designed for that one very specific effect , to still figure out how to use it.

As a technology under the Khronos Group, COLLADA FX will be the de-facto standard effect format for OpenGL and OpenGL ES. COLLADA 1.4 includes support for Cg, the OpenGL Shading Language, OpenGL ES 1.1, and a standardized platform independent simple model. Via common convention extensions it offers support for binding to HLSL based FX and CgFX.

Uniquely COLLADA FX enables multiple simultaneous representations of a single effect for multiple hardware and OS platforms and multiple shader languages.

This means that you can design one COLLADA FX which includes profiles for every platform including cell-phones, game consoles, and PC.

What is a conditioning or asset pipeline? What is Refinery?

Currently, COLLADA is primarily used to extract the content from a DCC tool, or to interchange data between DCC tools. At the final production stage, developers generally transform the COLLADA content to their own format (e.g. PlayStation, X3D, Xbox 360 etc.), They then use their own "conditioning pipeline" or "asset pipeline" to optimize the data, test the data for problems, merge data with other content, and 'compile' the data in platform specific format for using with a specific game engine / real-time application. The conditioning pipeline is generally a set of command line utilities that are used with a build (makefile) mechanism to pre-process (pre-digest) the content. The entire transformation process is equivalent to the source code -> binary code transformation. The conditioning pipeline component is analogous to an optimizing compiler/linker.

Some, if not all, of the conditioning pipeline can be done in the COLLADA format. Refinery is an example of a COLLADA-based conditioning pipeline application. There is a user interface that can be used to create/test the pipeline - a set of interconnected conditioners. For example, going from polygons to optimized triangle mesh can be done with a triangulator conditioner followed by a triangle mesher. Or optimizing content for Google Earth can be done with the KMZ Clean-up conditioner.

The COLLADA Refinery is open source, so presumably, more individual conditioners will be developed (file splitter, file merger, coordinate system change, etc.) that will provide COLLADA users with a powerful ready to use pipeline for their end application. To use the pipeline, they would just assemble a pipeline with the individual conditioner they need and then as the final step, format the final file to their application binary specific format, using their own plug-in for refinery.

As a developer, what kind of open source sample code is available for parsing and manipulating COLLADA files?

The COLLADA DOM, is a comprehensive framework for the development of COLLADA applications and provides a C++ programming interface to load, query, and translate COLLADA instance data. The DOM loads COLLADA data into a runtime database consisting of structures that mirror those defined in the COLLADA schema. These runtime structures are auto-generated from the current schema, eliminating inconsistency and error. Developers can directly use the data structures loaded into the COLLADA runtime database within their application so they can easily add import and export capabilities for COLLADA v1.4+ or COLLADA v1.3.1 documents.

The COLLADA RT is sample code that reads in a COLLADA document via the DOM and converts the structures into renderable data. It has two flavors, 1. A viewer application so you can quickly view your data, and 2. static libraries so you can use the COLLADA RT as an import API.

COLLADA FX Loader is a library that reads COLLADA documents via the DOM and creates the effects in the CG 1.5 runtime. These effects can then be applied to geometry in your scene via the cg runtime.

The COLLADA Refinery is a tool that should allow you to massage COLLADA data into formats other non-COLLADA applications understand (i.e. chain conditioners together to form basic COLLADA asset pipelines). For example, you should be able to convert a COLLADA file to a list of triangles for a tri-stripper to read. The Refinery runs in batch mode.

Is there any kind of Conformance Test for guaranteeing the quality of COLLADA-savvy software?

In order to claim COLLADA conformance, an application will have to pass the COLLADA conformance test process. Details on how to become a COLLADA Adopter, which is the first step required to run conformance tests, please visit our adopter pages.

safety