COLLADA for XSI
This article describes the support for the COLLADA file format in SOFTIMAGE|XSI.
| Table of contents |
|
2.1 XSI and the Game Pipeline |
What is COLLADA?
COLLADA is an XML-based digital asset exchange schema designed to transport data between 3D content creation tools. A more complete definition can be found on the COLLADA web site (http://www.collada.org). COLLADA is primarily targeted for the exchange of assets in a game pipeline, but it can be used in any area of 3D content creation that requires an intermediate format and good tool interoperability.
With the release of SOFTIMAGE|XSI version 5.1, Softimage has officially endorsed and adopted COLLADA as an important supported file format. Softimage has also joined the Khronos group to help promote and evolve the COLLADA specification (http://www.khronos.org/members/contributors). Previous integrations of COLLADA in SOFTIMAGE|XSI were done via an external plug-in which can still be found on the COLLADA web site (https://collada.org/public_forum/viewtopic.php?t=242).
Usage Scenarios
The first phase of the COLLADA integration in XSI has been designed with three usage scenarios in mind.
XSI and the Game Pipeline
The COLLADA exporter allows the game developer to take content created in SOFTIMAGE|XSI version 5.1 and export it in a COLLADA file that can then be used and processed in a game pipeline. The primary focus was to support the basic elements such as hierarchies, geometries, material and effect assignments, skinning, and transformation animation. In the area of effects, support for the Sony PS3 environment is enhanced by the integration of the CG profile of the COLLADA FX specification in SOFTIMAGE|XSI shader nodes and in the COLLADA converters.
Migrating Existing dotXSI Game Pipelines to COLLADA
The integration of COLLADA in the SOFTIMAGE|FTK provides current users of the dotXSI file format a smooth transition to COLLADA. By subclassing the existing dotXSI classes and reusing the same libraries and the same import/export tools the transition to COLLADA is essentially transparent when using XSI. As a result, tools that currently compile with the SOFTIMAGE|FTK only require very small updates to use COLLADA as the file format. For example, the existing dotXSIConverter that ships with SOFTIMAGE|XSI did not require any modifications to support COLLADA. The only addition made was a new option in the user interface to allow for the selection of dotXSI or COLLADA as the output file format.
XSI and Interoperability with Other Digital Content Creation Tools
The COLLADA exporter and importer in XSI allow you to exchange 3D data with any digital content creation tool that supports COLLADA 1.4.0. For example, internal testing was done to validate interoperability with the ColladaMaya plug-in from FeelingSoftware and FXComposer 2 alpha 4 from nVIDIA Corporation.
COLLADA Features in SOFTIMAGE|XSI 5.1
The integration of COLLADA 1.4.0 in SOFTIMAGE|XSI 5.1 supports a subset of the entire COLLADA specification.
User Interface
Export FTK Options
File
- In the
File nametext box specify a path and name for the file you want to export. You can also use the browse [...] button to select a specific location and filename from a browser. - The
Formatoption lets you select the file format to be exported. You can choose either the dotXSI 5.0 or the COLLADA 1.4.0 file format.
Animation Plotting Options
- You can enable the plotting of all animation in the scene. These options are useful when exporting advanced animation rigs, such as IK, constraints, and expressions.
Animation Resampling Options
- Specify how the plotted animation is to be sampled and filtered on export. These are useful options if you need to output animation curves using a specific type of interpolation.
Export Options
- Activate
Verbosemode to log the export progress details to the script editor history pane. - The
Export Selection Onlyoption takes the current selection and exports it. Otherwise, the entire scene is exported. - The
Convert Geometry To Trianglesoption triangulates all polygon meshes on export. - The
Apply Subdivision to Geometryoption tessellates subdivided geometries and exports the resulting polygon meshes. -
Export Tangents as Vertex Colors: In XSI, tangent data is stored in vertex colors. By default, if a vertex color property contains the string "tangent" in its name, it is exported as tangent data. This option allows you to always export vertex colors as vertex colors regardless of their name.
Shape Animation
- These options are not implemented for the COLLADA exporter.
COLLADA Options
- The
Export XSI Extraoption lets you export XSI-centric extra data such as visibility and custom parameter sets.
Import FTK Options
File
- You can choose to import a COLLADA or dotXSI file into XSI.
Import Options
- Activate
Verbosemode to log the import progress details to the script editor history pane.
Geometry Options
- This option is not implemented for the COLLADA importer.
Scene Elements
- Parenting information and primitive instancing are supported. The ID and the Name attributes on the node drive the naming of the entity when exporting and importing data to and from COLLADA. On import, Name has precedence over ID for naming entities in XSI. However, since Name is an optional attribute, ID is used if the name attribute is not present.
- The naming convention when using XSI models (known as namespaces) is as follows:
<model name>.<node name>. For example, an object called leg that is parented to an XSI model called george will have its name concatenated asgeorge.leg. - Transformations are partially supported. Geometry nodes use the
<scale>,<rotate>, and<translate>elements to describe their transformations. Cameras and spot lights use the<lookat>element to describe their transformations. - Material instancing is fully supported, including the binding of data to effects.
- Nodes that do not have a geometry, light, or camera instance are treated as nulls.
Known Limitations:
- There is only one instance of each primitive in the hierarchy data. Multiple instancing of the same geometry is currently not supported.
- Exporting from XSI currently reduces the transformation stack to a simple [<translate><rotateZ><rotateY><rotateX><scale>] stack. Importing a transformation stack other than in this specific order results in the concatenation and reduction of the stack to the [<translate><rotateZ><rotateY><rotateX><scale>] components.
- Only the
<visual_scene>elements are supported.<physics_scene>is currently not implemented.
Geometry
- The supported geometry type is the polygonal mesh. Polygon lists and triangle lists are fully supported. When exporting, XSI uses the
<polylist>element instead of the<polygons>element. Since XSI does not export polygon holes anyway, the<polylist>element is used for its more compact representation. However, the<polygons>element is supported on import. - The supported vertex attributes include positions, normals, vertex colors, texture coordinates, and texture tangents.
- Material binding per polygon or triangle list is supported.
Known Limitations:
- Triangle strips are not supported.
- Texture binormals are not supported. When exporting from XSI, binormals should be recomputed by the cross product of the normals and the texture tangents.
Materials
- Materials are fully supported.
Effects
- The common profile is fully supported. The exporter will analyze the material render tree and guesstimate the best approximation to convert from a full-fledged shader node network to the common profile. The ProgID of the first shader attached to the surface port of the material is the one that drives the common profile description. For example, if the first shader attached to the material's surface port has a ProgID that is "softimage.phong.1", then the exporter will generate a
<phong>element within the effect description. Textures attached to the emission, diffuse, specular, and ambient ports are also exported and imported correctly.
The CG profile is supported in two flavors:
- The first flavor uses the NV_import extra which references an external CGFX file. This is used when the CGFX shader node attached to the material is using an external reference to a CGFX file. The output looks like this:
<effect id="check3d_fx"> <extra type="import"> <technique profile="NV_import"> <import profile="cgfx" url="file://\\lobby\dev\CGFX\check3d.cgfx" /> </technique> </extra> </effect>
- The second flavor uses the full COLLADA FX specification for the CG profile. The effect description needs to be set within the CGFX node in order to work (see the image below).
Cameras
- Perspective cameras are fully supported.
- Orthographic cameras are not exported and they are converted to a perspective camera on import.
Lights
- Point, directional, and spot lights are fully supported.
Skinning
- Skinning is fully supported. This includes bind pose matrices and envelope weights.
Animation
- Constant, linear, and spline interpolations are fully supported.
- Only animation on node transformations is currently supported.
Extras
There are two types of extra elements that are supported by the COLLADA converters in XSI:
- XSI extras describe XSI-specific information on the COLLADA elements. For example, a scene node will have the full XSI transformation data as well as visibility flags and global material assignment data in the XSI extra:
<extra> <technique profile="XSI"> <SI_Visibility>TRUE</SI_Visibility> <XSI_Transform> 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 XYZ 1.000000 1.000000 1.000000 TRUE 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 <XSI_Limit>"posx" FALSE 0.000000 FALSE 0.000000</XSI_Limit> <XSI_Limit>"posy" FALSE 0.000000 FALSE 0.000000</XSI_Limit> <XSI_Limit>"posz" FALSE 0.000000 FALSE 0.000000</XSI_Limit> <XSI_Limit>"rotx" FALSE 0.000000 FALSE 0.000000</XSI_Limit> <XSI_Limit>"roty" FALSE 0.000000 FALSE 0.000000</XSI_Limit> <XSI_Limit>"rotz" FALSE 0.000000 FALSE 0.000000</XSI_Limit> </XSI_Transform> <SI_GlobalMaterial>"check3d" "NODE"</SI_GlobalMaterial> </technique> </extra>
- The second type of extra element does not use the XSI technique profile. These extras are imported and persisted as opaque user data blobs in the XSI scene. They are restored on export.
External Referencing
COLLADA supports the external referencing of other COLLADA files, as well as image files and CGFX files. The current integration of COLLADA in SOFTIMAGE|XSI only supports external referencing of images and CGFX files. Other references must be resolved within the same document.
COLLADA Integration Notes
The support for COLLADA in SOFTIMAGE|XSI has been rewritten from the ground up since the COLLADA 1.3.1.3 plug-in release. The new code base now sits inside of the SOFTIMAGE|FTK, a file exchange toolkit used for most converters in SOFTIMAGE|XSI. As a result, existing FTK-based applications can now import and export COLLADA 1.4.0 files. The low level parser (known in the FTK as the IO layer) is based on XercesC and works in SAX mode to reduce the memory footprint when importing COLLADA files. The high level classes (known in the FTK as the Semantic Layer) have been updated with new classes that reflect the COLLADA elements.
Elements that are common to dotXSI 5.0 and COLLADA 1.4.0 have been subclassed to ease the transition between dotXSI 5.0 and COLLADA 1.4.0. As a result, the current dotXSIConverter in SOFTIMAGE|XSI also supports COLLADA 1.4.0. You can find a list of the new COLLADA classes in the FTK Reference section of the SOFTIMAGE|XSI SDK documentation.

