Date this article was last edited
2024-03-28
I spent A LOT of time changing values and editing the text files for CBPC configs. I hope that this article will help you people better understand what each setting does.
TEXT files
All these files are situated in your game's executable folder under this path:
CBPConfig_3b.txt
Manages all of the breast physics. Based off a 3 bones system, each breast will have 3 parameters which I described a little lower in this article. You also manage each breast separately, Left and Right usually defined by the letteres "L" and "R" respectively.
CBPConfig_BBP.txt
Same thing as the previous file but each breast has only 1 parameter instead of 3.
CBPConfig_butt.txt
Manages all of the butt's physics. Seperate values are set for the left and right butt cheaks.
CBPConfig_leg.txt
Manages all of the leg physics. You will configure 3 portions of the legs, the front and back thighs as well as the calf. All of which are defined as FrontThigh, RearThigh and RearCalf. You'll also get the same Right and Left parameters per section to manage as well.
CBPConfig_belly.txt
Manages the belly physics. This is probably the simplest file of them all. There's no left and right sections and manages mainly the area around the belly button.
CBPConfig_3b_armor.txt
Manages different settings that apply values depending on which armor type you are wearing which are: Heavy, Light and Clothes. You do not set the same values as the previous text files. The settings in these files actually play a role in the other files' parameters and simply add/subtract defined values. The parameters in this file are a bit simpler. You will, however, need to define every bones of the breasts for each sides so normally, each parameter is tripled. Sometimes, even when following the 3BA guide, the configs of this file are not used and the BBP one is used instead so it's preferable to have both, 3b_armor and BBP_armor, have the same values. For the system to use this file, you MUST install a compatible 3BA clothes and armor mod.
CBPConfig_BBP_armor.txt
The exact same thing as the previous file with the only difference that there is just 1 parameter per breast so breast values are NOT tripled.
CBPConfig_3b_Gravity.txt
This file defines the gravity movements and settings. You set in here gravity values.
CBPConfig_3b_MoreGravity.txt
This file is for those using many different odd body positions, notably upside down positions hence all the "inverted" settings in the file.
3BA author comments: I put 3BA's comments found in the text files for those wondering what things may do in a more scientific way and I have vulgarized with my personal understanding from the tests I have done putting those values to their max to see their exagerated effects for better understanding.
3BA's 3 bones breasts
You will see that 3BA uses 3 bones or 3 different parameters for each breasts all of which are named 1, 2 and 3. Example list below:
ExtraBreast1L
ExtraBreast2L
ExtraBreast3L
Never mind the word "Extra" here, what's important is the word "Breast" which means we are treating with the breast part. As for the "L" this stands for LEFT. RIGHT will be the letter "R".
As for the numbers, here are what they affect on the breast:
Number 1. The upper portion of the breast where it attaches to the chest (includes part of the upper chest area)
Number 2. The actual breast's body (the breast ball if you prefer to say so or the CUP sizable region)
Number 3. The Nipple (the tip of the breast).
Parameter values
You will notice that each parameter has 2 set of values separated by a space. These are the values for weight 100 (bigger body weight) and weight 0 (thinner body weight) respectively in THAT order. For example:
The first value, in this case "0.7", is the value for weight 100 and value "0.3" is for weight 0.
Note: If only one value is used, that value will be applied to both according to author of CBPC. Example:
In this case, weight 100 and weight 0 values will be 0.7.
The good practice, although 1 value is supported, is to always put both values in even if they are the same. Example:
Parameters
All parameters are preceded by what they apply to. For example, left or right breast, butt cheek or thigh, belly. I will list the parameters that are written AFTER the identifier of the body part it relates to, usually separated by a period/dot. For example: ExtraBreast1L.gravityBias, I will list .gravityBias. The values can be higher or lower than what I write but this would be rediculous and probably not recommended unless you want to see some really awefull, weird glitch styled physics. So the values I write down are my recommended lowest and highest acceptable and playable values.
Notes from 3BA concerning parameters that need symmetrical values.
Spoiler:
Show
Example of the appropriate assignation of symmetrical values:
Let's say that these values are set for the LEFT breast:
.Xminoffset = -4
.Xmaxoffset = 2
then for the RIGHT breast the values should be:
.Xminoffset = -2
.Xmaxoffset = 4
The parameters that you have to make symmetric are as follows:
[Linear]
.Xmaxoffset
.Xminoffset
.linearXspreadforceY
.linearXspreadforceZ
.linearYspreadforceX
.linearZspreadforceX
[Rotate]
.YmaxoffsetRot
.YminoffsetRot
.ZmaxoffsetRot
.ZminoffsetRot
.rotationalZ OR linearYrotationZ (Make only one of the two symmetrical, not both)
.rotationXspreadforceY
.rotationYspreadforceZ
.rotationZspreadforceX
.rotationZspreadforceY
[Collision]
.collisionXmaxoffset
.collisionXminoffset
Tuning.rate
Usually set to 60, this will make sure you can edit the config files and see their effects immediately while the game is running. If this parameter does not exist, simply create a new line in the config file and enter the line as showing in the quote below. After, simply save and relaunch your game. Once you are happy with your setting though, please do not forget to delete this line or add a "#" at the beginning of the line to comment it. You DO NOT need to write this line in EVERY file, just ONE file is enough. This way you won't get messed up trying to figure out where you forgot to turn it on or off. See CBPC author's comment below example on this:
.gravityBias
Defines the gravitational DOWNWARD pull or SAGGINESS or weight. The higher the number, the lower the body part (the more saggy it gets) and the lower the number, the firmer things get. More gravity means less movement. Usually weak values are set here to give some slight weight to the body part and lightly limit the movement while still giving it some room to move freely.
Values: -1 to 1
.gravityCorrection
Defines the UPPER gravity pull. Setting this to a high number will make your body parts float in the air. The higher the number, the less movement you will get.
Values: -4 to 4
.stiffness
3BA author comment: Linear spring stiffness 004
This defines how attached to your body the parts will be. High positive numbers will make your body part constantly wiggle and low negative numbers will make your body part unreactive to body movements. Basically, the higher the number, the LESS stiff this body part becomes and the more it reacts to its environements. values of 0 will make the parts seem to floaw in mid air without any reaction to gravity or movement. Lower values will have a tendency to make the body part look more springy (like hard rubber) while as higher values will make them look smoother (like water bags filled with different amounts of water).
Values: -0.2 to 0.2
.stiffness2
3BA author comment:
You can consider this as how hard the spring is or how firm the water bag is (or how springy the body part is). It also is how fast or violently the body part reacts to movement and comes back in it's initial position. Low values will make the body part seem to move in slow motion while as high values as if you were springing a very stiff rubber that quickly and firmly wobbles back into position.
Values: 0 to 1
.damping
3BA author comment:
We can consider this as the breaks of the physics or the time before it decides to go back in it's initial position. Lower values will make the body part more stable. Lower values than 0.05 will make the part wobble a lot at the slightest movement. Higher numbers will make the body part seem to respond late to movement and come back in place later. Has an effect of an after effect slow motion. These values can be touchy since a high number can make your body part look like floating or slow moving lava and low values can make it look like a non-stop super fast jiggly spring. Finding a good balance is also difficult because a good value for jumping make make the crouching motion look weird and a good crouching value may make the jumping way too reactive.
Values: 0.05 to 1.0
.Xminoffset
.Yminoffset
.Zminoffset
Maximum distance the body part can move from it's original position. Usually, you would set this setting to a negative value and the maxoffset below to a positive value which gives the bodypart some space to move instead of abrubtly breaking during movement. An example of setting this to 0 for breast2 would make the breast wobble down but as soon as the breast part moves up, it will stop immediately once it reaches it's original position instead of moving up a little to create a jiggle-like movement. This creates an unnatural feeling to the movement. A good balance between Min and Max offsets is the basis for a good looking physics and the rest of the parameters that affect the movement.
Values: -4 to 4
.Xmaxoffset
.Ymaxoffset
.Zmaxoffset
Consider this as the stretchiness of the body part WHEN MOVING. The higher the number, the more stretchy it gets when moving. This setting will NOT cause any sags but rather cause sags when moving. You could never change any parameters and simply set this value to 0 and it will disable all movement behaviors. This setting is the maximum distance the body part can travel from it's original starting point. As of v2.30 of 3BA, .maxoffset has been seperated in X, Y and Z. If updating from pre 2.30, set all these values the same for X, Y and Z.
Values: -3 to 3
.timetick
3BA author comment: Time Quanta for the physics in ms 4 means that a 16ms frame would be broken down into 4 4ms stepsThis parameter will determine the amount of time given before the jiggle stops. The higher the number, the longer it takes before the body part stops jiggling. A setting of 0 will let the body part move but stop immediately as soon as you stop moving. Negative numbers have no effect since 0 is the lowest you can go giving 0 time to stop jiggling. Higher numbers, even up to 16, will not give you that much of a weird glitchy artifact but will just look as if your body part takes a lot of time before resting back in place. It can make things look like a jello blob still reacting to an earthquake shockwave long after the earthquake happened. Higher than 8 will not make your things look horrible but the jiggle must stop one day so this is my suggested limit but you can go far beyond 8.
This parameter is also responsible for the animation when standing up from the crouching position. Higher numbers will make the body part react while as lower values won't show much reaction when standing up. For example, breasts will have a uplift effect on high positive number while as low number won't show any uplift or almost none.
Values: 0 to 8
.timeStep
3BA author comment: {No comments from author in file}This is what I would calculate as being the main firmness of the body part. To say it simply, it's the speed at which the jigglyness animates. Negative values are useless and higher values than 0.8 will cause some minor twitching when moving. 0 value will make the animation look like in slow motion.
This parameter will also affect what I call the "Breathing Motion" of your character. Basically, when idle, these values can cause your body part to move a bit while standing still in the game.
Values: 0 to 0.8
.amplitude
This is a general parameter and can reduce the amount of jiggliness. You can use this setting to make a body part firmer without playing with any other values.
Example (given by Shizof in a comment):
This will reduce it down to 30% etc. Linear movement
The next values define the actual body part movement and the above parameters are greatly affected by the next following LINEAR parameters. Before continuing, please first understand how the 3D environment is interpreted by the engine. I made this very easy to understand Riverwood top view for you to understand things more easily. A small word of knowledge: Most 3D games are designed as viewed from the top (top-down view). And since most engines start as 2D games, the only available axis are X and Y. The Z axis has been introduced to provide a 3rd dimension. Consider X and Y as horizontal and vertical position/movement and the Z as the top-down/height position/movement. So moving left and right means moving on the X axis, moving forward and backwards is moving along the Y axis and moving up and down is moving along the Z axis. The CBPC physics work with the same logics.
(click on the image for full size)
Note: .linear{X,Y,Z}: If the 3 following parameters are set to 0.0, no physics will happen no matter what you put in other parameters. It's an easy way to remove all physics from the body part. Also note that if you want the body parts to stretch more or less, the linearX,Y and Z values are those to change since they also affect the walking, run and crounhing/standing animations.
.linearX
3BA author comment: Scale of the motion in X/Y/Z - Side, FrontnBack, UpnDown
Defines the horizontal (sideways) movement of the body part. Negative values have a tendency to move the part outside while as positive values have a tendecy to move them inside. Basically, when running, with a negative value, the part will move to the sides of the body while as positive values more towards the center of the body. Higher or lower values than those proposed will usually make the body part flap or twitch on it's own when standing still.
Values: -2 to 2
.linearY
3BA author comment: Scale of the motion in X/Y/Z - Side, FrontnBack, UpnDown
Defines the back and forth movement of the body part. Negative values will give the impression that the body part is being pulled forward as the character moves forward while as a positive value will give a more normal behavior.
Values: -1.5 to 1.5
.linearZ
3BA author comment: Scale of the motion in X/Y/Z - Side, FrontnBack, UpnDown
Defines the vertical (up and down) movement of the body part. Higher values will make the body part seem to be very stretchy while as negative values will just be too weird. They are possible but you could consider negative values to be like a pupeteer pulling up the character when jumping, just too awkward to use.
Values: 0 to 1.5
.linearZrotationY
3BA author comment: {No comments from author in file}
Diagonally rotates the body part after the main body movement and slightly while moving. This rotation is usually noticible the moment you stop moving a few milliseconds before the body part stops moving completely. You should use opposite values for Right and Left sides.
Values: -8 to 8
.linearXrotationZ
3BA author comment: {No comments from author in file}
Inwards (positive number) and outward (negative number) horizontal rotation of the body part while moving and when ending movement. NOTE: System AUTOMATICALLY detects left and right. So for breasts to rotate outwards, you would use negative values for both, left and right breasts.
Values: -8 to 8
The next rotational parameters do not follow the same X, Y and Z rules as the linear parameters above so I provided a screenshot in a spoiler for each to make you better understand the effect. Negative values in this section rotate counter clockwise while as positive values rotate clockwise.
.rotationalX
3BA author comment: Scale of the bones rotation around the X axis
Defines the body part's vertical rotation (as viewed from the left side).
Spoiler:
Show
Values: -0.2 to 0.2
.rotationalY
3BA author comment: Scale of the bones rotation around the X axis (yes, X axis, same comments for X, Y and Z)
Defines the horizontal rotation of the body part (as viewed from the front).
Spoiler:
Show
Values: -02 to 0.2
.rotationalZ
3BA author comment: Scale of the bones rotation around the X axis (yes, X axis, same comments for X, Y and Z)
Defines the rotation as seen from the top. Quite difficult to explain so a picture is better. Just a word of advice though and most obvious for breasts. If you use negative values for the LEFT, you should use POSITIVE values for the RIGHT. Basically, this will rotate the body part away from the body or towards the inside of the body and usually, like for breasts, you want each breast to rotate in opposite direction or else it will look awkward for both to rotate in the same direction.
Spoiler:
Show
Values: -0.2 to 0.2
Other movement values
Note: .linear{X,Y,Z}spreadforce{X,Y,Z}
This will spread the extra movement force supposed to be on the linear axis to the spreadforce axis. Example given by 3BA author:
Spoiler:
Show
Let's say the ball moves 1 block on the X-axis once a second and let's say there's no other force.
Let's look at a few examples in a 6 seconds time frame.
if .Xmaxoffset is 3 then the ball will move as follows
X0 Z0
X1 Z0
X2 Z0
X3 Z0
X3 Z0
X3 Z0
Because .Xmaxoffset is 3 so the ball is fixed at 3 positions on the X axis
if .linearXspreadforceZ is 1 thenthe ball will move as follows
X0 Z0
X1 Z0
X2 Z0
X3 Z0
X3 Z1
X3 Z2
if .linearXspreadforceZ is -1 thenthe ball will move as follows
X0 Z0
X1 Z0
X2 Z0
X3 Z0
X3 Z-1
X3 Z-2
if .linearXspreadforceZ is 0.5 then the ball will move as follows
X0 Z0
X1 Z0
X2 Z0
X3 Z0
X3 Z0.5
X3 Z1
.linearYspreadforceX
3BA author comment: {No comments from author in file}
Back and forth random movement values. This simulates a kind of random squish or stretch effect on the body part. If you use different values or opposite values for each side, this can make it look like a slightly random behavior.
Values: -1 to 1
3BA author's personal note on this parameter:
Usually limit the physics force to Maxoffset and Minoffset
If the force is greater than the offset limits, the force is lost
It is this parameter that can spread that lost force to the other axis instead of just force is lost
so if Y-axis force is 5 and maxoffset is 3, thenY-axis force is 3 and the other 2 is a loss
but if linearYspreadforceX is 1.5, then the Y-axis force of 2 is added to the X-axis by x1.5, so 2 x 1.5 = 3 then the force added to the
x-axis is about 3
so if existing X-axis force is 1 then result is 1+3=4 so it'll have a total of 4 force
Therefore it is absolutely not random and has rules
.linearZspreadforceX
3BA author comment: {No comments from author in file}
Up and down random movement values. Same as above but up and down.
3BA author's personal note on this parameter:
Likewise, if the Z-axis linear force is lost by Max/Minoffsets, it will be spread to the X-axis
Mostly for breasts, these values are affected by 3 different types of armors, Clothes, Light Armor and Heavy Armor. Since the parameters are the same for all armor types, I will not list every single different existing lines but instead list the last portion of the parameter name. For example: .breastClothedPushup, I'll simply write "Pushup".
Pushup
This defines how much you want the bodypart to lift from it's original nude position. This simulates wearing a bra which would lift the breasts up. Negative values are accepted but pretty useless because it would be very weird to have a clothing make your breast sag more than when you're naked. Values higher than 8 can make the body part twitch.
Values: 0 to 8
Amplitude
This defines the firmness of the body part when wearing something. 0 makes it completely firm, no movement. Higher values than 0.5 makes the body part more jiggly than when you are naked so higher than that would not make sense.
Values: 0 to 0.5
Note on Pushup and Amplitude relation
The more pushup you give, there is a tendecy of diminishing the jiggle of the body part. So if you put a high pushup effect, the amplitude parameter may also be affected and diminished. So a Pushup of 1.0 and an amplitude of 1.0 may not make the body part jiggle or jiggle as you may imagine. Also note that Amplitude is a multiplier. So it takes your base settings and multiplies it by the Amplitude value. So a value of 1.0 techinically, makes it the same as normal. As I am explaining too, Amplitude ALSO uses the Pushup in it's calculations and therefore, Pushup affects Amplitude. That's something to take into consideration if ever you are playing with these values.
A good practice is to leave the Amplitude to 1.0. Play with the pushup effect until you are happy and THEN play with the Amplitude effect. This way you will get the desired pushup effect and the desired jiggliness without getting too mush lost in your file edits.
Collision ParametersFor now I can only supply what I have learned from 3BA's author with whom I had a personal conversation with. I also supplied, in green, some information I got from CBPC's author.
.collisionFriction
CBPC author personal conversation comment: Physics deceleration by friction in collision. This means collision reduces bounce acceleration. Setting this to 1.0 makes it the same as before. Don't use higher than 1.0.Lower than 1.0 would enable friction.
Friction is friction
1.0 means that complete stop in colliding
0.0 means that never stop in colliding (The momentum is completely remain even when colliding)
in before (v1.4.xx or lower), when colliding, it stopped completely so which means friction was 1.0 in old version
Setting this to 1.0 makes it the same as before
.collisionPenetration
CBPC author personal conversation comment: Down the sensitivity of collisions / It affects the actual colliding rangeThe larger this value, the less sensitive the collisions become, this actually changes the collider position to reflect weakened move by that parameter when colliding.
This is kind of a pressing effect on skin for example, so basically the radius is being reduced by this.
Setting this to 1.0 makes it the same as before. Lower than 1.0 would enable penetration. Don't use higher than 1.0.
.collisionElastic
CBPC author personal conversation comment: Add bounce by collisions, but sometimes jitter can occur / This is either 1(enabled) or 0(disabled)This is something you shouldn't touch. It's still not working and disabled by default because it can cause unstable behaviour.
This is a parameter that determines colliding effect will be reflected in the bounce or not
For example, if this is
offEven if you hit breasts, breasts simply avoids your hands
And there's no bouncing factor that happens from hitting
if this is
onif you hit breasts, breasts will bounce off as much as you hit it
So most of case
there is little or none physics like belly for bellybulge or vagina, it is better not to use elastic for collisions
but there is many physics like breasts or butt or etc, it is better to use elastic for collisions because it's more realistic
But Elastic didn't stabilize for many reasons (too large rotational value in config of butt and thigh, insufficient friction at low FPS, colliding calculation logic, etc)
in test build version, fixed most of the problems
well however problems sometimes occur so it may be better not to use them except for breasts if you don't want the average user to pick on you
Spoiler:
Show
First, if you are not familiar with console, on PC, entering console mode is done by simply pressing the tilde "~" key on your keyboard. Pressing the tilde key again will get you out of console mode and straight into game play again.
Mid-game Weight Changing
If you want to test your breast physics on different sizes, type this command in console mode:
{weight} can be anything between 0 and 100.
example: player.setnpcweight 100
Testing values and their effects
When creating or editing a text file for CBPC physics, I recommend you set the 2 values of ONE part or one portion of a part (for example "Breast2") at a high exagerated positive value, test it in game, then change those values to a high negative value and test in game. This will permit you to EASILY see what this parameter affects and what the negative and positive values do which then gives you a better idea on how to play around with the values of that parameter.
Physics testing without time change
It is NOT recommended to PLAY when activating this in console mode. There is known issues when attempting to play normally when setting this to "0". This is meant to test your physics without always seeing the day/night cycles if, like me, you test things for hours with your game on.
In console, type this command:
The default value is "20" so to bring back your game into vanilla timescale, simply "set timescale to 20". The slowest SAFE playable timescale is "2" if you want to play normally with the slowest day/night cycle.
Harrassed by other NPCs or followers?
If a follower or NPC is disturbing you while testing or you are stuck, like me, where a follower has no option to dismiss or wait, you can disable it's AI where the NPC won't do anything, not even fight, until you turn it's AI back on. Simply type this command in console mode after clicking on the NPC your want to disable or enable:
Typing this command again will re-enable the selected NPC's AI making it do it's normal things.
Testing with different clothes and armors
The additem command in console is usefull for adding stuff in your inventory without you searching for it in the world of Skyrim. Usually, with 3BA, you want to maybe test using clothes, light armor and heavy armor. To add an item in your inventory simply use this command in console:
Example: player.additem f1229 1
This will add basic clothes to your inventory where "f1229" is the ID for clothes and "1" is the number of clothes you want added in your inventory.
Here are links that provide the lists of IDs for clothes, light armor and heavy armor. Note that the ID does NOT need to be entered with the preceding zeros "0".
• Clothes: https://elderscrolls.fandom.com/wiki/Console_Commands_(Skyrim)/Clothing
• Light Armor: https://elderscrolls.fandom.com/wiki/Console_Commands_(Skyrim)/Light_Armor
• Heavy Armor: https://elderscrolls.fandom.com/wiki/Console_Commands_(Skyrim)/Heavy_Armor
Final Words
I hope this guide will help many of you demystify the CBPC collision configuration and provide a tool for many of you to bring us some custom presets to try and download and give each of us a preset for every taste. And if this is for you personally, well at least you will have the ability to make the physics work for your own personal taste. Firm, jiggly, Anime, whatever you want, the world is now opened for you to edit 3BA's config files.
Please do not hesitate to comment, it's always very appreciated to read user feedbacks and encourages us to continue spending time giving you free guides from our own free time. Please also consider the time that our beloved CBPC and 3BA authors took to create those excellent mods too and open up the possibilities of a bit more control on some elements of our good old Skyrim game.
If this guide was helpfull, please consider showing some appreciation. You can encourage me in 1 of 3 ways:
or more than 1 if you feel generousPaypalone time donation:https://paypal.me/davirichar
Endorse this article.
Commentand share your experience.
Thank you so much for all of those that encouraged me already, may it be by donations or simple comments and endorsement, everything is appreciated!
Additional links and videos
Spoiler:
Show
2022-04-24 - Streaming YouTube Link of my play on settings and my tests: https://www.youtube.com/watch?v=OVPzgNXvMYw