Information on this is a bit scattered, so here are my findings.
There are two reliable ways to export Daz figures to Blender (and other programs). One is to export the mesh as a wavefront object (*.obj), the other is to export as a COLLADA file (*.dae).
After experimenting with both, I found that exporting as a collada file was quicker and more reliable because:
- Textures are automatically mapped and assigned to materials correctly
- The model is automatically rigged to an armature (skeleton) which means you can animate and pose it in Blender.
- I encountered geometry errors using obj.
On the downside:
- Daz Studio operates in Y-up whereas Blender works in Z-up, everything has to be rotated on the X axis by 90 degrees. This adds an unnecessary layer of complication to your workflow.
- The figure’s pose / animation is lost in the process.
Fortunately you can restore this by exporting the pose separately as a BVH mocap file. It’s a bit of a hassle to correct the rigging, but if you prefer to pose your figure in Daz Studio (or Poser), or have hundreds of stock poser poses saved over the years, this is the way to go.
Workflow
In Daz Studio:
- Hide everything in your scene except the model you want to export.
- Export the scene as *.dae using custom options (without daz enhancements), and tick all of the settings. Be sure to combine the alpha and diffuse maps into a png file (more on this later).
- Now export the scene as a bvh file, using the default settings.
In your operating system, navigate to the directory where you exported the files. You should see a *.dae file, a *.bvh, and a folder which contains the model’s textures. Move the *.dae file into the newly created folder with your exported textures, open it in notepad and then search for references of “./filename/” and delete them. (where filename is the name of the *.dae file; e.g. “./filename/texture.jpg” becomes simply “texture.jpg”)
For more help on exporting, please read this excellent article.
In Blender:
- Open Blender and import your bvh as an armature.
- If you select the armature and go to edit mode, you’ll see that some of the child bones (fingers, eyeballs, toes, etc) will not have imported correctly. Either delete or fix these bones (I would just delete them).
- Import your *.dae file
Now you have your model with it’s own armature (in a t-pose), and a standalone armature imported as bvh with the pose or animation you want to use. The final process is to use the constrain bone tool to link the two armatures together. I know it’s not the most elegant solution, and if you know of a better way, by all means let me know. :)
So, under your model’s armature pose node, go through every major bone, and add Copy Rotation and Copy Location constraints. These should link to the bvh armature’s pose as the target. This process is fairly tedious and the biggest drawback of using a collada file; however were you to export as an obj, you would now be messing about trying to reassign materials and figure out how to fix or hide geometry errors.
Finally, you might find that some bones (hip, abs, chest) appear twisted out of recognition. On the rotation option, choose ‘offset’, and then rotate the bone 90 degrees on the X axis to correct the error. Offset basically combines the values of the source bone with the target bone, which simply means you can make corrections without losing the original pose.
Hair and alpha maps
Daz models use alphas for details like hair and eyelashes. Alpha maps in Blender are something of a headache for new users like myself, so here’s a quick note on them.
When exporting from Daz, it’s important to select the option that combines the alpha map with the diffuse map – this will give you a png file, with automatic transparency, which is a lot easier to work with in Blender. One thing to bear in mind though is that if the material doesn’t have a diffuse map (e.g. eyelashes), it won’t create the png, so in this case it might be best to set the alpha map on both the opacity (alpha) channel and the diffuse one before exporting your model. In fact, this might be the best practise anyway, as you can then set the material’s colour using a shader, rather than a diffuse texture.
With your model and materials loaded, you need to quickly adjust the material and texture settings to enable the alpha to work correctly. To do so:
- Enable transparency (Z-transparency) on your material.
- On the material’s texture, under image, enable premultiply
- Under influence, enable alpha and set it to -1.0, set Dvar to 0.
That’s it — apparently ‘use alpha’ under image sampling is not necessary. You might also consider turning ‘traceable’ off, under material options, to reduce render times. For simplicity, I also recommend exporting hair style objects/figures as a separate *.dae file; that way you can use them for other models. You can then fit them to your model using the Copy Rotation and Location bone constraints as before.
Thanks for reading, I hope this helps a bit.
Further reading:
Exporting from Daz to Blender 2.5: http://www.4colorgrafix.net/2011/06/dazstudio-blender2-5/
Exporting bvh files: http://www.ipisoft.com/en/wiki/index.php?title=Animation_export_and_motion_transfer#COLLADA
Alpha maps in Blender: http://wiki.blender.org/index.php/Doc:2.4/Tutorials/Textures/Use_Alpha_for_Object_Transparency