Jump to content
XunAmarox

Team Busty

Recommended Posts

The following was originally posted by @tonicmole on Nov 26th:
 

The Busty mod that increases the characters bust through hex edits was first thought up by RustyXXL, implemented by PewPewNinja and then refined by me.  Basically it's simply altering the values of body parts in a Hex editor.  I started this thread in hopes that others might be able to further refine the mod beyond my skill level.  Currently it depends on the thin side of the body triangle.  The problem with this is that you can only make a busty toothpick.  I'll post the updated mod here and anyone can feel free to examine it and see if they find anything useful at making a more refined body mod. 
 
Link to original thread that this was started in:  http://www.loverslab.com/topic/55071-testing-meshes-and-other-info/
 
Original discription by PewPewNinja:
 
Just tried my hand on what RustyXXL wrote. Well if you make a plugin of the human race in tes4snip and look for the third entry of the RBreast_skin / LBreast_skin in a hexeditor you get "00 00 00 80 3F DA 20 5D 3F 6A 6D 37 3F 00 00 80 3F F1 3F AB 3F 9B AB 65 3F 00 00 80 3F 11 A3 63 3F 27 E1 87 3F "with the first
"00 00 00 80 3F DA 20 5D 3F 6A 6D 37 3F "being the thin body. ("00 00 80" divides the three bodytypes, 3f the "sliders")
The "slider" are "DA 20 5D" for the size and "6A 6D 37" for how much they "sack".
Proof: Pic with "DA 20 5D" increased to "ff ff ff" for the right Breast.
 
Below I've laid out a sample of the hex we are messing with.  00 00 80 separates values for Thin, Muscular, and fat, in that order....I think.  3F separates the data within a slider, but also works as a scale of some sort.  Problem is that changing it by only one number makes it freak out.....so probably not worth messing with.  3F to 40 in hex or 63 to 64 in normal numbers causes crazy scaling up.  The easiest way to find the body parts that we edit is by scrolling all the way to the bottom and start scrolling up until you start to see something like you see below.  The numbers in red are somewhat unknown.  It was believed they were some sort of translation data, like xyz.....but it appears that maybe not.  Anyways, anyone wants to take a crack at it, feel free.
 
00 00 00 80 3F DA 20 5D 3F 6A 6D 37  3F 00 00 80 3F F1 3F AB 3F 9B AB 65 3F 00 00 80 3F 11 A3 63 3F 27 E1 87 3F 
 
Update:  The 3f's represent width, height, and depth....aka xyz.  They appear to be scale, and not helpful for editing though.  Any change is too dramatic.
 
Update:  Making BIG breakthroughs.  
The Red highlighted numbers are translation, specifically  (side to side) (rotation) (up and down) 
As for the underlined numbers it appears to be similar but scale instead of translation (height) (width) (depth)
 
The big unknown is that all of these factors, even across body shapes, seem to affect each other in subtle ways.  No big deal and likely the nature of the beast.  
 
New esp is done.  There is a catch.  The changes are much smoother across all three body shapes.....however slightly smaller maximum bust.  Not sure why.  So 90% of the body sizes should see a much better shape and size, but thin has had a reduction.  
 
Okay.....some of above is correct, but some variables affect all 3 corners....Very weird.
 
Next UPDATE:  00 00 80 is not just a placeholder.  Though 00 00 seem to have no effect regardless of what you do to them 80 appears to be an scale.   I changed it to FF and it widened the chest quite a bit.  Curious.
 
Uploader is not working, but here's a link to V3 which is likely that final one.
 
http://www.nexusmods.com/fallout4/mods/2659/?tab=1&navtag=http%3A%2F%2Fwww.nexusmods.com%2Ffallout4%2Fajax%2Fmoddescription%2F%3Fid%3D2659%26preview%3D&pUp=1

 
This was a reply by @seet

 

Problem is that changing it by only one number makes it freak out.....so probably not worth messing with.  3F to 40 in hex or 63 to 64 in normal numbers causes crazy scaling up.

Just to make sure, you're aware 0000803f is floating point for 1.0 right? Changing the 3f to 40 multiplies it by 4, so if it indeed represents a floating point number, I'd expect it to cause "crazy scaling up."
 

00 00 80 3F DA 20 5D 3F 6A 6D 37  3F 00 00 80 3F F1 3F AB 3F 9B AB 65 3F 00 00 80 3F 11 A3 63 3F 27 E1 87 3F

These are definitely sets of 32 bit floats. The first float (00 00 80 3F), when set to 0.5, makes the breast narrow; when set to 4.0, the breast was greatly stretched towards the shoulder and skewed/distorted. The 2nd float (DA 20 5D 3F) is a scaling factor; in your mod you had it set to FF FF FF 3F = 1.999...  The 3rd float (6A 6D 37  3F) does seem to determine "sagginess" as decreasing the number to 0.5 did give noticeable lift.

 

The 4th float had no effect on my character. I would guess that since there are exactly 9 floats, and my character is entirely skinny, 3 correspond to each dimension on the body slider triangle.

 

 
A reply by @tonicmole
 
 

Interesting.  I knew nothing about hex a week ago.  I speculated they played off of each other.  I messed with 80 and it had some sort of effect but I forgot what it was.....however, am I right to assume that I could reduce 80 then increase 3f to 40.  Multiplying a smaller number?  I'm gonna go do it....

 
 
A reply by @dorkulon
 

If that's the case, using cdcc8c3f (i.e. "1.1") instead of 0000803f should produce more useful results. or 9a99993f for 1.2.

 
 
A reply by @tonicmole
 

Ehhh....nothing good.  Couldn't get 00 00 80 to have any effect to dampen changing 3F.  Worth a try.  I'm certainly open to anyone with more knowledge than me.  Though we assumed the three sections represented thin fat and muscular, it doesn't totally work like that.  They seem to work off of one another to some extent.  Don't know.  Haven't been able to improve on my last edit.  However there are more files just like this one that appear to do nothing when edited....very weird.  Some are only non repeating digits.   I bet there is a few hundred of these files.  Most a complete mystery to me.

 
 
A reply by @seet
 

Just use a floating point converter like this one: http://www.h-schmidt.net/FloatConverter/IEEE754.html
 
Careful though, you have to swap the order of the bytes since they have different endianness.

 
 
A reply by @notasquirrel
 

Many thanks to tonicmole for getting started with all of the crazy hex work!
 
I tinkered with this a bunch last night and have a bunch of info to share.  Sorry, giant post ahead.  I hope it's useful.
 
The numbers are 32-bit floating point, in Little Endian byte order.  That's why editing the 00 00 in 00 00 80 3F didn't seem to do anything, because you were changing 1.0 to 1.0000005 or something.  The first three bytes are a number, the fourth byte is sign and power of 2.  So FFFFFF3F is 2.000, 00FFFF3F is still 2.000, and 0000FF3F is 1.992.
 
Here are some Python functions you can run in an interactive shell to help convert back and forth more easily:

import struct

def tofl(x):
c = len(x) / 8
fstr = '<' + ('f' * c)
got = struct.unpack(fstr, x.decode('hex'))
return ['%0.3f'%x for x in got]


def toh(x):
return struct.pack('<f', float(x)).encode('hex')
You can paste hex directly from your hex editor to see what it is with 'tofl' (TO FLoat), or use 'toh' (TO Hex) to get the little-endian floating point hex representation of a number:
>>> tofl('0000803F3133333FC2CC4C3F0000803F777AB53F8712D43F0000803F0ADCD83FF9FFFB3F')
['1.000', '0.700', '0.800', '1.000', '1.418', '1.657', '1.000', '1.694', '1.969']

>>> toh(2.6)
'66662640'
Armed with that I was able to figure out what all of the numbers mean.  Each bone has nine 32-bit floats.  All of them are scale, none are translate.  (The one you call "sag" acts a bit like a translate, because the bone is far above where the actual skin points are.)
[NAME]       [padding] /------ Thin Morph ------\ /------ Musc.Morph ------\ /------ Hvy. Morph ------\
                       \ScaleX/ \ScaleY/ \ScaleZ/ \ScaleX/ \ScaleY/ \ScaleZ/ \ScaleX/ \ScaleY/ \ScaleZ/

RBreast_skin   _   _   0000803F 0622213F 606D373F 0000803F C6FB423F 8B65233F 0000803F CFF4633F DFA7A73F
Default:                1.000    0.629    0.717    1.000    0.762    0.638    1.000    0.890    1.310

LButtFat_skin  -   -   0000803F 2C33333F 2929453F 0000803F 1829B03F 8DCFB53F 0000803F B60DA23F 25F1C23F
Default:                1.000    0.700    0.770    1.000    1.376    1.420    1.000    1.266    1.523
The scale operates in the local coordinate system of the joint, not world coordinates.
 
Breast_skin:
ScaleX: Side-to-side, narrow/wide, "get sideboob from behind"
ScaleY: Fullness.  Pushes nipples out further from the chest.
ScaleZ: Gravity.  (You called it "Sag".)  Scales the breast vertically, about a point somewhere up in the shoulder / clavicle area.
 
ButtFat_skin:
ScaleX: Vertical stretch of the buttcheek.  Goes up the back and down the leg.
ScaleY: Fullness.  Higher numbers cause more "butt implant" effect.  This is what caused the "poke your eye out" buttcheeks on full Thin mode.
ScaleZ: Side-to-side, "Baby Got Back".
 
Unfortunately pushing any of these too far reveals that the people who painted weights on this mesh were sloppier than any work I'd tolerate from myself.  There are jaggies caused by weights in "smooth" areas that never got smoothed by the artist.  The default motions and morphs don't tend to push things far enough to see them, but they start showing up once you start trying to get really curvy.
 
(edit): Also, I noticed if you use really large numbers, the morph slider will stop working for that bone when you go too far in that direction.  So if you tried setting the LBreast_skin "Thin" scale to 15.0, that number will work for a little bit when the dot is close to the center of the triangle, but when you move the dot too far toward Thin the skin affected by those bones will "snap" back to some default scale.  The same happens when setting bones to 0.0.  (I was using those numbers to figure out what each number did.)
 
Part of the confusion with the breast sizes is that there are four size specs working together, not three.  There is a base mesh that I think is probably defined inside the NIF, and we can't change yet.  The numbers we have here are three morphs that get applied on top of that base mesh, which is why when you move the chooser toward the center of the triangle you start to see things shrink back to default.
 
I also figured out what all of the different instances of the bones do.  Like you said, the third instance of RBreast_skin in the file affects breast size on the female model.  Here's what the rest do:
 
First occurrence of any given bone name:  Scale factors for the three body type morphs on the men.  (You can give them boobs, but you have to push it really far, and it looks weird.)
Second:  Scale variation limits among in-game NPC men.
Third:  Scales for the three body type morphs on the women.
Fourth:  Scale variation limits among in-game NPC women.
 
This means that by tweaking those numbers, we can (I tried it, it works) exaggerate and manipulate the differences in body type among NPCs.  Here's the format:
[NAME]       [padding] /--  Minimums --\ /--  Maximums --\
                        \Min X/  \MinY/   \MaxX/   \MaxY/
RBreast_skin   _   _   aabbccdd aabbccdd aabbccdd aabbccdd
Default:                 -0.1     -0.1      0.1      0.1
I'm not fully clear on what the X and Y channels are for.  I haven't tried setting them to different things yet.  What I can say is that most Settlers seem almost unaffected by what I do with these values, but other NPCs like the Lucy and Connie Abernathy are definitely affected by the Min values.  Setting the Min values very low (I forget actual values, something -2.0 to -8.0) gives Connie and Lucy flat chests. 
 
I was unable to find any NPCs affected by setting very high Max values.  HOWEVER, the game is perfectly happy with you swapping the values.  Setting Min to 0.7 and Max to -0.5 gives Lucy the full "farmer's daughter fantasy" look.  (And probably a future of back problems.)
 
I played with numbers for a while and came up with these settings that I like, if anyone wants to try them:
L/R Breast_skin:
 3333B33F 00002040 0000C03F   9A99B93F 6666E63F 9A99D93F   66660640 66660640 00000040
['1.400', '2.500', '1.500',   '1.450', '1.800', '1.700',   '2.100', '2.100', '2.000']

L/R Breast_skin Min/Max:
 3333333F 3333333F   000000BF 000000BF
['0.700', '0.700',   '-0.500', '-0.500']   
(Yes the 'min' is higher than the 'max'... I fully expect this to cause someone to look really weird later.)

L/R ButtFat_skin:
 9A99993F 6666A63F 3BDFCF3F   0000803F 3BDFCF3F 3BDFCF3F   0000803F 3BDFCF3F 3BDFCF3F
['1.200', '1.300', '1.624',   '1.000', '1.624', '1.624',   '1.000', '1.624', '1.624']
            ^--- Lowering this helped with the pointy butt in full Thin morph.

L/R ButtFat_skin Min/Max:  (Unchanged)

All other bones modified by the Busty plugin:  (Unchanged)
I'm unable to upload attachments at the moment (I think I know why) so I'll troubleshoot that and post them separately.

 

 
A reply by @notasquirrel
 

I have a new one (three actually) that are "fixed" to be edits of 4.1 instead of 3.5.  Just couldn't post them until now since the site was down.  (I swear, this place spends more time down than up!  What's up with that?)
 
These are the bones I changed and numbers I used for the screenshots I posted before, in case anyone wants to go back to them:
 
L/RBreast_skin:  3333B33F 00002040 0000C03F 9A99B93F 6666E63F 9A99D93F 66660640 66660640 00000040
L/RBreast_skin Min/Max[1]:  3333333F 3333333F 000000BF 000000BF  (Inverted!)
L/RButtFat_skin:  9A99993F 6666A63F 3BDFCF3F 0000803F 3BDFCF3F 3BDFCF3F 0000803F 3BDFCF3F 3BDFCF3F
 
[1]:  This is inverted!  Min,Max = 0.7,-0.5.  Small-chested NPCs will be very buxom, but large-chested NPCs might be small.  Or might not, I'm not actually sure that FO4 uses those values the way I assume it does from their description...  I've yet to see an NPC that responds to the Max value, only the Min.  *shrug*  Mostly just because it's great when a bombshell-body Lucy Abernathy walks up to you and speculates about who in Diamond City may or may not want to plow her hot sweaty fields, followed immediately by a similarly-stacked-but-slightly-sagging Connie walking up and telling you to keep your eyes off her daughter.  Both of those NPCs appear to be set on the lower side of breast size scale, so a negative Min value reduces their chests and a positive one increases them.
 
I've tweaked the numbers from the last one and put them into a modified 4.1 .esp for you guys.  The changes are:

  • THIN:  Tweaked width(x) and sag(z).
  • MUSCULAR:  Slightly less sag(z)
  • LARGE:  Slightly less sag(z), slightly more volume(y).
  • Boobs Min/Max:  Breast sizes no longer inverted.  More variation in breast size between NPCs.  (This means Lucy will be smaller-chested as Bethesda designed her.)
  • Butts Min/Max:  Slightly increased variation in butt sizes.  Probably still difficult to see an in-game effect. 
Choice of three ESPs and some new screenshots for ya:
 
Busty_regular_enhanced.esp: The above alterations from the version I posted screenshots of the other day.  Non-inverted Min/Max.  (Shown in screenshot)
Busty_full-to-flat.esp: The above alterations.  Non-inverted Min/Max, but greater range.  Lucy for example is almost flat-chested, but some other NPCs should be very big.
Busty_alt.esp: My preferred version, inverted Min/Max, with buxom farmers.  (Serious props to Calyps' "Daisy Nukes".)
 
Rename to Busty.esp.
(note, attachments don't carry over... these will need to be re-linked)

 

 
 
A reply by @notasquirrel
 

Messing with boob values in hex is fun, but I'm ready to play the actual game for a bit while the modding tools mature.  default_biggrin.png  I have zero interest in uploading my work to Nexus, so you are 100% free to include my edits in your releases there if you wish.  Or to modify them to make something better, or ignore them, or whatever.  (I can certainly see room for improvement in my edits.)
 
I am curious how you fixed the need for strings files though!
 
RustyXXL says that hex-editing is obsolete, but I improved the Python functions for converting back and forth between float and little-endian hex bytestrings.  Here they are, in case they're useful for any future hacking:

import struct

def toh(x):
    """
    Converts a single or list of floating point numbers (or ints / strings which can
    be cast to floating point) into a continuous string representing those values as
    sequential IEEE 754 32-bit floats, as a hex-encoded byte string.  (Which can usually
    be pasted into a hex editor to replace 32-bit float values in e.g. a Fallout ESP file.)
        
    Examples:
    >>> toh(1.0)
    '0000803f'
    >>> toh([-50000, '-3.1415', -1, 0, 1.0, 2, '5.0', 255])
    '005043c7560e49c0000080bf000000000000803f000000400000a04000007f43'

    The output of this function can be used directly as the input arg of tofl().
    """
    intype = type(x)
    if intype in [type(1.2), type(''), type(5)]:
        x = [float(x)]
    else:
        x = [float(thing) for thing in x]
    fs = '<' + ('f' * len(x))
    return struct.pack(fs, *x).encode('hex')

def tofl(x, float=False):
    """
    Converts a string of hex-encoded bytes representing sequential little-endian
    IEEE 754 32-bit float values, into either a list of floating point numbers
    or a list of "good enough and more readable" strings with four digits of precision.
    
    Case is insensitive and spaces are automatically removed before conversion.

    Args:
        float = False (default): Returns numbers in a more readable "1.234" format.
        float = True: Returns numbers as more accurate actual floating point numbers.

    Examples:
    
    >>> tofl('005043c7250649c0000080bf00000000b6f39d3f9a197f43')
    ['-50000.000', '-3.141', '-1.000', '0.000', '1.234', '255.100']
    >>> tofl('005043C7250649C0000080BF00000000B6F39D3F9A197F43', float = True)
    (-50000.0, -3.1410000324249268, -1.0, 0.0, 1.2339999675750732, 255.10000610351562)
    >>> tofl('005043c7 250649c0 000080bf    00000000 b6f39d3f 9a197f43')
    ['-50000.000', '-3.141', '-1.000', '0.000', '1.234', '255.100']
    >>> tofl('00 50 43 C7 25 06 49 C0 00 00 80 BF 00 00 00 00 B6 F3 9D 3F 9A 19 7F 43')
    ['-50000.000', '-3.141', '-1.000', '0.000', '1.234', '255.100']
      
    The output of this function can be used directly as the input arg of toh().
    """
    x = x.replace(' ','')
    c = len(x) / 8
    fstr = '<' + ('f' * c)
    got = struct.unpack(fstr, x.decode('hex'))
    if float:
        return got
    else:
        return ['%0.3f'%x for x in got]

 
 
There were a lot of other posts, but I think these were probably the most important ones with a lot of data that it'd suck to lose.

Link to post

Thanks for collecting all the important posts.

Most of the Hex Conversion stuff isn't necessary anymore with the newest fo4Edit, they implemented most of the Knowledge from this and the other old thread and in the newest verions you can work with decimals.

Link to post

I tried messing with some of the breast values and I get why we're at the upper limit with the vanilla body mesh right now. You can make them bigger but since it's so low poly the verts pull out creating awful looking triangular protrusions. It's pretty easy now since we can just use decimals though.

Link to post

Some of us like it rough.

I have been working with the CBBE body to work with Busty.  Good news and Bad news.  The only real problem is that CBBE's custom UV's don't work with Vanilla UV's so you'll still need to convert the armor, making Busty pointless.....HOWEVER, the Good news is that I've converted the CBBE UV's to fit with vanilla textures a bit better.....the bad news is that it will break compatibility with base CBBE and bodyslide.  What we end up with is a single Body replacer which uses a CBBE based nude body, and relies on Busty for making armor match....but there is more good news.  I can also convert CBBE armors to use my UV's as they are released in theory.  

 

So the good:  CBBE based body at some point, that can work along with vanilla textures.

The not so good:  Only one Busty specific body shape.  Textures are custom so that they can work for both Vanilla and CBBE at the same time.  No bodyslide support because...UV's obviously.  Think of it as FO 4 UNP.

 

Also, this might all be for nothing since CBBE is in Alpha.  Things change. I'm just testing the idea, and may have to redo the entire project after CBBE launches.  Obviously no official or unofficial release until after CBBE officially ships.

 

WHY!? you ask:  CBBE is a beautiful work of art, but I created Busty to be a universal body/armor/and clothes shaper.  Any thing of vanilla proportions will automatically be Busty.  Mainly DLC and Custom armor.  Lots of armor will be ported to CBBE, so most people will prefer to just stay 100% CBBE, but for some of us this might be the laziest option when you just gotta be Busty all the time!  Or you see a custom armor in vanilla proportions.  

 

I ALSO MADE A LOGO!  Now everyone can proudly display the Team Busty seal of approval.  Uploaded your save game?  TEAM BUSTY!  Retexture of all in game tin cans?  TEAM BUSTY!  You may ask, how does my mod earn the TEAM BUSTY seal of approval.  Step one, your mod probably needs to exist.  Step two, you'll need to post your Team Busty seal.  You may than ask, what's the point?  Because I made the logo.  It'd be rude be no one used it.   

post-29193-0-66006600-1450047167_thumb.png

Link to post

Also, this might all be for nothing since CBBE is in Alpha.  Things change. I'm just testing the idea, and may have to redo the entire project after CBBE launches.

That's what I'm hoping for. CBBE didn't require an replacer for default equipment to use correct textures in Skyrim. Obviously the shape didn't match, but it still used the CBBE textures, right? I'd be really surprised if they didn't have the UVs fixed up by release!

 

Would certainly save us a lot of work!  :lol:

Link to post

 

Also, this might all be for nothing since CBBE is in Alpha.  Things change. I'm just testing the idea, and may have to redo the entire project after CBBE launches.

That's what I'm hoping for. CBBE didn't require an replacer for default equipment to use correct textures in Skyrim. Obviously the shape didn't match, but it still used the CBBE textures, right? I'd be really surprised if they didn't have the UVs fixed up by release!

 

Would certainly save us a lot of work!  :lol:

 

I'm getting a hard "no" from the CBBE team on moving from Skyrim UV's to Fallout 4 UV's.  The ship has pretty much sailed on that.  The conversion process to get a nif into an editor and back out is pretty tough.  Either way my best bet is to wait and decide between a reUV'd CBBE or a pure modified Vanilla mesh.  Both are waiting on the same tools.  

 

Oh, and one thing I got wrong, Bodyslide support is possible....and pretty simple if I go CBBE based route.  

Link to post

Is it really that different from Skyrim? I knew there was trouble with it, but what the heck did Bethesda do to it?

 

Regardless, either way I'm sure it'll work out. It's still early!

You are definitely right.  The speed of Fallout 4 modding is unprecedented.  We'll likely have meshing tools in the next couple of months.  

Link to post

 

Is it really that different from Skyrim? I knew there was trouble with it, but what the heck did Bethesda do to it?

 

Regardless, either way I'm sure it'll work out. It's still early!

You are definitely right.  The speed of Fallout 4 modding is unprecedented.  We'll likely have meshing tools in the next couple of months.  

 

 

Its fun knowing that a game will have official modding tools released, yet the fanbase make their own months before.

Link to post

 

 

Is it really that different from Skyrim? I knew there was trouble with it, but what the heck did Bethesda do to it?

 

Regardless, either way I'm sure it'll work out. It's still early!

You are definitely right.  The speed of Fallout 4 modding is unprecedented.  We'll likely have meshing tools in the next couple of months.  

 

 

Its fun knowing that a game will have official modding tools released, yet the fanbase make their own months before.

 

Bethesda's tools are cool, but really are not all that helpful for a wide range of mods.  They are very specifically designed for world building or adding game mechanics, and stuff like that.  They do not release Blender/3ds max plugins.  With or without GECK it's up to the community to develop tools to do 90% of modding.

Link to post

This mod is great!  I have been using it, along with Calyps clothing mods, and my fave skin so far: Glorious Nude.  Thank you for all your hard work getting this mod working!  It's too bad the default mesh is so limited that when you push the size limits, you get the weird bumps.  I know this has been discussed in depth already, but I just also want to add my thoughts, too.  Anyway, thanks again!  Let me further add that it would be so awesome if Team Busty and Caliente could join forces to knock the whole busty body thing outta Fenway Park!

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...