Monday, April 20, 2026

SINGLE HD MAP

The addon already provides tools to bake HD figures, so this is just an alternative setup, easy to do by hand. The advantage is this way we use a single texture, and we don't have to save local textures as required by the built-in tools. We will use as example Victoria 8 HD.

This is a general method we can use with any multires, not only daz figures. We assume the reader is familiar with the basic blender tools so this is not a step by step tutorial.

step 1. HD uv map. First we create a new uv map for the HD texture, where all the figure uvs are in the first udim. For this it is enough to create a new uv map, then go to the uv editor and pack islands. Eventually we can also scale some islands to better fit the uv space. Below we see the Victoria 8 uv map packed nicely into the first udim.

edit mode: uv editor > uv > pack islands


step 2. HD texture. Then we create a new texture to bake to, first we create the image texture then the image for the texture. It is important to place this texture as selected in all the figure materials, so cycles knows it has to bake everything there. Note that we use the HD uv map for the texture, also we set the color space as non-color as this will be a normal map, but it's the same if we want to bake a displacement.


step 3. Bake. With the new texture in place and selected for all materials, we can now tell cycles to bake the multires. Below the settings I used. The baking process takes just a few seconds in a mid-level PC.

render properties > bake


step 4. Assign the HD texture. Now we have the normal map baked from multires, we can save the image then connect the texture to the bump node in all the materials. Note that the texture is the same for all the materials and it uses the HD uv map. Of course we can apply the multires modifier as we don't need it anymore having it baked.

Yes it's that simple. The main annoyance is we have to connect the texture by hand for all the materials in the figure.



Saturday, April 4, 2026

Moving to GitHub

Atlassian has decided to sunset Bitbucket issues and wikis by August 20, 2026 (https://community.atlassian.com/forums/Bitbucket-articles/Announcing-sunset-of-Bitbucket-Issues-and-Wikis/ba-p/3193882). This means that the Diffeomorphic addons have to move before that. Atlassian suggests that one should use their JIRA software, but I don't know anything about JIRA and it looks really intimidating. Since staying on Bitbucket without a wiki and a bug tracker is not an option, I decided to migrate to GitHub instead. Most other open source projects seem to be hosted there, so it is probably a better place to be anyway. The stable releases on Dropbox are not affected by this migration.

The new repos are thus

I have managed to move the wikis to GitHub. It is still the same old and partly obsolete documentation, but at least it will live past August 20. 

The bug tracker will also be removed on August 20. New bugs should be reported at

Issues with the MHX RTS and BVH Retargeter should also be reported there, because I don't have the bandwidth to monitor several sites regularly. Old issues are still available as static web pages which can be downloaded from

Thanks to GeneralProtectionFault for scraping the old tracker. 

Saturday, March 21, 2026

Diffeomorphic Add-ons Version 5.1.0 Released

 Version 5.1.0 of the DAZ Importer, MHX Runtime System and BVH and FBX Retargeter have been released. They can be downloaded from

DAZ Importer: 
https://www.dropbox.com/scl/fi/xhzuuk8b7ljc9q6e82elh/import_daz-5.1.0.zip?rlkey=dne3g99ooizo6oq5jx3w4owln&st=7jghklqg

MHX Runtime System: 
https://www.dropbox.com/scl/fi/op24pkdexyvrp5jnu7gae/mhx_rts-5.1.0.zip?rlkey=y3zsymz5duukmgxwmfbfjzwc2&st=uezatm0b

BVH and FBX Retargeter: 
https://www.dropbox.com/scl/fi/qozj9a8jfidcwjwo4g0xf/retarget_bvh-5.1.0.zip?rlkey=0aabdno78nxq7byl7fe16mqj6&st=a3aeo55q

The add-ons have been tested on Blender 3.6 and 5.1. They should run on Blender versions from 3.0 onwards.

The main reason for this release is compatibility with Blender 5.1. Apart from various bug fixes, performance has also been improved, as announced here.

Monday, February 23, 2026

Performance Boost

I recently learned about the foreach_get and foreach_set functions that makes access to Blender arrays much faster. The latest versions of the Daz Importer (5.1.0) use these functions to loop over vertices, shapekeys, polygons etc. This had led to a quite nice performance boost.

A a test case I import a Genesis 9 Female character with eyebrows card style 06 and dForce Pixie cut hair. All global settings were set to the factory values (except the DAZ root paths), and the Genesis 9 preset was used for Easy import. I imported the character twice and hit ctrl-Z inbetween. Here are the results.

Blender 4.4:
addon 5.1:    39.398 seconds    37.200 seconds
addon 5.0:    75.642 seconds    75.424 seconds
addon 4.4:    70.669 seconds    70.991 seconds

Blender 5.0:
addon 5.1:    34.721 seconds    35.120 seconds
addon 5.0:    85.280 seconds    77.256 seconds

Blender 5.1 beta:
addon 5.1:    60.276 seconds    60.069 seconds

Notes:

1. The addon is backward but not forward compatible. Newer versions of the addon can be used in old blender versions, but not vice versa.

2. Version 5.1 (development version) of the addon is significantly faster than version 5.0.

3. Blender 5.1 beta is slower than previous Blender versions. This probably only reflects that a beta is not as optimized as a proper release.

The old method of loading shapekeys used to loop over the nonzero shapekeys in Blender, whereas the new method uses foreach_set to copy a numpy array in one sweep. However, for small morphs like the FACS, i.e. morphs that a localized to a small part of the full mesh, the old method may actually be faster. A python loop is much slower than the builtin method, but it only needs to access the nonzero shapekeys. For example, for the first Genesis 9 FACS morph, facs_bs_BrowDownLeft:
Mesh size:       25182
Morph size:     661
In that case the slow python loop is actually faster than using numpy.

For this reason, there is a new global setting, "Numpy Morph Fraction". The old method is used if the shapekey size (i.e. the number of nonzero deltas) is smaller than this fraction, otherwise the new method is used.


Tuesday, January 6, 2026

Active Morphs Panel

In the previous post I described how the Head and FACS morphs can be organized in subpanels; this is now the default behaviour. Another change is that the currently active morphs are collected in a separate panel, in the same way as in DAZ Studio. 

Here we have several active morphs, both head morphs (brows, mouth, tongue, visemes), an expression, and even some custom morphs like elf ears. All active morphs are present in a single place. 

The data structures needed to display the active morphs are built when the morphs are imported. If you have an old character, or if the active morphs have been corrupted for some reason, you can rebuild this data structure with the "Update Active Morphs" button at the top of the Morphs panel.

The existence of the "Active Morphs" panel is also governed by the global setting "Face Morphs Subpanels". If that option is disabled, the "Update Active Morphs" button is replaced by the old "Show Used Morphs Only" checkbox. The Morphs panel now looks like it did before, where the active morphs are spread out over the various panels.
One thing that I found annoying with the legacy behaviour was that a morphs disappeared when you drag the slider to zero, and "Show Active Morphs Only" had to be disabled to turn the morph back on. With the new setup a zero morph disappears from the "Active Morphs" panel, but the slider is still available in its native location.

Monday, December 22, 2025

Face Morph Subpanels

Standard morphs are grouped into various panels, but all morphs in a group are simply listed in alphabetical order. Mickey Ho pointed out that this is not practical for animating sliders, in particular for the hundreds of Genesis 9 FACS morphs. In DAZ Studio the various FACS morphs are grouped into subpanels, which makes access more convenient.

In the last commit the FACS panel has the same subpanels in Blender. To enable this feature, enable the global setting "Face Morph Subpanels".
The FACS panel now has the same subpanels as in DAZ Studio. The morphs are assigned to subpanels which makes them better organized.
The button on the top of a subpanel only apply to the morphs in this panel. The buttons at the top of the FACS panel affect the sliders in all subpanels.
Subpanels are also generated for the head pose morphs for previous generations, Genesis - Genesis 8. Before we had two types of face morphs, Face units and Visemes. That was a completely ad hoc separation that I did long ago, and may have made sense for the first Genesis generations. In the last commit those types are replaced by a single Head type. 

There used to be another type of standard morphs called Head which were taken from another directory. That included morphs like elf ears which are normally baked into the character, so those are not considered to be standard morphs anymore. If you need such morphs you can always import them as custom morphs.

Import standard morphs with the Head option enabled.
The panel with Head morphs is now split into subpanels, which work like the FACS subpanels.
If we import morphs with "Face Morphs Subpanels" disabled, or if we load an old character into the  scene, the old style morphs appear and work as before. The new option does not change how the morphs themselves work, but only how they are displayed in the user interface.

Sunday, December 14, 2025

Diffeomorphic Add-ons Version 5.0.0 Released

Version 5.0.0 of the DAZ Importer, MHX Runtime System and BVH and FBX Retargeter have been released. They can be downloaded from

DAZ Importer: 
https://www.dropbox.com/scl/fi/8b5z3cy6kd9pcxeo17bh1/import_daz-5.0.0.zip?rlkey=udvj5mbw4f1psmvrnt8949ed5

MHX Runtime System: 
https://www.dropbox.com/scl/fi/0nf018loxjpy0nbe26zpr/mhx_rts-5.0.0.zip?rlkey=dd33350oazwagkund3puqt7up

BVH and FBX Retargeter: 
https://www.dropbox.com/scl/fi/0ftrenp005ub78ov5fek0/retarget_bvh-5.0.0.zip?rlkey=c27jhf4pxc3scpu0ffmil197d

The add-ons have been tested on Blender 3.6, 4.5 and 5.0. They should run on Blender versions from 3.0 onwards.

The main reason for this release is compatibility with Blender 5.0. Several other bugs have also been fixed.