BodyNet (Free)

Plugins BodyNet (Free)

Yes, you got the right conclusion.
It gets better at what you train it on. If you want it to be able to handle anything somewhat well you'd train it on as many source+target combinations as possible. For a model that is better at matching a specific body type, you'd train it on a single or a few similar source morph presets. Similarly, you can train it to match a single target to a bunch of different sources.
To be precise, the model is trained on the *difference* between morph presets and doesn't care about how either of them look like so much. You'll get the best results if you train and use it on a set of similar differences rather than expecting it to match your look to anything from Hulk to Shortstack.
Another couple question, if I may?

1) Does repeatedly applying a preset (model) yield different (better?) results compared to applying just once? Bcs it seemed to me that it did, for me.

Caveat: I did some other stuff before, including trying to train a preset - but I hit "default" afterwards, so, at least to my understanding of how your plugin works, I was repeatedly applying your default model (not my half-trained model).

2) I was wondering whether a different set of adjustment morphs might yield better results, especially in the lowerbody/leg region - in particular, your default model seems to try to use bodyscale and then tries to match the upper/bottom half of the body with armlength/leglength and upperbody & uppertorse and then it tries to apply leglength/lowerbody morphs to fit the bottom half of the body. Thing is that armlength affects just the arms while leglength effectively affects the whole body. TL;DR - In my experience, your default model produce a very good fit for the upper half of the body, but it struggles to simultaneously find a good fit for the lower half of the body.

Suggestion: You have three pairs of controllers to match in the leg region (thigh, knee, feet), but only one "regional morph" to do it with. Similar problem in the body's middle region -> Add some bonemorphs that allow for more granular adjustments within each of the three bodyregions (upper, mid, lower) - eg. add thighlength for the leg region (and maybe "hipheight" for the belly region?). That way, the model can find a better fit for all three pairs of controllers on the leg by using leglength together with thighlenght.

3) Additionally, you have just one bodymorph ("shoulder width") for adjustments lateraly to the body's long axis (If we call the body's long axis y, then "lateral" would be x & z) - and this one morph ("shoulder width") only acts on the upper body. So you have no morphs that can modify in the x,z plane of the lower body.

If, say, the source's thigh controllers are 20cm apart, and the target's thigh controllers are 22cm apart, then the only way your model can adjust for that is via the bodyscale morph - affecting the whole body, not just the thighs - and then it has to compensate for all the ensuing unwanted changes with upperbody/uppertorso and lowerbody/leglength.

TL;DR - IMO, it'd be good to have at least one bodymorph that changes the distance of the thighcontrollers in the x-axis without affecting the rest of the body.

P.S.: Not sure I'm doing a good job explaining myself. Sorry! Feel free to ask for clarification.
 
Last edited:
Another couple question, if I may?

1) Does repeatedly applying a preset (model) yield different (better?) results compared to applying just once? Bcs it seemed to me that it did, for me.

Caveat: I did some other stuff before, including trying to train a preset - but I hit "default" afterwards, so, at least to my understanding of how your plugin works, I was repeatedly applying your default model (not my half-trained model).

2) I was wondering whether a different set of adjustment morphs might yield better results, especially in the lowerbody/leg region - in particular, your default model seems to try to use bodyscale and then tries to match the upper/bottom half of the body with armlength/leglength and upperbody & uppertorse and then it tries to apply leglength/lowerbody morphs to fit the bottom half of the body. Thing is that armlength affects just the arms while leglength effectively affects the whole body. TL;DR - In my experience, your default model produce a very good fit for the upper half of the body, but it struggles to simultaneously find a good fit for the lower half of the body.

Suggestion: You have three pairs of controllers to match in the leg region (thigh, knee, feet), but only one "regional morph" to do it with. Similar problem in the body's middle region -> Add some bonemorphs that allow for more granular adjustments within each of the three bodyregions (upper, mid, lower) - eg. add thighlength for the leg region (and maybe "hipheight" for the belly region?). That way, the model can find a better fit for all three pairs of controllers on the leg by using leglength together with thighlenght.

3) Additionally, you have just one bodymorph ("shoulder width") for adjustments lateraly to the body's long axis (If we call the body's long axis y, then "lateral" would be x & z) - and this one morph ("shoulder width") only acts on the upper body. So you have no morphs that can modify in the x,z plane of the lower body.

If, say, the source's thigh controllers are 20cm apart, and the target's thigh controllers are 22cm apart, then the only way your model can adjust for that is via the bodyscale morph - affecting the whole body, not just the thighs - and then it has to compensate for all the ensuing unwanted changes with upperbody/uppertorso and lowerbody/leglength.

TL;DR - IMO, it'd be good to have at least one bodymorph that changes the distance of the thighcontrollers in the x-axis without affecting the rest of the body.

P.S.: Not sure I'm doing a good job explaining myself. Sorry! Feel free to ask for clarification.
1) You will get a new result every time you apply the model. It calculates how to change morphs based on the current difference between skeletons when you press the button. Most likely, you won't see any benefit from pressing apply multiple times but you might.
/Edit: This is no longer true in v21. All output morphs will be zeroed before processing which means that the starting point is always the same when applying/training.

2) My assumption was that you could match relatively well by using a combination of body scale and the different regions. If there are other built in morphs or a single morph collection that could improve the model I'm all for it.
On a side note, there is no order in which the morphs are adjusted. The model calculates everything at once.
In my testing the lower body matched great and only arms had slight issues with the forward/back alignment. It's absolutely expected that different morph presets lead to better or worse fitment in one region or another, though.

Do you suggest specific morphs to be added to the model?
 
Last edited:
Another couple question, if I may?

1) Does repeatedly applying a preset (model) yield different (better?) results compared to applying just once? Bcs it seemed to me that it did, for me.

Caveat: I did some other stuff before, including trying to train a preset - but I hit "default" afterwards, so, at least to my understanding of how your plugin works, I was repeatedly applying your default model (not my half-trained model).

2) I was wondering whether a different set of adjustment morphs might yield better results, especially in the lowerbody/leg region - in particular, your default model seems to try to use bodyscale and then tries to match the upper/bottom half of the body with armlength/leglength and upperbody & uppertorse and then it tries to apply leglength/lowerbody morphs to fit the bottom half of the body. Thing is that armlength affects just the arms while leglength effectively affects the whole body. TL;DR - In my experience, your default model produce a very good fit for the upper half of the body, but it struggles to simultaneously find a good fit for the lower half of the body.

Suggestion: You have three pairs of controllers to match in the leg region (thigh, knee, feet), but only one "regional morph" to do it with. Similar problem in the body's middle region -> Add some bonemorphs that allow for more granular adjustments within each of the three bodyregions (upper, mid, lower) - eg. add thighlength for the leg region (and maybe "hipheight" for the belly region?). That way, the model can find a better fit for all three pairs of controllers on the leg by using leglength together with thighlenght.

3) Additionally, you have just one bodymorph ("shoulder width") for adjustments lateraly to the body's long axis (If we call the body's long axis y, then "lateral" would be x & z) - and this one morph ("shoulder width") only acts on the upper body. So you have no morphs that can modify in the x,z plane of the lower body.

If, say, the source's thigh controllers are 20cm apart, and the target's thigh controllers are 22cm apart, then the only way your model can adjust for that is via the bodyscale morph - affecting the whole body, not just the thighs - and then it has to compensate for all the ensuing unwanted changes with upperbody/uppertorso and lowerbody/leglength.

TL;DR - IMO, it'd be good to have at least one bodymorph that changes the distance of the thighcontrollers in the x-axis without affecting the rest of the body.

P.S.: Not sure I'm doing a good job explaining myself. Sorry! Feel free to ask for clarification.
I'm playing around with a couple of morphs from Morph.Morphs_Mega_Pack.1 and I'm quite happy with the results so far.
These are the ones I use:
  • Hip UpDown
  • Shin Length
  • Thigh Apart
  • Thigh Length
  • Waist FrontBack
  • Waist Height
 
1) You will get a new result every time you apply the model. It calculates how to change morphs based on the current difference between skeletons when you press the button. Most likely, you won't see any benefit from pressing apply multiple times but you might.

2) My assumption was that you could match relatively well by using a combination of body scale and the different regions. If there are other built in morphs or a single morph collection that could improve the model I'm all for it.
On a side note, there is no order in which the morphs are adjusted. The model calculates everything at once.
In my testing the lower body matched great and only arms had slight issues with the forward/back alignment. It's absolutely expected that different morph presets lead to better or worse fitment in one region or another, though.

Do you suggest specific morphs to be added to the model?
1) Ok, thanks for the confirmation of repeatedly pressing "apply" will have an effect. I my case, I did see an improvement. My best guess as to why is bcs my target preset included "hip updown" (~ -0.5) that I had totally forgotten about, and which I fear may have made it harder for the plugin to find a good fit for the lower body, especially the thight controllers. It also seems to me that "hip updown" may have the sideffect of modifying the distance between the thigh controllers (x-axis), since (iirc) the hip and thigh nodes are connected by configurable joints. Also I'd expect it to modify the relative positions of the other "belly region controllers (abdomen, adomen2 and pelvis), which might lead to problems when animators use those controllers alongside the hip controller.

TL;DR - I know I suggested hip updown, but, on second thought, I'm not so sure it's a good idea.

2) Yes, I've also seen the issues with the forward/back alignment of the arms. No idea why.
assumption was that you could match relatively well by using a combination of body scale and the different regions
The assumption is reasonable - in my experience, the morphs you use are the most commonly used in creating bodytypes that diverge from the default. It just seemed to me that the leg region was comparatively "underserved" compared to the chest region.

Do you suggest specific morphs to be added to the model?
I'll have to think some more on that - however, I think that adding "lateral axis morphs", especially for the lower body might be a good idea, and probably less likely to yield unintended problems.
I'm playing around with a couple of morphs from Morph.Morphs_Mega_Pack.1 and I'm quite happy with the results so far.
These are the ones I use:
  • Hip UpDown
  • Shin Length
  • Thigh Apart
  • Thigh Length
  • Waist FrontBack
  • Waist Height
* Shin length & Thigh Length seem a good idea, in the sense of "more granular control within the leg region".

* Thigh apart ... I've used that one a while ago, but atm I can't remember whether it "actually does what it says on the tin" (ie modify distance between thigh controllers), or whether it rather acts as a "thigh gap" morph?

* Waist FrontBack ... hmmmh. Not sure. Depends whether it (implicitly) affects the orientation of the genital region.

* Not so sure whether Hip UpDown and Waist Height are a good idea. My concern is that the region they act on has four controllers (hip, abdomen, adomen2 and pelvis) which are crucially important for position and orientation of the genital region - but your model only tracks the position of one of them (hip). The hip controller has the greatest effect on genital position, while pelvis controller has the greatest influence on genital region orientation - some creators animate both, or parent the pelvis controller to the hip controller.

TL;DR - I'm not sure it is prudent to (potentially) alter the relative positions of those controllers without tracking those changes? Granular control of chest and leg region seems both desirable and comparably unproblematic. Chest region is already well-served (upperbody & uppertorso).
 
Last edited:
I'll leave hip updown in for now because I just spent hours training the model :cool:
The adjustments are relatively subtle with my presets. Let me know how it turns out for you and we'll iterate.
 
I'll leave hip updown in for now because I just spent hours training the model :cool:
The adjustments are relatively subtle with my presets. Let me know how it turns out for you and we'll iterate.
Ooooops ... Sowwwyyyy :oops:
 
Last edited:
Nah, I could have tested the visual impact before I started training 🤷‍♂️
The fact that I didn't notice lets me think it'll be fine but that's only with my morph presets.
Ok, I'll get back to you when I find time for testing - could take me a bit, though.

P.S.: I think taking morphs from the megamorphpack is a good idea - not the most recent package, but probably best to stick to hub-hosted morphpacks.

P.P.S.: .re the weird "arm angle mismatch" we've both seen - does your model track controller orientation? I vaguely remember that Unity "configurable joints" (what Meshed used for Person atoms) have angle-limits - eg too prevent elbows & knees from bending backwards etc. Maybe some morphs implicitly modify those angle limits? That's pure speculation on my part - best ask some of the looks creator gods in the VaM Discord? (Damarmau etcetc)
 
probably best to stick to hub-hosted morphpacks.
I wish it was... I wish it was.

does your model track controller orientation?
The most relevant controls are locked in place and all others are off. The plugin never looks at controllers at all.
 
The most relevant controls are locked in place and all others are off. The plugin never looks at controllers at all.
Right, sorry! Controllers aren't affected by the physics engine. I meant their corresponding "object nodes" - does the plugin track their orientation? Or just their position?
 
Right, sorry! Controllers aren't affected by the physics engine. I meant their corresponding "object nodes" - does the plugin track their orientation? Or just their position?
only position of rigidbodies at the marked locations
 
This looks amazing! All the time I've spent trying to match 2 models with a camera that has built in perspective, yeah, never quite lines anything up.

One big ask though, when I'm switching looks about in a scene most of the time it's the male that breaks the animation not the female. With the auto-aim plugins it generally comes down the size of each penis that determines if an animation will break. Before the auto-aim plugins the angle would cause issues too.

I imagine that's not gonna work out of the box unless you've already been training on male models, so would it be a big lift to get that working too? Would be great if it was as simple as adding a few more morphs in, but I understand VaM has a habit of treating the 2 sexes in very different ways under the hood so I suspect it could be a bit more involved.
 
This looks amazing! All the time I've spent trying to match 2 models with a camera that has built in perspective, yeah, never quite lines anything up.

One big ask though, when I'm switching looks about in a scene most of the time it's the male that breaks the animation not the female. With the auto-aim plugins it generally comes down the size of each penis that determines if an animation will break. Before the auto-aim plugins the angle would cause issues too.

I imagine that's not gonna work out of the box unless you've already been training on male models, so would it be a big lift to get that working too? Would be great if it was as simple as adding a few more morphs in, but I understand VaM has a habit of treating the 2 sexes in very different ways under the hood so I suspect it could be a bit more involved.
The current feature set should work fine for males. The "prepare bodies" button does load a female skin, though. You could change the skin preset that's loaded and save a version of the scene. Maybe the default network gets you somewhere otherwise you'd have to train a fresh one.
Penises will be left untouched, as it were. 😁
 
The current feature set should work fine for males. The "prepare bodies" button does load a female skin, though. You could change the skin preset that's loaded and save a version of the scene. Maybe the default network gets you somewhere otherwise you'd have to train a fresh one.
Penises will be left untouched, as it were. 😁
It's those damn "extra bones" that cause the most problems though! Too big and they don't fit, too small and they don't reach! So for a plugin I'd actually want the ability to change the penis size.

I do like that hip width and breast size are not affected, those are things I'd like to preserve on a woman and then deal with the fallout. But for the men, I don't mind the penis size changing if it makes the animation functional again.

I find moving hands about to cater for different sized breasts a lot less fiddly than trying to get the bits to fit again. Also if you get it wrong VaM is prone to physics explosions. So having a plugin to get a very close match could, I hope, save a lot of panicked reloading ;)
 
It's those damn "extra bones" that cause the most problems though! Too big and they don't fit, too small and they don't reach! So for a plugin I'd actually want the ability to change the penis size.

I do like that hip width and breast size are not affected, those are things I'd like to preserve on a woman and then deal with the fallout. But for the men, I don't mind the penis size changing if it makes the animation functional again.

I find moving hands about to cater for different sized breasts a lot less fiddly than trying to get the bits to fit again. Also if you get it wrong VaM is prone to physics explosions. So having a plugin to get a very close match could, I hope, save a lot of panicked reloading ;)
Yeah, my overall goal was to affect how the model looks as little as possible. I wanted to change the bone structure/proportions while keeping everything else as is.
99.9% of the time I keep the male stock. It doesn't matter to me that much in VR/PoV.
 
Quick question, sorry if I missed it reading up until now.

-I made a really long, spooky appearance and wanted to use it in a Hub scene.
-When I ran the BodyNet scene and let it ride for a few passes (~4x 53/53) it made my long spooky model about the same same height and shoulder width as my source model.

Is this working properly in that it will modify the overall skeleton of the target, but leaves breasts, glutes, skin all the same?

I originally thought it would keep the height but adjust the target points. (ie, if a scene had an Atom placing a hand on the targets shoulder, when the new BodyNet appearance is loaded the Atom would adjust where it's hand would go)

Edit: I may have selected "Apply" and then "Train"... which I assume makes the quick adjust for the basic skeleton and from there it was just making minor tweaks for about 20 mins. lol. I'll mess around a bit more to see if my new understanding will do what I want.
 
Last edited:
Yes, the plugin is designed to adjust the overall size and proportions of the target while keeping the "look" intact. If it's a defining feature of your model that she's very tall it's not going to be preserved, sadly.

VaM has no concept of what you call target points and scenes/animation contain no information about where contact is supposed to be made. (as in A places hand on B's shoulder)
In theory, you could create an AI that applies dynamic forces to a person during animation to improve alignment with whatever models you throw at the scene. That's multiple orders of magnitude more complex than what I did here, though. At that point you'd have to build an actual AI that could understand and operate a human body. On the other hand, my plugin is a "simple" machine learning algorithm that can hardly be called AI.

Both "Apply" and "Train" run the skeletons through my network and adjust morphs. The difference is that "Train" looks at the result and tweaks the network afterwards to optimize it. Maybe I should rename "Train" to something like "Apply and refine" for a less technical and more intuitive UI.
 
Last edited:
TBD updated BodyNet - use your favourite look in any scene with a new update entry:

major update

changelog v21
General improvements
  • Removed the Hip up-down morph because it had too much of a visual impact.
    You will have to re-train your saved networks, sorry.
  • All output morphs will now be zeroed before applying/training.
    • Pressing "Apply" multiple times will always have the same outcome.
    • Letting training go on for multiple runs will yield better and more consistent results.
  • Body-to-head ratio adjustments will now scale "Body Size"...

Read the rest of this update entry...
 
Nice!

Guess I can save myself the issues-report then - I also had trouble with the auto-headscaling (The night of shrunken heads ...).

Feature-request:
* Ability to manually set a Body-to-head ratio. JSONstorable receiver (like eg "rate") would be perfectly sufficient.
* Ability to derive body-to-head of the target preset (rather than source) & use thatas scaling goal.

P.S.: Do you also still get the weirdly mismatched arms/hands? Like the target preset can't fully straigthen its elbow joint, and hence, the hand-controllerrs are quite far apart?
 
Ability to derive body-to-head of the target preset (rather than source) & use thatas scaling goal.
That's what the plugin's doing, actually. It keeps the target's body-to-head ratio as it is. Scaling isn't part of the network but a separate algorithm, in fact.

P.S.: Do you also still get the weirdly mismatched arms/hands? Like the target preset can't fully straigthen its elbow joint, and hence, the hand-controllerrs are quite far apart?
If you mean hands and elbows are too far forward/back, yes, with some presets. The Arms Short morph isn't sufficient to remedy that. We probably need to find more fine grained arm/hand morphs.
 
That's what the plugin's doing, actually. It keeps the target's body-to-head ratio as it is.
Ummmmh ... no? At least until v21, It takes the source's body-to-head ratio and applies it to the target. Very, very sure of that - I prefer b2h ratio of 8.0 and have it on all my looks. The plugin turned that into 7.6-7.3 until I modified the source-look to also have 8.0 - then it kept ~8.0 also on the target preset.

Scaling isn't part of the network but a separate algorithm, in fact.
I suspected as much - "head big" (or"head scale") doesn't affect the head controller much, if at all.

If you mean hands and elbows are too far forward/back, yes, with some presets. The Arms Short morph isn't sufficient to remedy that. We probably need to find more fine grained arm/hand morphs.
Yup.
 
Last edited:
Back
Top Bottom