Blender Collada

Some time ago, Blender’s Collada Exporter was in a very bad state. Especially the export of rigged meshes for OpenSim and compatible target worlds has been broken for a long time. Since Blender 2.62 the export basically works again. But we have taken some serious amount of time to further improve the entire module. this is a report about what has been made so far, what you can expect from Blender 2.64 and what we are planning for the future.

Please note, the current development version is available from GrapahicAll.org . Please ensure that you grab a build based on revision r47979 or newer.

We still have a couple of days to fix bugs. So please feel free to grab it and test it, and report your bugs to the blender.org patch tracker.

New Features

 
Most apparently the exporter panel  has been redesigned because of a lot of new export options:

  • Apply modifiers (selectable preview/render mode)
  • Selection Only (Since Blender 2.58)
  • Include Children (of selected objects)
  • Include Armatures (of selected objects)
  • Only active UV layer
  • Include UVTextures
  • Deform Bones Only (exclude rig control bones from export)
We have also added a few options for influencing the way how data is exported:

  • make local copies of exported textures
  • Use Object Instances (to avoid duplicate geometry difinitions)
  • Sort by Object Name (to ensure always the same order of exported data)
  • Export for OpenSim (very special treatment of riggs for OpenSim and compatible worlds) (since Blender 2.62)

Apply Modifiers

 
All active Modifiers will be applied in a non destructive mode. That is, the modifiers will be applied to copies of the meshes. thus you no longer need to apply your modifiers before exporting. that is now down in the background for you.

Hint: Some Modifiers provide a Preview mode and a Render mode with different mesh settings. We now suport both modes when applying the modifiers.

Hint: This option also includes the application of Shape keys! So now you can export your meshes with the current shape key configuration baked in.

Selection Only

 

When selection only is enabled, then only the selected objects will be exported. Otherwise the entire scene is exported with all visible and all invisible objects.

Hint: You will want to enable this option in most cases.

Include Children

 
When this option is enabled, then all children of the selected objects will also be exported regardless of their selection state. Hint: You now can select only(!) an armature, then in the exporter enable “include children” then all rigged meshes attached to the armature wil be exported.

Include Armatures

 
When this option is enabled, then all armatures related to the selected objects will also be exported regardless of their selection state. Hint: You now can just select your objects, then in the exporter enable “include armatures” then the armature data is also exported.

Only Active UV layer

 

When your mesh contains multiple UV layers, then Blender exports all layers by default. This option allows you to only export the active UV layers.

Hint: You will want to always enable this option when you export for OpenSim and compatible worlds. That’s because the SL Importer does not know what to do with multiple UV layers. So please ensure that your models active UV layers are set as you want, then export with this option enabled.

Include UV Textures

 

Blender supports 2 ways to texturise your objects.

  • By using material based image textures.
  • By using directly assigned surface textures

While the material based image textures offer much more flexibility, using surface textures can be done very quickly without need to first render textures. Until now blender did only export material based image textures.

The new option allows to directly export render results.

Please take care here:

If your image is generated and has not yet been exported to file, then it will automatically be exported as .tga

 

Hint: for using surface textuires, you will still have to create a material for each texture face. Then all you need to do is assign your images to the correct faces of your mesh. And finally when your object looks as you expect, just export it with “Include UV Textures”

Hint: See the “Copy” option below

Hint: Some mesh importers for OpenSim and compatible worlds can only import textures with static meshes. As soon as you add rig information the texture import gets broken.

Copy

 

When you export images either material based image textures or surface textures, then we create absolute file references in the export file.

But id the “Copy” option is enabled, we will create copies of the images instead and place the copies besides the export file. In that case the file references are made relative.

Hint: For OpenSim and compatible targets you will always want to export with “Copy” enabled. the SL Importer does not allow absolute file references.

Deform Bones Only

 
When this option is enabled, then the exporter strips all non deforming bones from the exported armatures. this option is useful when your armatures contain control bones which are not actually part of the charater skeleton. For example you can now export the Avastar rig with this option enabled. The resulting exported rig is compatible to OpenSim and compatible worlds. But please note the restrictions further down.

Use Object Instances

 
In Blender you can reuse the same mesh for multiple Objects. This is named “object instanciation”. When you enable this option, then Blender will propagata object instantiation to the Collada file. Hint: For OpenSim and compatible targets you will want to disable this option, because the Importer behaves wrong when object instances are used. Especially Object names will be broken after Import to OpenSim and compatible worlds.

Sort by Object Name

 
The export order of data is bound to internal object order and it can not be influenced in a reliable way. this option ensures that the Geometry nodes and the Object nodes are both exported in alphabetical order. Hint: For OpenSim and compatible worlds you will want to enable this option, because the Importer relies on the sort order of exported objects when it comes to match the LOD files.

Export for OpenSim

 
This option is very special. In fact some issues with bone orientation are calculated differently when this option is enabled. This is only relevant for rigged meshes. I hope that this option will eventually be replaced by something more meaningful (and still compatible to OpenSim) Hint: This option is only important when you want to export rigged meshes. For static meshes it just does nothing at all.

Behind the scene

Future plans

The new features as described above are only part of what has changed. We also have improved the Blender Importer. Basically what happened so far:

  • We have solved a couple of long standing Bugs for various import and export problems.
  • By now we can reimport Mesh objects with a reasonable quality.
  • We also can reimport rigged meshes, but there we still face some weird oddities (on the Agenda for Blender 2,65)
We are not stopping here. The goal is to eventually make the Collada module feature complete. Here is what is currently in the list:

  • Improve Blender’s Collada importer, especially for rigged meshes. Goal: Reimport rigged meshes with no deviations.
  • Add injection points for other tools (like Avastar) to allow more specific processing of data for special purposes (currently investigated, need to define how it can be done) One goal might be to eventually replace Avastar’s Collada exporter again by the Blender exporter (But that is unlikely to happen soon)
  • More testing with other target systems. Maya may be an option.

 

For users of OpenSim and compatible worlds

We have added an OpenSim Preset (available from the preset drop down box at the top of the Collada export panel). this preset is what you will want to use in almost every case when you plan to export to openSim or compatibleworlds . Please refer to the above detailed description for further information.

Please note that the new Collada exporter does not magically fix all your mesh issues. However it may help to get better results. Here is a usage scenario:

Exporting an arbitrary rig

While you can now remove non deforming bones during export, you still have to provide the correct bone configuration. So your rig must contain at least the 21 main bones of the SL Avatar. And the bone names must still be exactly as defined by Linden Labs.

You also have to take care about the mesh weights of your objects. You must ensure that:

  • The rig faces towards positive Y axis (like in the Avatar Workbench for example)
  • No more than 4 weights are assigned per vertex
  • every rigged mesh item still needs the 21 weight groups for the main bones of the SL Avatar. If only one group is missing, the SL Importer will reject the file.
  • You must ensure that each vertex shows up at least in one of the 21 main bone weight groups. otherwise you get holes in your meshes (invisible parts).