Transfer vertexgroups results in poor quality weightmaps (** aka transfer G2 to G8)

Issue #1784 resolved
jeroen b created an issue

If I use the plugin to transfer vertexgroups (advanced setup/mesh) from active to selected, the resulting weightmaps are jagged resulting in poor armature transforms.

See pictures, first with the plugin, followed by using blenders data transfer modifier (nearest face interpolated)

Comments (13)

  1. Thomas Larsson repo owner

    Fixed in last commit. It turned out that the button uses the data transfer operator but the vertex mapping was set to nearest vertex. It is now changed to nearest face interpolated which should produce the same result as the data transfer modifier.

    This tool is somewhat unnecessary, since you can achieve the same result with Blender’s built-in tools. It used to transfer weights with the numpy code that is used for transferring shapekeys, but somebody pointed out that the data transfer operator did the job at least as well.

    It is possible to transfer shapekeys with the built-in operator as well; this is what the Legacy method does.

  2. jeroen b reporter

    Working perfect, thanks Thomas.

    I find this tool very useful. I am working on G2F rigged as G8F and so I have to create weightmaps for every single G2F clothing item. With your plugin tool I can now select all the clothing items and create perfect weightmaps for them in one go. Compare that to having to use blenders data transfer modifier for each seperate item and than having to prune the vertex groups afterwards.

    Major time saver, thanks again!

  3. Alessandro Padovani

    @jeroen That’s interesting, thank you for the idea. The G3F package includes a G2F clone so I can try to transfer the rig and see what comes out. Anyway recently we improved the triax support #1731 and now G1 G2 figures are not so bad to use.

  4. jeroen b reporter

    Alessandro, the G8F also has a G2F clone. I think the G8F rig is better than G3F, so why not try that instead? If you are interested, I can post the essential duf & blendfiles here.

  5. Alessandro Padovani

    Yes thank you, of course if you use commercial products then just link the product page, don’t upload if the eula doesn’t allow.

    My workflow is more to kitbash in daz studio then export as dbz, using prebended figures to avoid body morphs. This way I can export G1 G2 quite fine and also get light weight figures in blender. But the idea to transfer G8 to G2 is very interesting, though we could just import G8 wearing G2, without any transfer.

    https://www.deviantart.com/catherine3678ab/art/Autofit-Clones-part-2-914977805

  6. jeroen b reporter

    Alessandro, hereby 2 DAZ files; one G2F pose preset and scene with both G2F & G8F. Also the blendfile that you can use for transfer of shapekeys.

    My workflow is to first create a G2F character in DAZ with clothing, hair and what not, put the character into G8F pose (use pose preset) and import into the attached blendfile and delete all vertexgroups. Copy all G8F vertexgroups from the existing G2F to the new G2F. (the same for all clothing & other items obviously)

    In blender create a shapekey for the G2F in the transfer collection, using the shapekey panel; “join as shape” (selected imported G2F to active). Then transfer this shapekey to the G8F in the transfer collection using Diffeo “nearest face”, and set the shapekey strenght to 1. The G8F should now have the same shape as the imported G2F.

    Export the morphed G8F as a obj. file that can be used as a morph in DAZ. I use the legacy obj. exporter, see settings pic;

    In DAZ, load basic G8F and import the created obj. file as a morph (morphloader pro or something). Set morph to 100% and now “adjust rigging to shape”. The G8F armature should now match the shape of the morphed G8F perfectly. Again import this G8F into the blendfile.

    Now you can import all morphs to the G8F and transfer to the G2F (with armature drivers) that you like to rig as a G8F. When done, many shapekeys will look bad in particular mouth & eyes. To fix this you must transfer all the shapekeys through the transfer collection, because these meshes do not intersect. So first transfer from the G8F (shaped as a G2F) “by number” without drivers to the G8F in the transfer collection. Then transfer by “nearest face” to the G2F in the transfer collection. Finally overwrite the shapekeys of the imported G2F character “by number” from the G2F in the transfer collection.

    Now you should be able to delete all unnecessary items and the G2F is rigged as a G8F.

  7. Alessandro Padovani

    It is a lot of work that way to transfer a figure, it makes sense since you only do it once but stills a lot of work. It should be possible in daz studio to clone g8 as g2 including the g2 body morphs aka armature shape, that would make the process much smoother. Will let you know if I have some success.

    steps:

    1. in daz studio prepare the g2 figure including outfit and body morphs and export to blender, this will be our g2 target
    2. in daz studio clone g8 as g2 and export to blender, this will be our g8 source rig
    3. in blender import the g2 target and the g8 source then transfer g8 to g2

  8. jeroen b reporter

    Agreed about beeing quite a procedure, but the purpose for me is to use the actual G2F geometry in a G8F rig. The best of both IMHO since G2 has more detail, preserving things like muscle tone, fitness details etc. far better than G8 (without beeing HD that would slow everything to a crawl), while G8 rig is much better than G2.

  9. Alessandro Padovani

    Ok I got it. It is indeed possible to clone g3 as g2 including the g2 shape. I did it with g3 but the process is the same for g8.

    steps in daz studio:

    1. shape g2 as desired, then save as obj and reimport back with morph loader as a new g2 morph
    2. select the new g2 morph as favorite and transfer to g3 with the transfer utility, as picture below
    3. on g3 set the g2 clone and the new g2 morph then fit the armature with edit > figure > rigging > adjust to shape

    This way you get g3 cloned as g2 that you can save to blender to transfer g3 to g2 as explained above. It is essential in blender to also transfer the jcms to get good deformations for the g2 figure, since the triax bulges are of course no more used this way.

    Agreed that the G2 topology is much better than G3 G8, not to mention G9 that’s a complete failure. Overall I still prefer to import G2 as prebended it is much simpler, but this is an alternative way to get a more advanced figure if needed, or it is also a way to clone a G2 figure to G3 G8.

    https://www.deviantart.com/sickleyield/journal/Tutorial-Transferring-Character-Morphs-G1G2G3G8-409437916

  10. Log in to comment