Jump to content

SexLab Disparity: Morphs, Nodes and Body Shape Changes



From time to time, people ask about the morph handling feature in SexLab Disparity.


As the SexLab Disparity (SLD) main page is quite full already, I thought I'd put some supplementary information here.



Let's consider how morphs work vs node-values...


SLD reads node values from the skeleton using the NiO libraries. Node scale changes are used by some mods to crudely inflate the breasts, butt, or belly.

They were used by most mods for a long time. They don't look good if you put in large scale values, but for small values they look ok.


SLD does not write to any node values. It does not change the shape of your character. People ask for it, but it would be really confusing.

If I add it, it will be off by default (like everything in SLD), and I'd advise most players to stay away from it because of the potential to create feedback loops and unintended results.


SLD doesn't write to any morphs either, to be super-clear.



Morphs are animation files that change the shape of the character skin and operate at the vertex level. This allows highly customized results.

Bodyslide makes morphs for you (assuming you let it) that will allow your character to change shape.

The amount of each morph applied is set by a slider in Bodyslide (or Racemenu).


These can also be set in code by NiOverride, which is what mods with better shape-changing do. FM, MME, etc have built-in morphing.

SLIF also allows morphing. SLIF allows morphing from node changes too. Confused? Don't use SLIF then. It's not really necessary; the UI is confusing and has little to no tooltips and zero help given. SLIF needs a user-guide, and articles like this to explain it. It does not appear to have them. If there's information in the forums, it's buried in among a lot of other noise. It was because things on forums get lost that I put this information here in the first place.



SLD's breast/butt and belly modifier sets are driven by the node values for breasts, butt and belly, respectively.

The node value is the input


A value of 1.0 is normal, and anything else is ... not ... it means it's been changed by something.


Breast node values typically range up to 4.0 (for very large), Butt values up to 2.0 (after which it goes very wrong looking), and Belly values up to 6.0 or even 12.0, though it looks odd past about 4.0 using simple node scaling. Large breast node values create the unattractive "torpedo breast" look, though physics goes some way to making that go away by inducing sag.


With morphs, there are ways to make boobs huge without it looking like a fembot from Mars Attacks, and you can use the Pregnancy Belly morph to create a decent looking large belly, or modify the butt in various ways that do not look like the character has a nasty tumor.



SLD uses node values to figure what modifiers to apply to your character stats (not appearance).

So, how can it work with morphs?


This is what the "fake node values" are about...


The Morphs page allows you to generate a "made up" synthetic node value from the morph state, that is used to adjust or replace the actual node value that is input into the Breast/Butt/Belly pages. That is what "multiply" or "replace" mode means. It's how the node value is replaced by the morph value.



If you scroll down to the bottom of he SLD morphs page, it will show you the currently set values of all the morphs it cares about - the values it has read from the NiO data.

You can use these values to determine what input range, offset and weight to use to get the node output value you want.



The values at the bottom of the morph page will show you the value in each supported morph.

From this you can figure out which morph sliders SLIF, or MME, or whatever morphing app you have is adjusting, and in what range.


Usually, they only touch a couple of the sliders.


You can then set SLD's morph mappings up appropriately. You don't need to look at all the morphs unless you have a reason.



Fertility Mode adjusts two morph sliders. I forget which just now. The point is, it adjusts those two sliders to the exact same values. So you can see how much inflation FM is adding by just by looking at either one of those sliders. By mapping only one slider's range in SLD, weighted full, you can calculate a fake node size which you use as the input value to your modifiers.


If the app uses one slider, runs it to max, then starts raising another, you will need to weight both the sliders, and set the offset on the one that is ramped up second accordingly.



Let's say that FM changes BreastsSSH from 0.0 to 0.5 over the course of a pregnancy, you can use that value to drive your fake node value.

And let's say you think that scaling of the morph in FM looks approximately like going from a node value of 0.0 to 4.0


Then you set the weight of the BreastsSSH morph to max, the offset to 0 and  the overall scale to 8.0, so that a value of 0.5 will output 4.0

Then you set the mode to replace, because you have no mods that change nodes, only morphing mods (just FM in my example), so in this simple case, you don't have to combine the value from morphs with the value from nodes.

Then you setup your buff/debuff column to range from 0 to 4.0 with a scale of 100%, and dial in the values you like.


You can see the final value being used on the respective page for breasts/butt/belly.

Set your From and To values to work with the range that value takes, or that you care about modifying.



And for the morphs, say for breasts you decide to use a range of 0.0 to 4.0, where values less than 1.0 are tiny boobs.

You want to make your max morph slider produce an output of 4.0 ... that is the "fake node value".


It's not really a fake node value; it's never written to a node; it's just the input that SLD uses on the breasts page.





Following up some user questions on this...


Nazzzgul666 said:

If i got that right, neither me nor any (modern) mod should change nodes at all. Is that right?

I wouldn't say that exactly ... there are many nodes to change ... for example NiO High Heels ultimately applies a node modifier, just not a scale.

That's probably confusing.


To put is simply: for changing the look of your character the way Bodyslide does, morphs are usually best.


It you want longer arms or legs, you need to change a node, but if you do that will probably make all your SexLab animations look wrong; it's something you'd only do for screen-archery really.



The node values are the values in your skeleton, so by changing them, amputator can make your arm collapse entirely.

They are a blunt instrument for altering appearance.


They aren't exactly a "base", but your skeleton is pretty fundamental :) so you can think of them like that, and the analogy will work in most cases.

Node scaling will certainly impact breast size and change how your breast morphs look, for example, so thinking of it as a base there is reasonable.


  Nazzzgul666 said:

why would i need to generate a made up node value? For what reason would i want to use something else than my actual base values?

Because what SLD is trying to allow you to do is convert your character's appearance changes into stat changes.

Your boobs get bigger and your archery goes down.

Your boobs get smaller and your magicka does down.

You belly gets bigger and you have a chance to stumble.

... stuff like that ...


It's simple if you only have one mod changing morphs, but if you have several, you're (probably) trying to get a value that matches what you see.

Matching the visually observed size is the most obvious thing to do.


There's no rule says you have to do that. You could do something else; it's up to you, but I'd guess that's what most people would prefer.


It does that by using some arbitrary input value.


One value it can look at is a node value. For example the breast value that older pregnancy mods change (EC+ for example).


How else could it know? It could somehow figure it out from the morphs you have applied.



But because the Breasts modifier page for SLD was written in terms of the Breast node, and because the breast node DOES impact how your breasts look, the intended use of the morphs support is to alter the node value to make it better match a sort of scaled up or down value of the node.


e.g. If back in olden days EC+ node size 4.0 boobs were the limit, and you set your From and To range up to work with that, then you probably want to think of an input range for your breasts page in a similar range ... actually there is no obligation to do so ... but if we don't pin some things down it becomes impossible to explain what to do to those who don't completely understand it all yet.


So as an example, what we might want to do is get a value from 0 to 4.0 by transforming the morph values.

If we're dealing with a BreastSSH morph that ranges from 0 to 0.5, then we can see that scaling that by 8.0 will do that.


That value is the 'fake node value' ... it's just an input to the breasts page in SLD. That's all.

It has no impact on your visual breast size, or your skeleton, and no mod but SLD knows anything about it.

It is just the input to the Breasts modifiers page, and its current computed value will be shown to you there, on that page.

That only updates each update tick, and you can change how often that happens on the first page of the MCM.


Recommended Comments

There are no comments to display.

  • Create New...