And just now I was checking G8, thinking of downgrading to G8... and.... it seems, that even the single pJCMThighSide_85_L still looks different after export to Unity.
I got interested why that is so (since it would be a massive undertaking for me to move the game to Unreal, it's already 100k lines of C# code... At least I need to fully understand why this whole path with JCMs in Unity is a dead end)...
So:
when exporting a GF8 figure to Unity, ticking the checkbox "Lock bone translations for morphs" has no influence on the outcome of how the pelvis/thigh area of the mesh ends up. Because, well, obviously, it's G8F with fixed proportions of the bones, and the thigh join is rotating, and no joints are moving in the pelvis region.
Then I look into
pJCMThighSide_85_L settings. Its controllers are:
1) ERC [DeltaAdd] Left Thigh Bend Side-Side
2) ERC [Multiply] GF8 Base Join Correctives
Exporting "Base Joint Correctives" in the list of morphs to Unity is technically allowed (you can add it to the list of exported morphs) yet it doesn't appear as a blend shape in Unity. I guess, that's because those correctives are not some "mesh copy" that would correspond to a blend shape.
Actually, you can disable Base Join Correctives on a Daz figure (it's an on/off button). Yet, even if they are disabled, the figure still looks differently in Daz in Unity. And it's worse in Unity.
The JCMfix addon promptly states in its store description:
Genesis figures can not work in Unity exactly as they do in Daz Studio because of the way in which Unity calculates weight maps and bone rotations. JcmFix will automatically fix bone rotations by adding an extra bone where needed and thus mitigate to an extent weight mapping problem.
So, the conclusion is: in G8 this add-on's author made it work, kinda. It's an approximation that's sort of "good enough". The story with GP there was to at least make the GP work good enough with the weight map on it.
Now, we come to G9, and it gets so complicated that I guess that the add-on's author lightBLUE wouldn't even attempt to update his add-on. That's why the addon still has its latest update in 2021 (3 years ago). Because now in G9 we have several morphs that always modify proportions of the figure (BaseFeminine, ProportionSmaller and ProportionSmallerBO), and you actually can apply many more, like TorsoLength, LegsLegth (which I did btw)... All of this multiplies with JCMs for the thighs. And Golden Palace had to be a good player in this new system and had to abandon weight maps and instead add JCMs of its own.
What happens with Unity export: I played around a lot trying to get BaseFemininity and BodyProportions work! Actually, initially I was bold enough to even try to use Animancer's animation blending to make animations work for ANY G9 figure with a custom degree of femininity or proportions smaller/larger. That failed completely. Because, with bone lengths changing, blend shapes get added on top of the bone moves, and the figure just explodes or gets deformed wildly. The most complicated area was the face. But GP, too, was never friendly with the proportions and would just end up sticking out or pushed inside. So, I swore to never export any proportion-changing morphs. Instead, apply them in Daz and export the figure as a given, with those proportions. I ended up exporting just 2 fixed sets of proportions: one for feminine figures, one for masculine. Essentially replicating how G8F and G8M worked. And this worked as long as I ignored JCMs. But if I want the figures to look nice with JCMs (plus, make sure that GP correctly follows the pose), I'm forced to work with those proportion-changing morphs. And they can't be exported to Unity properly (or at least, I failed to figure out how to make them work).
This is where it ends for G9. At least how I understand it. Maybe there is a solution here. After all, for G8 lightBLUE guy guessed to just introduce new bones (tbh I'm not sure that would work fine with animations, I haven't tried as I was generally resisting the idea of downgrading to G8 figures). I dunno what one has to invent to marry Unity with the concept of proportion-changing morphs being used as a multiplier everywhere.
So, looking at this from the business perspective, it's easier to spend 2-3 months learning Unreal and then porting to it rather than venturing into this (as I feel) research-level stuff with JCMs and proportion multipliers in Unity. Maybe you can do it. And earn from that by publishing an add-on on Unity Asset Store. I'm not up to that task for sure
And given the consensus that "Unreal is better anyway", I wouldn't hold my breath for a solution to appear soon. So, I should just follow the consensus. The mistake here was in trying to "save time" and using Unity just because I had worked with it for years before. After all, I played many 3D porn games, and almost all of them were made in Unreal, not Unity. Now I see why.