• Hi Guest!

    We are extremely excited to announce the release of our first Beta for VaM2, the next generation of Virt-A-Mate which is currently in development.
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
BodyNet (Pro)

Paid Plugins + Scripts BodyNet (Pro)

Go to pay site
hello, what is correct order. i have some scene without animation, animation (timeline) is saved into file via timeline methods of saving. should i put first model, then load animation and then add your plugin (not session one i do not like session plugins) ? or it doesnt work in such saved animation? only in scene with initial look?

same for mocapswitcher aniation loading.


DOes it work wit JayJayWon Ui Assist? couse i do not use vam without it with its wonderfull working.
 
hello, what is correct order. i have some scene without animation, animation (timeline) is saved into file via timeline methods of saving. should i put first model, then load animation and then add your plugin (not session one i do not like session plugins) ? or it doesnt work in such saved animation? only in scene with initial look?

same for mocapswitcher aniation loading.


DOes it work wit JayJayWon Ui Assist? couse i do not use vam without it with its wonderfull working.
The plugin does not interact with timeline animations in any way. Therefore, it does not matter in which order you load BodyNet and timeline animations.
UIAssist works with BodyNet. Everything is exposed so you can set up buttons for it.

If you require further assistance, please come to the support channel on my discord server. As a patreon with access to BodyNet Pro, you will also have access to the discord, too.
 
TBD updated BodyNet (Pro) with a new update entry:

1.34

Attention: please restart VAM after updating BodyNet. Otherwise, VAM will continue to use the previously loaded dll.

changelog v1.34
* new Naturalis integration automatically starts calibration after running BodyNet
* the original appearance's scale will now be restored when you change to an appearance preset with a different scale
* some minor bugfixes

Read the rest of this update entry...
 
The plugin does not interact with timeline animations in any way. Therefore, it does not matter in which order you load BodyNet and timeline animations.
UIAssist works with BodyNet. Everything is exposed so you can set up buttons for it.

If you require further assistance, please come to the support channel on my discord server. As a patreon with access to BodyNet Pro, you will also have access to the discord, too.
ekhm i want to support you if its usefull for me and for that i need to know if it is.


so please answer me:

situation is: i have some var with animation perform by its scene Look. and as i do not want always load that scene i save animation. then i work on my Looks in other/new scene then load that animation. (and ofthen anim is fukc..ed up couse probably of that dirffreneces between my Look and Look from orginal animation scene.

so correct me what ishould do with your plugin (proversion):
1) Open orginal animation (timeline) scene
2) save Look (should i use look or apearence or morph preset its unclear for me) for that animation (or maybe i sshould add your plugin and save initial look with it?
3) open scene with my Look
4) load your plugin to that look
5) in plugin somewhow load that initial look (how? there is no screen /movie how to load saved look in your overview for pro version and i do not see button for loading inital look on your screen/movie in overview )
6) run some button in plugin ( which >> no screen of it in overview) to update my Look with initial crated in point 2)
7) load time line animation and have fun with fluent animation of my "updated" look (thats my end purpouse)

sorry for inovniniece but your overview is totaly not clear for me(.
 
Last edited:
ekhm i want to support you if its usefull for me and for that i need to know if it is.


so please answer me:

situation is: i have some var with animation perform by its scene Look. and as i do not want always load that scene i save animation. then i work on my Looks in other/new scene then load that animation. (and ofthen anim is fukc..ed up couse probably of that dirffreneces between my Look and Look from orginal animation scene.

so correct me what ishould do with your plugin (proversion):
1) Open orginal animation (timeline) scene
2) save Look (should i use look or apearence or morph preset its unclear for me) for that animation (or maybe i sshould add your plugin and save initial look with it?
3) open scene with my Look
4) load your plugin to that look
5) in plugin somewhow load that initial look (how? there is no screen /movie how to load saved look in your overview for pro version and i do not see button for loading inital look on your screen/movie in overview )
6) run some button in plugin ( which >> no screen of it in overview) to update my Look with initial crated in point 2)
7) load time line animation and have fun with fluent animation of my "updated" look (thats my end purpouse)

sorry for inovniniece but your overview is totaly not clear for me(.
Ah, your workflow is the opposite of what bodynet's process is intended for. It's supported but not as convenient. In short, you won't get much benefit out of the person plugin in its' current form. It always assumes the look you want to match is present on the female the moment the plugin loads.

If you do not want to change your workflow to load looks into the scene containing the animation, you have two options.
a.) Prepare morph presets using bodynet's scene:
  1. Save morph or appearance presets for both the scene's look and your custom one.
  2. Use the bodynet scene to create an aligned morph/appearance preset.
  3. Load the aligned preset when loading the timeline animation.
b.) Temporarily load the original look as a reference for the person plugin.
  1. Save the original morph or appearance preset.
  2. Load your custom scene.
  3. Save your morph/appearance preset temporarily.
  4. Make sure bodynet isn't active on the female or its' trigger "apply on appearance change" isn't enabled.
  5. Load the original preset.
  6. Add bodynet to the female or reload it if it's already there.
  7. Load your temporary preset.
  8. Run bodynet.
I could add features to support your workflow if you're willing to wait.
In a future update, bodynet's person plugin would gain actions to:
  1. Save the current skeleton.
  2. Load a skeleton and match the current look to it.
  3. Same as above but load the skeleton from an appearance or morph preset.
Would that work for you?
 
is there a version of this plugin for male body? I aways have some problems changing males to futa.
 
Ah, your workflow is the opposite of what bodynet's process is intended for. It's supported but not as convenient. In short, you won't get much benefit out of the person plugin in its' current form. It always assumes the look you want to match is present on the female the moment the plugin loads.

If you do not want to change your workflow to load looks into the scene containing the animation, you have two options.
a.) Prepare morph presets using bodynet's scene:
  1. Save morph or appearance presets for both the scene's look and your custom one.
  2. Use the bodynet scene to create an aligned morph/appearance preset.
  3. Load the aligned preset when loading the timeline animation.
b.) Temporarily load the original look as a reference for the person plugin.
  1. Save the original morph or appearance preset.
  2. Load your custom scene.
  3. Save your morph/appearance preset temporarily.
  4. Make sure bodynet isn't active on the female or its' trigger "apply on appearance change" isn't enabled.
  5. Load the original preset.
  6. Add bodynet to the female or reload it if it's already there.
  7. Load your temporary preset.
  8. Run bodynet.
I could add features to support your workflow if you're willing to wait.
In a future update, bodynet's person plugin would gain actions to:
  1. Save the current skeleton.
  2. Load a skeleton and match the current look to it.
  3. Same as above but load the skeleton from an appearance or morph preset.
Would that work for you?

1) Oh! Thanks for the clarification - so when I'm running a scene, reloading the person-atom version of the plugin will 'reset' the plugin to assume that the current look (look_current) is the original? That's good to know - I work iteratively on scenes I like, so very often, I've made edits I don't want to revert, but I no longer have the original look in the scene. Of course, I could load the original look, save the scene, and then reload the scene so that BodyNet is load onto the female again and is 'reset' to the original look - but that's tedious.

So you're saying that instead, I could load the original look into my modified scene, reload BodyNet (point it to correct network again etc), and then I'm good to go?

That's nice!

...
In a future update, bodynet's person plugin would gain actions to:
  1. Save the current skeleton.
  2. Load a skeleton and match the current look to it.
  3. Same as above but load the skeleton from an appearance or morph preset.
Would that work for you?

Oh, that would make my life so much easier! (And I like the idea of working with skeletons rather than morph/appearance presets!)

May I suggest some more features?
1) Ability to load the person-atom version of the plugin onto a person atom within a running scene, without having to fiddle with the damn session plugin - or, in other words: Make the session plugin an add-on, not a prerequisite!
2) And maybe use more than the one variable ("creatorname") for the plugin to determine which network path to autoload - at least add "packagename"? No, creators do NOT always use the same looks. :p
 
Last edited:
1) Oh! Thanks for the clarification - so when I'm running a scene, reloading the person-atom version of the plugin will 'reset' the plugin to assume that the current look (look_current) is the original? That's good to know - I work iteratively on scenes I like, so very often, I've made edits I don't want to revert, but I no longer have the original look in the scene. Of course, I could load the original look, save the scene, and then reload the scene so that BodyNet is load onto the female again and is 'reset' to the original look - but that's tedious.

So you're saying that instead, I could load the original look into my modified scene, reload BodyNet (point it to correct network again etc), and then I'm good to go?

That's nice!



Oh, that would make my life so much easier! (And I like the idea of working with skeletons rather than morph/appearance presets!)

May I suggest some more features?
1) Ability to load the person-atom version of the plugin onto a person atom within a running scene, without having to fiddle with the damn session plugin - or, in other words: Make the session plugin an add-on, not a prerequisite!
2) And maybe use more than the one variable ("creatorname") for the plugin to determine which network path to autoload - at least add "packagename"? No, creators do NOT always use the same looks. :p
Yes, reloading the plugin works that way.
By the way, you do not have to use the session plugin, at all. It's just there to automate adding the person plugin but you can add that manually too, of course.

Obviously, creators don't stick to a single look. In many cases they tend to use similar bone structures, though. E.g. C&G/Pog, Zen or Ispinox.
I don't really see a point in saving defaults for a single var package. Usually, they don't contain more than one scene and you can simply save BodyNet's settings with the scene.
Ideally, you'd have default settings per look. However, there are too many pitfalls. For one, it's hardly possible to identify looks or spot any modifications a scene author might have made.
 
Yes, reloading the plugin works that way.
By the way, you do not have to use the session plugin, at all. It's just there to automate adding the person plugin but you can add that manually too, of course.

Whoops! Sorry! For some reason, I assumed you needed the session plugin. Really sloppy of me, my apologies!
And that's great!
Obviously, creators don't stick to a single look. In many cases they tend to use similar bone structures, though. E.g. C&G/Pog, Zen or Ispinox.

Ok, those are terrible examples - and I can show you, in detail, why this is. For starters, Ispinox is pretty much the poster boy for "not using models with the same bone structure twice if he can help it". This is a counter-example. I can point you to five or so scenes that should remove any doubt in your mind. Or you simply believe me.

But first, I'd like to understand what your vision for that "auto-select network by creator name" feature is? I always reckoned it's supposed to make saving the scene to local superfluous? Which would be awesome - but you appear to have something different in mind?

And secondly, I'd like to understand why you think that generalizing the "autos select networks" feature to individual scenes would have so many "pitfalls"? I don't think so - at least I don't see it from your.

I don't really see a point in saving defaults for a single var package. Usually, they don't contain more than one scene and you can simply save BodyNet's settings with the scene.

Yeah, the point would be to not have to save a local copy of a scene AT ALL (except in rare edge cases) - the goal would be that a user can open a scene contained in a .var, open BN's GUI, check "change on loading preset", select a network path, press a button that makes BN write a little something to a little file (see below), and the next time he opens that scene (in the .var), BN has the correct network for that look auto-selected, and all he needs to do is load his favorite look. EasyPeasy.

There's good reasons for saving some stuff to local. Saving a honking big scene file to disk - along with all those dependencies tied to it - just for a stupid network path is not a good reason. That way bloat and clutter lie.

Ideally, you'd have default settings per look. However, there are too many pitfalls. For one, it's hardly possible to identify looks or spot any modifications a scene author might have made.

Ok, I'm wondering if I'm misunderstanding your point, or whether we're having totally different workflow ideas - but at face value, I don't see those "pitfalls"? Every scene has a unique ID - it's full path. Meaning the var's name (in the format "creatorname.packagename.version.var") plus the scene's file's path within the var:
"creatorname.packagename.version:/Saves/scene/Whatever/Glorious_Scene_With_WImminz_in_it.json" - that's a unique identifier. In fact, it's exactly what VaM uses as UIDs for resources like morphs - the following is from a scene I saved to local disk:


{
"uid" : "TBD.BodyNet_Resources.2:/Custom/Atom/Person/Morphs/female/Morphs Mega Pack/Thigh Length.vmi",
"name" : "Thigh Length",
"value" : "0.03840197"
},

So how about the following: Whenever BodyNet is loaded, it asks VaM "Yo! What scene am I in?". Then it goes to "Vam_Root\Saves\PluginData\TBD\BodyNet\PersonPlugin\", where it looks for a file "creatorname.packagename.version.TBDcachejson". If the file doesn't exist, it keeps the parameters it had on load. If the file exists, it opens and parses it. The file "creatorname.packagename.version.TBDcachejson" is a json with the following structure:

(this is an example of a var with two scenes, and two females in the second scene - each is uniquely identified by its scene ID (and person at ID, if necessary). All of those are "serialized", ie they're JSONstorable, and hence, can be read both from the scene file and at runtime):
{
"creatorname.packagename.version:/Saves/scene/Creatorname/Glorious_Scene_With_WImminz_in_it.json" : {
{
"Person_id" : "Person",
"id" : "plugin#6_TBD.BodyNet.BodyNet",
"Draw skeletons" : "true",
"Refinement runs" : "1",
"Head Big Limit Multiplier" : "2",
"Network path" : "Saves/PluginData/TBD/BodyNet/Networks/Custom/Creatorname/Glorious_Scene AlanaTall XYZ.json"
}
},
{

...

},
}
"creatorname.packagename.version:/Saves/scene/Creatorname/More_Wimminfolk.json" : {
{
"Person_id" : "Lil_Hottie",
"id" : "plugin#4_TBD.BodyNet.BodyNet",
"Draw skeletons" : "true",
"Refinement runs" : "3",
"Head Big Limit Multiplier" : "2",
"Network path" : "Saves/PluginData/TBD/BodyNet/Networks/Custom/creatorname/More_Wimminfolk_Gina_HooHaa.json"

},
{
"Person_id" : "Gudrun",
"id" : "plugin#4_TBD.BodyNet.BodyNet",
"Draw skeletons" : "true",
"Refinement runs" : "2",
"Head Big Limit Multiplier" : "2",
"Network path" : "Saves/PluginData/TBD/BodyNet/Networks/Custom/creatorname/More_Wimminfolk Gudrun.json"

}
}
}

It knows it's looking for the first scene, so it grabs the respective parameters, goes to "Saves/PluginData/TBD/BodyNet/Networks/Custom/CuddleMocap/", and grabs the network "AlanaTall XYZ.json".

And how are those files created, and their network paths filled in? Well, by user-action, same as now - if the user hits "save scene settings", a file like the above example is created, and the current settings (including network path) are filled in. If the user doesn't act, then the general default settings are loaded. If the user changes the settings, but doesn't save them, then those settings persist only until the scene ends. And if the user makes a mistake, shit goes wrong.

IDK, is this too naive? Maybe there are bugs in it - but I don't see unsurmountable hurdles? The required information is either contained in various files - the scene json, for example - or VaM knows it, or you let the user provide it, and then you write it to a little json file. No muss, little fuss and no honking big pointless local files.

P.S.: The inspiration for the "*.TBDcachejson" files are VaM's cache files - they have the same name as the var they're describing, and internally, they
're just json nodes corresponding to the files in the var.
 
Last edited:
And secondly, I'd like to understand why you think that generalizing the "autos select networks" feature to individual scenes would have so many "pitfalls"? I don't think so - at least I don't see it from your.
I was talking about tying the preset to the look itself instead the scene, creator or var. The issue with that is there's nothing identifying a look except for the unique combination of morph values.

Your proposal isn't ideal because the user would still have to save a new preset for each and every new scene, even if they all use the same look. On top of that, the only benefit, as far as I can tell, is that you'd no longer have to save a modified scene, assuming you didn't make any other changes at all, in which case you'd have to save the scene regardless.
Personally, I use creator defaults (and the session plugin for that matter) as a quick start to save some time when I edit a new scene. I never get around saving a modified copy because I set up optimized TSC calibration settings, make performance improvements when needed, change or simplify environments and touch up animation if necessary.

Either way, the default network should be fine for almost all cases. You shouldn't have to select a specialized network unless either source or target look deviate vastly from vam's default bone structure. If your experience differs, I'd like to dig into some examples.

If your concern with saving scenes is only their file size, may I suggest you try enabling folder compression in windows? The scene files are highly compressible and it saves you a bunch of space.

Untitled.png
 
Back
Top Bottom