Saturday, October 31, 2020

Recent problems with posing and how to fix it

During the last few weeks there has been a problem with loading poses in the development version of the Daz Importer, cf this issue. Poses can be imported, but the bone rotations are slightly off.

There is nothing wrong with the posing code in itself. Rather, the problem arises when the figure is imported. To translate a pose from the duf/dsf file to the current rig, the add-on needs information about every bone's rotation order in Daz Studio. This information is stored as custom properties in the armature's pose bones. The problem was that the code that stored this information was disabled when the figure was imported with DBZ fitting. Hence for some bones, the rotation matrix was evaluated from the Euler angles in the wrong order. The rotation order was stored when the figure was imported with Mesh Fitting set to one of the Unmorphed options, so the problem only arose for DBZ-fitted figures.

This bug has been around since early October, which means that figures imported after that can not be posed correctly. This means that you must reimport the character before posing works correctly. 

If you have spent a lot of time on a character recently, you probably don't want to start all over. So I added a tool to fix old rigs: Advanced Setup > Rigging > Copy DAZ Properties. It copies properties set by this add-on (name starts with Daz) between objects, and between their bones and posebones if they are armatures. Properties that are already set in the target object are ignored, so nothing is overwritten.

Here is what to do:

  1. Import the character again.
  2. With the new rig active and the old rig selected, Copy DAZ Properties.
  3. Delete the new character.

Now you should be able to pose your character correctly. Here is a test with Base Kneeling Pose B, before and after the fix: