daz3d / DazToUnreal

Daz to Unreal Bridge
Apache License 2.0
155 stars 46 forks source link

Visemes aren't included in the export and certain morphs stopped functioning #30

Open EZRHK opened 1 year ago

EZRHK commented 1 year ago

When exporting a character as a skeletal mesh and trying to include visemes on the morph list for exporting, they are not present inside of UE5.1. This worked fine in older version of the plugins. Some morphs stopped working alltogether, like the combined blink, look up/down. They have to be individually added for each eye and only work by setting a value for each, instead of using the single slider that controls both. Basic open face smiles also stopped functioning.

EZRHK commented 1 year ago

I believe this only happens with 8.1 characters. Genesis 8 characters import as they should and work/behave correctly. These worked correctly for both in 5.03 but not in 5.1.

danielbui78 commented 1 year ago

Make sure that you are including ONLY Visemes and no other morphs when exporting. They should work when exported by themselves. The error behaviors you are describing are related to Daz Studio morph controllers that control other morph controllers in addition to possibly controlling their own vertex-deltas. When you export these morph controlls together at the same time, they will "Double-Dip" in the destination software, unless the controllers are unlinked from each other. I will try to include option to disable the unlinking behavior in the next release.

EZRHK commented 1 year ago

If I understand that correctly, does that mean my characters couldn't use any visemes and expressions together? For example, a shocked expression while speaking?

It's difficult to figure out what to do here and how to alter the pipeline for my project, as I don't have a consistent way anymore of quickly being able to export animations. I don't think I could make a unique morph export list for every single animation, for every character. I'd end up with a 1000 lists.. A single list per character used to work perfectly fine.

danielbui78 commented 1 year ago

Sorry, it actually never worked perfectly -- prior to disabling linked-morphs, there would be Double-Dipping when multiple morphs that had linked relationships were applied. Like I said in my previous reply, I will try to include the option to disable the unlining behavior in the next release. This should restore the original flawed functionallity. The problem is that the underlying animation and morphing systems are fundamentally incompatible. Making it work 100% correctly without user-intervention requires recreating all of Daz Studio's pose+morph/bone-delta/vertex-delta features within Unreal Engine, which is probably not feasible project. The best viable solution is to require some level of user intervention during the design or export workflow. I will look into baking the vertex-delta state of each keyframe directly into each exported animation. This will still require the user to re-think their organization of animations, but should result in vertex-correct animations.

EZRHK commented 1 year ago

OK, thank you very much. It sounds like it's quite complicated under the hood! Don't know if it helps or not, but I just double checked to make sure and they only break on 8.1 characters.

danielbui78 commented 1 year ago

dzunrealbridge-controller-unlinking-disabled.zip

MD5 hash of dzunrealbridge-controller-unlinking-disabled.zip: 5922d6faf69fb273d82f643b81e1ad35 MD5 hash of dzunrealbridge.dll: 0d2cbe1f5de5ae1fd796971e12d28990

Here is an experimental build with controller-unlinking hard-coded to be disabled. To install, go into your Daz plugins folder and backup your current dzunrealbridge.dll. Then unzip the one in this package into the plugins folder.

Let me know if Visemes and other Morphs are now working the way you want them to. If not, please list out any detailed behaviors related to morph exports which are still not desired.

Thanks

EZRHK commented 1 year ago

That does the trick indeed! Many thanks, I can use this in the meantime.