Jump to content

Better Inflated Bellies - Inflation NIO Bodymorphs


feral

Recommended Posts

Patch for Beeing Female?

 

Alright, once again let me know if this works, because once again I didn't even launch the game.

 

You have to reset the mod and choose "Visual Scaling Type #5" in the MCM menu. I didn't add translations so it will show up as dollar signs.

Max of the belly and breasts should be 1.0 or so.

 

EDIT: New file below.

Link to comment

 

Patch for Beeing Female?

 

Alright, once again let me know if this works, because once again I didn't even launch the game.

 

You have to reset the mod and choose "Visual Scaling Type #5" in the MCM menu. I didn't add translations so it will show up as dollar signs.

Max of the belly and breasts should be 1.0 or so.

 

 

I need sexlab inflation framework for this to work?

 

Link to comment

 

 

Patch for Beeing Female?

 

Alright, once again let me know if this works, because once again I didn't even launch the game.

 

You have to reset the mod and choose "Visual Scaling Type #5" in the MCM menu. I didn't add translations so it will show up as dollar signs.

Max of the belly and breasts should be 1.0 or so.

 

 

I need sexlab inflation framework for this to work?

 

You only need what BeeingFemale needs. Check its mod page.

EDIT: Well and RaceMenu with a body with morphs.

 

Attached a new version, I forgot a line of code but I don't know if it mattered.

BeeingFemale 2.7.2 - NiO Body Morphs 2.7z

Link to comment

Could you by any chance do Soulgem oven too? Also maybe you could tell us exactly how to make a mod use this scaling (in a tutorial kinda way) for future reference, so any mod that comes can use it, or we can convert it ourselves?

 

All you have to do is replace something like

NiOverride.AddNodeTransformScale(actor, false, true, "NPC Belly", "UniqueKeyOfTheMod", bellyScale)

with

NiOverride.SetBodyMorph(actor, "PregnancyBelly", "UniqueKeyOfTheMod", bellyScale)
NiOverride.UpdateModelWeight(actor)

Of course you have to take in mind how the rest of the script works, adjust default values or some math.

Link to comment

 

It work aboslutely fine, produces beautiful bellies, BUT, with both fill her up and egg factory, it quite literally breaks my characters dick (https://gyazo.com/580e592e9edaffe3124c80fdcf4536d2), but that only occurs when I use a schlong which "sticks" to the belly, supposedly to enable belly scaling, so I can use a version without that, it just clips a bit, but worth for that pretty belly, thank you very much for this mod!<3

 

Glad it works. Yeah maybe the schlong expects the belly to be scaled with bones instead of morphs.

 

 

I've noticed that sometimes with the body morph that it will scale other parts of the body too. In bodyslide with Caliente's HDT body the breasts will scale slightly with the pregnant belly morph at the upper end of the scale. It's hardly noticeable unless you watch for it specifically. That might be the case for their penis model.

Link to comment

Hey feral, as of right now, those patches are NOT compatible with SexLab Inflation Framework, just wanted to let you know :)

I'm trying to incorporate those changes into my framework as optional scaling, but I'm having some issues right now.

 

All you have to do is replace something like

NiOverride.AddNodeTransformScale(actor, false, true, "NPC Belly", "UniqueKeyOfTheMod", bellyScale)
with

NiOverride.SetBodyMorph(actor, "PregnancyBelly", "UniqueKeyOfTheMod", bellyScale)
NiOverride.UpdateModelWeight(actor)
Of course you have to take in mind how the rest of the script works, adjust default values or some math.

 

I did that, but I must be doing something wrong, as the following video shows:

Link to comment

Hey feral, as of right now, those patches are NOT compatible with SexLab Inflation Framework, just wanted to let you know :)

I'm trying to incorporate those changes into my framework as optional scaling, but I'm having some issues right now.

 

All you have to do is replace something like

NiOverride.AddNodeTransformScale(actor, false, true, "NPC Belly", "UniqueKeyOfTheMod", bellyScale)
with

NiOverride.SetBodyMorph(actor, "PregnancyBelly", "UniqueKeyOfTheMod", bellyScale)
NiOverride.UpdateModelWeight(actor)
Of course you have to take in mind how the rest of the script works, adjust default values or some math.

 

I did that, but I must be doing something wrong.

 

I'm assuming the math is wrong then.

While node scaling is "off" at a value of 1.0 (1.0 * 1.0 = 1.0), morphs are off at a value of 0.0 and should be maxed at a value of 1.0.

 

So, your node scale could be going from 1.0 to 10.0, but the morph should be going from 0.0 to 1.0. Did you check the "SetMorphValue" function I added to all the scripts I uploaded above?

Link to comment

I'm assuming the math is wrong then.

While node scaling is "off" at a value of 1.0 (1.0 * 1.0 = 1.0), morphs are off at a value of 0.0 and should be maxed at a value of 1.0.

 

So, your node scale could be going from 1.0 to 10.0, but the morph should be going from 0.0 to 1.0. Did you check the "SetMorphValue" function I added to all the scripts I uploaded above?

Yes, I have taken a look at your functions, but I'm not quite sure how you are calculating the values.

 

My code looks like this at the moment, assuming the values go from 0.0000001 to 100.0: (0.0000001 as safety, that nodes do not vanish)

 

 

string function SetMorphName(String node) global
	if (node == "NPC Belly")
		return "PregnancyBelly"
	elseIf (node == "NPC L Breast" || node == "NPC R Breast")
		return "Breasts"
	endIf
	return ""
endFunction

bool function UseBodymorphs(String morphName) global
	return morphName != "" && SLIF_Config.GetInt("use_bodymorphs_instead") as bool
endFunction

function SetNodeTransformScale(Actor kActor, String node, String modName, float value, bool firstPerson, bool isFemale) global
	String morphName = SetMorphName(node)
	if (UseBodymorphs(morphName))
		If value != SLIF_Util.AbsoluteZero()
			NiOverride.SetBodyMorph(kActor, morphName, modName, value)
		Else
			NiOverride.ClearBodyMorph(kActor, morphName, modName)
		EndIf
		If (kActor.Is3DLoaded())
			NiOverride.UpdateModelWeight(kActor)
		EndIf
		If (NiOverride.HasNodeTransformScale(kActor, firstPerson, isFemale, node, modName))
			NiOverride.RemoveNodeTransformScale(kActor, firstPerson, isFemale, node, modName)
			If (kActor.Is3DLoaded())
				NiOverride.UpdateNodeTransform(kActor, firstPerson, isFemale, node)
			EndIf
		endIf
	else
		If (NetImmerse.HasNode(kActor, node, firstPerson))
			If value != 1.0
				NiOverride.AddNodeTransformScale(kActor, firstPerson, isFemale, node, modName, value)
			Else
				NiOverride.RemoveNodeTransformScale(kActor, firstPerson, isFemale, node, modName)
			Endif
			If (kActor.Is3DLoaded())
				NiOverride.UpdateNodeTransform(kActor, firstPerson, isFemale, node)
			EndIf
			If (morphName != "")
				If (NiOverride.HasBodyMorph(kActor, morphName, modName))
					NiOverride.ClearBodyMorph(kActor, morphName, modName)
					If (kActor.Is3DLoaded())
						NiOverride.UpdateModelWeight(kActor)
					EndIf
				EndIf
			EndIf
		Endif
	Endif
endFunction

 

I tried dividing the value by 100, but now it's barely scaling at all.

Link to comment

 

I'm assuming the math is wrong then.

While node scaling is "off" at a value of 1.0 (1.0 * 1.0 = 1.0), morphs are off at a value of 0.0 and should be maxed at a value of 1.0.

 

So, your node scale could be going from 1.0 to 10.0, but the morph should be going from 0.0 to 1.0. Did you check the "SetMorphValue" function I added to all the scripts I uploaded above?

Yes, I have taken a look at your functions, but I'm not quite sure how you are calculating the values.

 

My code looks like this at the moment, assuming the values go from 0.0000001 to 100.0: (0.0000001 as safety, that nodes do not vanish)

 

 

string function SetMorphName(String node) global
	if (node == "NPC Belly")
		return "PregnancyBelly"
	elseIf (node == "NPC L Breast" || node == "NPC R Breast")
		return "Breasts"
	endIf
	return ""
endFunction

bool function UseBodymorphs(String morphName) global
	return morphName != "" && SLIF_Config.GetInt("use_bodymorphs_instead") as bool
endFunction

function SetNodeTransformScale(Actor kActor, String node, String modName, float value, bool firstPerson, bool isFemale) global
	String morphName = SetMorphName(node)
	if (UseBodymorphs(morphName))
		If value != SLIF_Util.AbsoluteZero()
			NiOverride.SetBodyMorph(kActor, morphName, modName, value)
		Else
			NiOverride.ClearBodyMorph(kActor, morphName, modName)
		EndIf
		If (kActor.Is3DLoaded())
			NiOverride.UpdateModelWeight(kActor)
		EndIf
		If (NiOverride.HasNodeTransformScale(kActor, firstPerson, isFemale, node, modName))
			NiOverride.RemoveNodeTransformScale(kActor, firstPerson, isFemale, node, modName)
			If (kActor.Is3DLoaded())
				NiOverride.UpdateNodeTransform(kActor, firstPerson, isFemale, node)
			EndIf
		endIf
	else
		If (NetImmerse.HasNode(kActor, node, firstPerson))
			If value != 1.0
				NiOverride.AddNodeTransformScale(kActor, firstPerson, isFemale, node, modName, value)
			Else
				NiOverride.RemoveNodeTransformScale(kActor, firstPerson, isFemale, node, modName)
			Endif
			If (kActor.Is3DLoaded())
				NiOverride.UpdateNodeTransform(kActor, firstPerson, isFemale, node)
			EndIf
			If (morphName != "")
				If (NiOverride.HasBodyMorph(kActor, morphName, modName))
					NiOverride.ClearBodyMorph(kActor, morphName, modName)
					If (kActor.Is3DLoaded())
						NiOverride.UpdateModelWeight(kActor)
					EndIf
				EndIf
			EndIf
		Endif
	Endif
endFunction

 

I tried dividing the value by 100, but now it's barely scaling at all.

 

That part of the script looks correct to me. The issue must be where you call SetNodeTransformScale() then, not in the function itself.

Can you show me the entire script (or link me where I can download it)?

Link to comment

That part of the script looks correct to me. The issue must be where you call SetNodeTransformScale() then, not in the function itself.

Can you show me the entire script (or link me where I can download it)?

Well, it's actually three scripts:

 

SLIF_Scale provides the functions for scaling

SLIF_Util does most of the Math and calls the SLIF_Scale functions

SLIF_Main calls the functions from SLIF_Util

 

They are uploaded nowhere, since I'm still working on them.

 

SLIF_Math.SetBounds() if needed:

float function SetBounds(float value, float minimum, float maximum) global
	float tempMin = MinFloat(minimum, maximum)
	float tempMax = MaxFloat(minimum, maximum)
	if (value < tempMin)
		return tempMin
	endIf
	if (value > tempMax)
		return tempMax
	endIf
	return value
endFunction

Source.zip

Link to comment

 

That part of the script looks correct to me. The issue must be where you call SetNodeTransformScale() then, not in the function itself.

Can you show me the entire script (or link me where I can download it)?

Well, it's actually three scripts:

 

SLIF_Scale provides the functions for scaling

SLIF_Util does most of the Math and calls the SLIF_Scale functions

SLIF_Main calls the functions from SLIF_Util

 

They are uploaded nowhere, since I'm still working on them.

 

 

AbsoluteZero() needs to be 0.0 for morphs, not 0.0000001 (just use 0.0 instead of AbsoluteZero() in the morphs part).

SLIF_Util.psc:607 needs to be a value of 0.0 instead of 1.0 when morphs are enabled.

 

"value = SLIF_Math.SetBounds(value, AbsoluteZero(), 100.0)"

Needs to be 0.0 when morphs are enabled, no AbsoluteZero().

 

"StorageUtil.GetFloatValue(kActor, "All Mods" + sKey, 1.0)"

Needs to be 0.0 when morphs are enabled, not 1.0.

 

Not sure why the breasts would shrink infinitely though.

Link to comment

AbsoluteZero() needs to be 0.0 for morphs, not 0.0000001 (just use 0.0 instead of AbsoluteZero() in the morphs part).

SLIF_Util.psc:607 needs to be a value of 0.0 instead of 1.0 when morphs are enabled.

 

"value = SLIF_Math.SetBounds(value, AbsoluteZero(), 100.0)"

Needs to be 0.0 when morphs are enabled, no AbsoluteZero().

 

"StorageUtil.GetFloatValue(kActor, "All Mods" + sKey, 1.0)"

Needs to be 0.0 when morphs are enabled, not 1.0.

 

Not sure why the breasts would shrink infinitely though.

Well, the 0.0000001 is a safeguard for NiOverride, to avoid scales vanishing forever, but I guess I could change is for morphs.

will change the minimum for these cases though.

The belly seems to be working fine, the breasts are shrinking instead of growing.

Link to comment

 

AbsoluteZero() needs to be 0.0 for morphs, not 0.0000001 (just use 0.0 instead of AbsoluteZero() in the morphs part).

SLIF_Util.psc:607 needs to be a value of 0.0 instead of 1.0 when morphs are enabled.

 

"value = SLIF_Math.SetBounds(value, AbsoluteZero(), 100.0)"

Needs to be 0.0 when morphs are enabled, no AbsoluteZero().

 

"StorageUtil.GetFloatValue(kActor, "All Mods" + sKey, 1.0)"

Needs to be 0.0 when morphs are enabled, not 1.0.

 

Not sure why the breasts would shrink infinitely though.

Well, the 0.0000001 is a safeguard for NiOverride, to avoid scales vanishing forever, but I guess I could change is for morphs.

will change the minimum for these cases though.

The belly seems to be working fine, the breasts are shrinking instead of growing.

 

Maybe it has something to do with the counter-scaling of the secondary breast bones (TBBP) ?

Link to comment

Could it be possible that there is a conflict somewhere in the script, since the SLIF currently works by scaling nodes, and each breast having two bones; could that be part of the problem somehow?

 

Also I made corrections to the first page.

Link to comment

Could it be possible that there is a conflict somewhere in the script, since the SLIF currently works by scaling nodes, and each breast having two bones; could that be part of the problem somehow?

 

Also I made corrections to the first page.

Nah, I don't think that makes a difference, since it would do the same thing, just twice.

 

SLIF is still stated as a requirement on the front page.

Link to comment

 

Could it be possible that there is a conflict somewhere in the script, since the SLIF currently works by scaling nodes, and each breast having two bones; could that be part of the problem somehow?

 

Also I made corrections to the first page.

Nah, I don't think that makes a difference, since it would do the same thing, just twice.

 

SLIF is still stated as a requirement on the front page.

 

 

I forgot about that, removed it.

 

Also, I'm sitting here converting an outfit in outfit studio for myself, and I notice that the "breasts" slider shrinks the breasts.

Link to comment

 

I forgot about that, removed it.

 

Also, I'm sitting here converting an outfit in outfit studio for myself, and I notice that the "breasts" slider shrinks the breasts.

It's doing the opposite for me :D

 

In BodySlide, the slider is inverted. This isn't the case for the morphs file.

So in BodySlide, 0% is actually a morph of 1.0, and 100% is actually a morph value of 0.0.

Link to comment

 

In BodySlide, the slider is inverted. This isn't the case for the morphs file.

So in BodySlide, 0% is actually a morph of 1.0, and 100% is actually a morph value of 0.0.

Well, for some reason, 0% is small and 100% is big for me. (like it should be :3)

 

No, that's not like it should be. It means the COS Body is set up the wrong way and causes your issue with the script, because the morph goes the wrong way.

Unless the morph still goes the right way but the sliders are set up differently.

 

Try it again with the normal CBBE Body HDT and see if it works that way. If it works with CBBE, but not COS, then COS is at fault.

 

EDIT: Now you've confused me. Of course 100% being larger than 0% is correct in BodySlide, but it only appears that way because the slider is inverted. So it depends on if the slider is inverted for COS or not, I'm assuming it's correct.

 

So yes, a morph of 1.0 makes the breasts smaller... however negative values aren't supported (-1.0), so you'll have to try different morphs such as "BreastsSH".

As I said I didn't test the scripts above myself, so those probably have the same issue for the breasts.

Link to comment

No, that's not like it should be. It means the COS Body is set up the wrong way and causes your issue with the script, because the morph goes the wrong way.

Unless the morph still goes the right way but the sliders are set up differently.

 

Try it again with the normal CBBE Body HDT and see if it works that way. If it works with CBBE, but not COS, then COS is at fault.

 

EDIT: Now you've confused me. Of course 100% being larger than 0% is correct in BodySlide, but it only appears that way because the slider is inverted. So it depends on if the slider is inverted for COS or not, I'm assuming it's correct.

 

So yes, a morph of 1.0 makes the breasts smaller... however negative values aren't supported (-1.0), so you'll have to try different morphs such as "BreastsSH".

As I said I didn't test the scripts above myself, so those probably have the same issue for the breasts.

Hmm, well I have uploaded an alpha version, with the new feature enabled, so maybe that will get some results:

SexLab Inflation Framework 0.9.8 alpha

Link to comment

 

No, that's not like it should be. It means the COS Body is set up the wrong way and causes your issue with the script, because the morph goes the wrong way.

Unless the morph still goes the right way but the sliders are set up differently.

 

Try it again with the normal CBBE Body HDT and see if it works that way. If it works with CBBE, but not COS, then COS is at fault.

 

EDIT: Now you've confused me. Of course 100% being larger than 0% is correct in BodySlide, but it only appears that way because the slider is inverted. So it depends on if the slider is inverted for COS or not, I'm assuming it's correct.

 

So yes, a morph of 1.0 makes the breasts smaller... however negative values aren't supported (-1.0), so you'll have to try different morphs such as "BreastsSH".

As I said I didn't test the scripts above myself, so those probably have the same issue for the breasts.

Hmm, well I have uploaded an alpha version, with the new feature enabled, so maybe that will get some results:

SexLab Inflation Framework 0.9.8 alpha

 

If you want to go in-depth, you can add a morph selection to the MCM menu, where you can select the morph that will be used for the breast scaling and the morph that will be used for the belly scaling (out of all BodySlide sliders that would make sense for it).

Link to comment

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use