Wed, Aug 7, 4:44 PM CDT

# Welcome to the Poser 12 Forum

Forum Moderators: nerd Forum Coordinators: nerd

Poser 12 F.A.Q (Last Updated: 2024 Jul 20 8:02 am)

Welcome to the Poser Forums! Need help with these versions, advice on upgrading? Etc...you've arrived at the right place!

Looking for Poser Tutorials? Find those HERE

# Subject: Morph Transfer Algorithm

unrealblue ( ) posted Mon, 08 February 2021 at 3:53 AM ยท edited Mon, 05 August 2024 at 3:06 PM

I don't know where to ask this and it's certainly not covered in Poser's documentation. It's fairly technical in that it's not something most people would care about but certainly would affect clothing creators.

How does Poser calculate the transfer of morphs from one mesh to another. I'm talking weight mapped morphs. Does it generate an effective weight cloud or something similar. For instance, ideally, let's say I had La Femme. I export her mesh then reimport it. This would give me a mesh that is, point for point identical. Ideally, transfer of all the morphs would produce the exact same morphs in the imported mesh. That would be nice.

That's not what happens.

I have in mind making various generic "donor" clothing items. very high res meshes (if that helps the accuracy of the transfer). It's mostly at the joints (JCMs) that make it hard. For instance, briefs need different morphs at opening than skin tight shorts (or longer shorts or capris or loose versions of those). The donor doesn't need thickness at the edges, I think. It's even possibly to do some of the bendy stuff using dynamics, then tightening, then transferring (subtracting the bend). Dunno.

I just know that if morph transfers were much more accurate and I had a good set of donors that didn't require days to clean up the morphs... Well, i could make a lot more stuff. Modeling the 3d stuff is pretty quick in blender. But 3 axis of bend, triax weights, + bulges + JCMs each joint is brutal. It's like a couple of days to model something, then weeks to do the joints. I have some scripts for symmetric meshes, even across body parts. That saves time for those meshes. But wow. It's made more difficult by the control (or lack thereof) in the morph tool, and the performance, even on 18 cores with high res meshes. Lack of brush shape and falloff graph hurts.

Anyway, it would be nice to know the math in how morphs are transferred. It doesn't look too complicated.

Ken1171_Designs ( ) posted Mon, 08 February 2021 at 7:58 AM

One thing I can tell you about exporting meshes from Poser is - don't do it. Poser does not support unimesh internally. This is the same with 3DSMAX and Maya, where none support unimesh geometry. In all these applications, the moment we import a grouped mesh with rigging, the mesh is automatically split into multiple separate meshes, and once this happens, you will never get the original mesh back. If you are exporting the figure just to use as a base for morphs, use the original OBJ from the Geometries folder instead. If you export from Poser, the mesh will be split into separate group geometries, having a different vertex winding order and count. The number of faces is still the same, but all vertexes shared between body groups will be duplicated. You cannot use this "broken" exported geometry for anything. Even if you weld it back together into 1 piece, that alone will change the vertex winding order and invalidate all your morphs.

Another thing is that the concept of "donors" is different between figures using legacy rigging or the newer ones with weight maps. With modern weight mapped figures, I would rather call this as "clones" if you want to use then solely for morph projections. A "clone" is a version of the figure shape that is more proper for morph projections. This concept is built-in into DAZ Studio, but in Poser we have to do it manually.

I absolutely agree with you on how poorly Poser projects morphs from figure to clothing. I have a ticket on this with Rendo, to improve projections and reduce distortions. The same applies to weight map projections, because these also introduce too much distortion (comparing to competing software). I spend more time cleaning up the distortions on morphs and weight maps than anything else in the conforming pipeline. However, modeling has always been quick comparing to rigging. No surprises there. It has always been like that, and Poser is no exception.

As for how Poser projects morphs and weight maps, I have no idea, since we cannot see the source code. But we know it's bad and it can improve, because nearly all competition does it better. Like I said, I have an open ticket on this, and it will be fixed over time. We just have to be patient.

My Store at PoserSoftware

Characters, Body Sculpts, Morph Corrections, Outfits, Python Scripts, Universal Heads, and Videogames!

DCArt ( ) posted Mon, 08 February 2021 at 10:10 AM ยท edited Mon, 08 February 2021 at 10:11 AM

If this helps, La Femme Pro comes with two high res clothing dev objects already (one for regular clothing and another for dresses, skirts, long coats, etc. They were created specifically for morph transfer and have all of the LaFemme base body morphs and JCMs built into them. In addition, injection files for these HR dev rigs are included when you purchase the Femme Fatale or La Femme Body Kit products. I believe L'Homme is also furnished with a high res dev rig.

As far as what Ken said, yes this is a highly requested feature (has been for a long time), and patience is a virtue. 8-)

unrealblue ( ) posted Tue, 09 February 2021 at 9:08 PM

I've used the HR clothing devs. Most times they're better. I assume, given what Ken said, they were done painstakingly, since Poser doesn't help much with transferring.

One thing I've noticed is the dev rigs. This is, the bends (and JCMs) behave differently at a joint, depending on the clothing. An example (real one). jockeys. The edge is right at the joint. When the joint bends, the edge actually slips (that is, the skin slides under the edge). Think "wedgie". So a tights/pants donor rig really doesn't do well for that. Same thing happens for singlet (sleeveless) at the shoulder. Or straps. Movement of skin is way different that the covering cloth. Of course, dynamic would rock but then it has no concept of elasticity or any way to hold thickness at the edge. We really need more clothing donors. I'm considering that, as a freebie dev thing. It would he super helpful for morph transfers to be able to mirror them. selecting the actors to include, and what the mirrored actors are. I have scripts that help. For instance, mirror a JCM.

for instance, JCMrThighFwd. This morph is actually spread across 2 actors: rThigh and hip. On hip, it needs to mirror, and for rThigh, it needs to mirror and transfer to lThigh. In both cases, it needs to rename and setup master(s). This really should be built in.

But... but... the squeaky wheel gets the grease.

Here's a question, then, for people that know more about Poser, it's rigging, and morph transfers. Would it be better to just create a pretty simple high res largely straight quad "donor" mesh/rig? It's only for containing a sh*tpile of points, with morph vectors, that through some "black box" no one understands, is used to create corresponding vectors for the vertices of another mesh.

This was why it would be helpful to understand how poser calculates its transfer. Would it be better to use quads or tris? Is it using normals? Is it just doing distance? Weighting somehow?

philc did this. His stuff worked pretty well, iirc. I always wanted to know the math, there :)

unrealblue ( ) posted Mon, 15 February 2021 at 1:31 AM

I created "donor" rigs for La Femme that use the old cylinders and spheres for joints. I found that this transfers much smoother and more predictably. It's obvious how the morph vectors at each point are done for the spheres/cylinders. After transferring the rig of spheres/cylinders, I bake them into weigh maps in the new mesh. This produces a MUCH better result that transferring even a high res WM from one mesh to another. If the meshes are similar, the transfer requires nearly no tuning. It doesn't matter how much the actual mesh geometry is. So long as the shape (especially the openings at joints) are similar. It's easy and accurate to bake from sphere to WM. But messy to transfer from mesh to mesh as WM. Even skin tight transfers better this way.

That's just what I've found.

FVerbaas ( ) posted Mon, 15 February 2021 at 5:01 AM
Forum Coordinator

Weight mapping copy works fine for tight and reasonably tight garments. The weight information is valid for the location where the vertices of the donor are. Any extrapolation to garments that fit less tightly is a guess.

Original 'sphere' mapping is much more restricted than weight mapping but because it defines the weight information on the basis of the xyz coordinates. Depending on how the falloff zones are defined, the weight info for the location of the garment vertices may of may not be usable.

Ken1171_Designs ( ) posted Tue, 16 February 2021 at 3:12 PM

thoennes posted at 3:09PM Tue, 16 February 2021 - #4412425

For instance, mirror a JCM. For instance, JCMrThighFwd. This morph is actually spread across 2 actors: rThigh and hip. On hip, it needs to mirror, and for rThigh, it needs to mirror and transfer to lThigh. In both cases, it needs to rename and setup master(s). This really should be built in.

I am with you on that. Currently, Poser does not support mirroring JCMs to the other side. I have an open ticket with the dev team on this alone, so (with some luck), the feature will eventually come. I just wanted you to know that the issue is known, and was added to the list of things to address over time. Here again, we have to be patient. :)

My Store at PoserSoftware

Characters, Body Sculpts, Morph Corrections, Outfits, Python Scripts, Universal Heads, and Videogames!

FVerbaas ( ) posted Wed, 17 February 2021 at 6:13 AM
Forum Coordinator

Question is of course why we define both sides of a symmetrical figure.

unrealblue ( ) posted Wed, 17 February 2021 at 9:05 PM

FVerbaas posted at 8:48PM Wed, 17 February 2021 - #4412813

Weight mapping copy works fine for tight and reasonably tight garments. The weight information is valid for the location where the vertices of the donor are. Any extrapolation to garments that fit less tightly is a guess.

Original 'sphere' mapping is much more restricted than weight mapping but because it defines the weight information on the basis of the xyz coordinates. Depending on how the falloff zones are defined, the weight info for the location of the garment vertices may of may not be usable.

Actually, that comes back to my question. I tried this. I made a form, fit exactly to la femme's body. The mesh I made was a fine mesh, taking into account joints, and remeshed into mice quad. A skin-tight fit. I used the HR and non-HR dev rigs. The movement of the rigged mesh was not very good. I created, painstakingly, a cylinder based donor rig. I tested it by actually using the la femme mesh as a test recipient. With JCM off (of course). The cylinder based donor rig produced a much better result, when used on the mesh the HR rig didn't do so well with. It needed pretty much NO changes when used (this for close fitting top and bottom, ending at ankles, wrists, and neck). I get how to cylinder/sphere rig works. The match is simple enough to do on paper. For point, you just need the intersection of a scaled zone surface. It produces a very smooth result. This works well even if you've enmeshed features like wrinkles/folds.

The closer to the actual La Femme mesh (which is copyrighted, surely), I would think that a mesh to mesh transfer of morphs should be exact. But it's not.

And this got me to wondering, how, exactly, poser calculates a morph vector from a WM mesh to a second mesh. Does it just project up a calculated vertex normal. If the donor weigh map has some non-smoothness, that probably should be reduced as the distance up the vertex normal grows. Basically, it should get smoother. Or not. Depends, right? There's no control. And not even an indication of what will happen, until it's done.

An awesome feature would be a visualization of the zone that poser will be using.

This can't be super secret "no one does it as well as poser" stuff. Would be nice to see, if not a detail, then a description, at least :)

unrealblue ( ) posted Wed, 17 February 2021 at 9:27 PM

FVerbaas posted at 9:05PM Wed, 17 February 2021 - #4413024

Question is of course why we define both sides of a symmetrical figure.

Yes, well... :)

FVerbaas ( ) posted Mon, 22 February 2021 at 12:51 PM ยท edited Mon, 22 February 2021 at 12:53 PM
Forum Coordinator

thoennes posted at 12:04PM Mon, 22 February 2021 - #4413099

Actually, that comes back to my question. I tried this. I made a form, fit exactly to la femme's body. The mesh I made was a fine mesh, taking into account joints, and remeshed into mice quad. A skin-tight fit. I used the HR and non-HR dev rigs. The movement of the rigged mesh was not very good. I created, painstakingly, a cylinder based donor rig. I tested it by actually using the la femme mesh as a test recipient. With JCM off (of course). The cylinder based donor rig produced a much better result, when used on the mesh the HR rig didn't do so well with. It needed pretty much NO changes when used (this for close fitting top and bottom, ending at ankles, wrists, and neck). I get how to cylinder/sphere rig works. The match is simple enough to do on paper. For point, you just need the intersection of a scaled zone surface. It produces a very smooth result. This works well even if you've enmeshed features like wrinkles/folds.

The closer to the actual La Femme mesh (which is copyrighted, surely), I would think that a mesh to mesh transfer of morphs should be exact. But it's not.

And this got me to wondering, how, exactly, poser calculates a morph vector from a WM mesh to a second mesh. Does it just project up a calculated vertex normal. If the donor weigh map has some non-smoothness, that probably should be reduced as the distance up the vertex normal grows. Basically, it should get smoother. Or not. Depends, right? There's no control. And not even an indication of what will happen, until it's done.

An awesome feature would be a visualization of the zone that poser will be using.

This can't be super secret "no one does it as well as poser" stuff. Would be nice to see, if not a detail, then a description, at least :)

Copying morphs and weight maps for LaFemme went reasonably good for me. I cannot speak for Poser 12, but with Poser 11 I made a number of avatars for the MDBridge for Poser. These are skin-tight representations with simplified mesh to act as a collision 'avatar' in Marvelous Designer. I made them with simple 'copy morphs' and 'copy joint setup'. They were quite accurate, except for areas where the skin is 'saddle' shaped, with concave axis having the smaller radius of curvature, such as under the butt and under the breasts. There of course the target vertices have multiple 'source' vertices at comparable distance. When there is variation in the weight or the delta of the source vertices that leads to confusing results for the target vertices.

For weights there may be an issue with accuracy. Poser uses a relatively large unit of about 2.64 m. Pemissible variations would be in the order of 1 mm on a coarse mesh, much less on a finer mesh. That is quite a challenge. The copy process, I think, will contain some iterative loops that run until an 'error' is small enough or a number of cycles reached. Smaller acceptable error generally leads to (much) longer processing times, so there is a trade-off. Would be helpful if the user had a choice: 'coarse and fast'/'average and average'/'fine and long'.

Another solution could be a 'refine copy' brush that lets the user run the more accurate copy process on locations where he thinks necessary.

But yes, it can hardly be a secret so more info on the process would be appreciated.

RobZhena ( ) posted Tue, 23 February 2021 at 3:13 PM

I'm still using Poser 11 because of the Python issue. You are doubtless aiming for a greater degree of precision than I find necessary in morph transfers, but just for the record, as they say. I routinely transfer morphs from, for example, the V4 Morphing Fantasy Dress, to dresses I rig for La Femme using, say, a dress made for Genesis 3 female. Generally speaking, the most useful ones, such as hem length and movement, work just fine. I do the same for clothes I rig for other figures. A lot of morphs seem to guess pretty well what vertices they are supposed to move and how when they copy. I did a tutorial in the Poser Official Forum on how it works, and how you adjust the rigging for skirts of different lengths.

unrealblue ( ) posted Mon, 01 March 2021 at 12:45 AM

I've found few things that help:

• the closer the target mesh matches the donor mesh, the better.
• Actually, too much detail in the target doesn't improve things, except:
• even quads on the target mesh makes smoothing fast and much easier. Mostly the =target ends up with jitter. Smoothing an even quad mesh cleans up the jitter without distorting it. Along those lines, quad re-meshing (best add-on for Blender) does this super fast, with a button click. The resulting mesh keeps the details (like clothing folds) with the most ev en mesh of quads it can. Following contours nicely. And it subd's like a dream
• the biggest issue has to do with sharp depth edges (sharp creases). I'm figuring ways to round those such that the smooth brush doesn't screw them up.

With the better techniques, I'm producing my first meshes that work much with rig copying and morph copying. So, I suspect a great deal of the problem is my own ignorance in meshing for Poser :)