Saturday, March 30, 2024

Manual Editing of Favorite Morphs

It is possible to import the same morph twice, both as a standard morph and as a custom morph. If we have done that and then saved the morphs as favorite morphs, the duplicate morphs will be loaded to each new character that uses these favorites. This is a nuisance that I have run into several times, and since it turns out that I'm not alone, I will explain how I deal with this issue: by cheating. More exactly, by editing the json file with favorite morphs in a text editor.

Here we have loaded some FACS morphs, and also loaded some custom morphs that move the jaw. We notice that the FACS Jaw Open and Custom Open sliders always show the same value. This is because they are in fact the same slider; the custom property "facs_jnt_JawOpen". We want to remove this slider from the json file, so next time the slider only appears in the FACS panel.

Save favorite morphs to a new file. Disable the new Compact View option to make it easier to edit the json file.

Now open the json file that we just saved in a text editor. Each line contains information about one morph: the file where it is defined, the morph name, and the body type. We see that  several JawOpen morphs appear in both the FACS and Custom/Jaw sections. Delete the lines from the latter and save the json file.

If we now load the favorite morphs to a new character, the Jaw Open morph only appears in the FACS panel.

A warning. The json format is quite picky, and it is easy to change the file to illegal syntax. That is why I recommend that you save a new file, so the old one is not corrupted. 

Here is an example. Removing the last morph from the FACS section make the syntax illegal, because of the trailing comma at the end of the line before it. The elements of a json list are separated by commas, but there must be no comma after the last element.

If we try to load the corrupt file we get an error. More information about what went wrong is given in the console window.

JSON error while reading ascii file
"D:\home\myblends\New Folder\my-favos-noncompact.json"
Expecting value: line 14 column 13 (char 2101)

So the problem with the extra comma happens close to line 14 (the comma is actually on the line before).

Sunday, March 24, 2024

Fixing Sloping Shoulders

When we imported the UE4 animation in the post on FBX Files and BVH Retargeter, we noticed that the collar bones have a quite unnatural pose; the shoulders are sloping. This is unfortunately something that happens quite often, but not always. It depends on the rest pose of the rig in the BVH file.

This can sort of be fixed with the Shift Animation tool. Rotate the collar bones up, and then rotate the upper arms down to compensate. However this is quite annoying and the result is not always good, so I found a different solution. The new Clear Bones tool clears the animation of the collar bones, which usually shouldn't move so much anyway, and then rotates the upper arms so their rotation in world space remains unchanged.

Here we have a typical situation. The collar bones slope far too much.
With the collar bones selected, press Clear Bones.
Now the collar bones don't slope anymore, and the arms remain oriented in the same way as before. The pivot points of the upper arms have moved, since the collar bones are rotated differently, but the arm's world space rotation is unchanged.

Friday, March 22, 2024

FBX Files and BVH Retargeter

As the name suggests, the BVH retargeter imports animations from BVH files. However, it appears that popular sites like Mixamo only offer animations in FBX format these days. Recently user GeneralProtectionFault suggested that one could use the BVH retargeter for FBX files as well, by first importing the FBX file with Blender's built-in FBX importer and then writing the animation as a temporary BVH file. This technique has previously been used in this add-on.

Support for FBX files has been implemented in the development version of the BVH retargeter. We can notice that the "Load BVH File" button has been renamed, and is now called "Load BVH or FBX File". To import the animation, we select our target rig and press "Load And Retarget" as usual.
Select the Capoeira.fbx file which can be downloaded from Mixamo or from the issue in the bug tracker.

Also note that the panel to the right has changed. The add-on now uses the standard Blender way to specify the orientation of the rig in the animation file.

And now our character does the capoeira.

The DAZ Importer has been able to import facial animations in the FaceCap and LiveLink formats for a long time, see e.g. this FaceCap test. Bouich Jules found another good way, and it’s UE4 facial animation, used here by QUICKMAGIC https://www.quickmagic.ai/index/. Again the files are in FBX format, so we need to do a similar trick as above. First the add-on imports the FBX file with Blender's FBX importer, and then copies the FACS animation from the imported mesh to the target rig. A sample file can be found in the issue in the bug tracker.

The complete FBX animation includes both the body poses and the FACS morphs. To import it to our target character we proceed in two steps. First we Load And Retarget the FBX file in the same way as we did with the capoeira file above.
Our character now moves, but her expression remains blank.
Let us now import the facial animation. If you have not already done so, go to the DAZ Importer and import the FACS morphs and make all bones posable.
Now open the new FACS panel in the BVH retargeter tab. These tools used to be located in the DAZ Runtime > Morphs > FACS panel, but it makes more sense to import the entire animation from the same add-on.

With the target character selected, press Import FACS From FBX File.

Select the same FBX file as above. Disable the New Action option so the face and body animations belong to the same action. Alternatively, we can make a new action and push both actions down on the NLA stack.
And now our character both moves and smiles.