Version 4 (modified by roger@…, 5 years ago)

--

Collada

The Collada specification documents, forums, wiki, model bank and more can be found at the Official Collada website.

Collada features

Collada features Supported by OSG plugin
Geometry Yes
VisualScene Yes
Materials Yes, profile_COMMON
Animations No
PhysicsScene No, OSG has no Physics support

How to build

The OSG Collada plugin depends on the Open Source Collada DOM library. In order to build the plugin you will need to tell CMake where to find the library. The Collada Dom library itself depends on Boost, libxml2, pcre. Precompiled libraries are available in the Collada DOM download from sourceforge.

Option strings for Collada reader

OSG plugins can be given optional string arguments to influence their behaviour. For the Collada reader one can specify the following option string:

StrictTransparency Process transparent and transparency settings according to a strict interpretation of the Collada specification.

Plugin data for the Collada reader

OSG plugins can be given optional data arguments to influence their behaviour or receive feedback. For the Collada reader one can specify the following PluginData fields

DAE A pointer to a previously allocated Collada DOM DAE object- this object will be used to read the dae file and can then be used to programmatically access the loaded DAE database.
DAE-DocumentURI A pointer to a std::string object - This string will be set to the URI of the loaded document on exit
DAE-AssetUnitName A pointer to a std::string object - This string will be set to the AssetUnitName from the Collada document
DAE-AssetUnitMeter A pointer to a float - This will be set to the AssetUnitMeter value from the Collada document
DAE-AssetUp?_axis A pointer to a domUpAxisType - This will be set to the AssetUp?_Axis from the Collada document

Option strings for Collada writer

OSG plugins can be given optional string arguments to influence their behaviour. For the Collada writer one can specify the following options strings:

polygon Use polygons instead of polylists for element
GoogleMode Write files suitable for use by Google products. (Invert interpretation of A_ONE transparency as Google earth does)
NoExtras Do not write any <extra> elements

Plugin data for the Collada writer

OSG plugins can be given optional data arguments to influence their behaviour or receive feedback. For the Collada writer one can specify the following PluginData fields

DAE A pointer to a previously allocated Collada DOM DAE object- this object will be used to write the dae file and can then be used to programmatically access the loaded DAE database.
DAE-DocumentURI A pointer to a std::string object - This string will be set to the URI of the loaded document on exit

Example Collada dae models

Of course you may also Google for data, but be aware that there are also a lot of invalid Collada files available on the web.

Collada data may be tested for corruption at three levels:

  1. Well-formedness; conform to the XML syntax rules. Most of the Collada XML data on the web will be well formed, because this is the easiest to catch by tools/parsers.
  2. Validity; conform to the semantic rules specified in the Collada XML schema.
  3. Coherency; all element referencing and validation not in the scope of an XML schema. Are all used materials/textures available? Do arrays contain correct data? etc.

To do this you can use the CoherencyTest command-line tool or Java based GUI-tool Collada Refinery

Developer info

A description of the Collada extensions for specific OpenSceneGraph functionality can be found at the OSG Collada extensions page on the Collada wiki.

TODO/Wishlist

  • Solve differences in drawables, DAE reader should place multiple collation elements into multiple primitivesets in a single geometry where possible (only when same material)
  • solve differences in matrices
  • Multitexture support
  • Skinned mesh and generic animations using osgAnimation
  • Profile_GLSL based on AMD's Collada OpenGL Effects Viewer
  • Handling more <extra> to more closely mimic the intended lighting
  • Add proper <asset> info