Hello and welcome! In this tutorial we will be talking about jiggle physics in Unreal Engine. This has been a topic suggested by the community where we will first define what are jiggle physics and its requirements. Then we will set up the necessary components in the physics asset of our character and at last we will test different types of jiggle physics depending on what your game needs.
And before I forget... If you want to support us in any way, be sure to check out our store. We have a lot of cool stuff like a free Blueprints course, another to model a castle inside Unreal, and our marketplace assets that were made with care and effort.
If you want to learn more, you can consider becoming a member of our channel where you will get exclusive tutorials that can take your game development skills to the next level. Let's start by defining what are Geophysics, and its requirements. Also known as soft body physics or breast physics, jiggle physics is the art and science of simulating the behavior of non-rigid objects in a computer.
Now, before we start the development, there are some things that we need to take in consideration when implementing jiggle physics. The first one is the intent. What are you trying to achieve by adding this feature? Time is very limited and if you're developing an indie game you need to make sure that whatever you're adding will make a difference.
For example, if you're developing a real-time strategy then you won't probably even notice this physics, so take that in consideration. Also, the size and proportion will define how the gigal physics will operate. So it's good to take in consideration and do some research prior.
The last thing is the conditions. For example, if the breast is well supported, then you really don't need that much bounce. Also, if your environment is maybe space, then the gravity will not be the same.
So these are things to know before developing. and taking them in consideration will result in better and believable gigaphysics. Now, the requirements needed to implement this feature is first knowing what you're trying to achieve.
Then, the skeletal mesh of our character needs joints for each breast, and also those joints need to be properly skinned. Let's begin development by opening the Epic Games Launcher and launching the Unreal Engine 5 Preview 2. Here in the Unreal Project Browser, let's go to Games, Blank, Blueprint is fine, and let's call it Google Physics, and click on Create. Now with a clean project, What we need to do is set up the necessary components in the physical assets of my character, but right now we do not have a character. Because we do not have a character, let's import one from the marketplace. Let's open the Epic Games Launcher again, and here let's search marketplace, and you can use any type of model you would like.
as long as they have the correct bones and skinning applied. If you do not have any character here, you can look for epic assets and there are a lot of characters in Paragon that you can use. For example, Jean, it's free and you just need to add it to the project. Here click on show all projects and type the name of your project.
Just select the nearest version to the one you see here and add to project. This will download the character and add it for you but in my case I'm gonna use one of the characters that our team has made and it's called Anime Girl. Oops, Anime Girl.
Let's see. And now there are two. One is not ours, this is ours.
Somebody just used the same name. So I will be using this character because I know that the bones are correctly set and correctly skinned. So I have not signed in with my account that has it, but I'll be importing it to the game the same way you have seen before.
So back in my project here I can go to the content drawer and I will see that ParagonGene has been added and here I will find the character and also in the same way my cleric also has been added. Now that I have the character it's a good idea to check out what assets come with the package. Here I have a blueprint which I can drag and drop. And if I press play, it should start working. And you can see there are no jiggle physics present.
Also, we know that we have some animations here that we could use in the example. For now, because I already have a blueprint here and this blueprint is already working, then it's fine. So let's start with the implementation. It all has to do with the physics asset of this character.
To find the character, well, you just need to go to Skeletal Meshes, usually, in the case of the Paragon characters, it's also in Characters, Heroes, Gene, Meshes, and here you have Skeletal Mesh. You can also click on Content, and filter by skeletal mesh and you will find all the skeletal meshes here in your project. In my case I want this one, this is the same character but without the weapon, I want the one with the weapon. Let's double click it and now I can see the skeletal mesh. I need to make sure that the bones for both breasts are there so we can show uh wasn't show it was character bones and all hierarchy and we see that we do have two bones there let's select it only so we don't have too much clutter there and what you need to know when you import a character it's that it will come with three assets one is the skeleton mesh the other one and can I go to folder view?
here it is. the other one is the skeleton which defines all the joints that you have created in another maybe software, maybe blender, maybe 3d max then after this skeleton this is an asset that has been generated when you imported the skeletal asset. So it is generated by Unreal. The third asset any character will come with is a physics asset. And I can click it like this. Here is the physics asset.
But you can also use these shortcuts here. This is the skeleton. This is the skeleton mesh. And This is, well, animations that you can see here, animation blueprint in case you have it, and the last one is the physics asset. This physics asset is how this character will react to physics.
So for example, here, if I choose simulate, I can see how my whole character will react if by any chance I need it to ragdoll. Now, not always I want to ragdoll everything, sometimes some parts, for example these two, I can also click here in simulate options and simulate selected, so I know how these ones will react. Now, with this knowledge out of the way, we need to talk about the bodies that we can create.
And how are they tied up together? Now, for example, you see here, this is a, it's not quite an sphere, it's more of a capsule, which represent the head. And if I just simulate selected here, you can see that because this capsule here is the head, it is affecting everything that the bone is influencing.
So if the head was skinned to, well, all the part of the head here, then here I see that it is moving everything that was or is influenced by the head. Now It needs to be anchored somewhere, right? The way we anchor stuff is through constraints. And you can see the constraint here. This is the constraint.
And it is telling how much movement can I give whenever I decided to activate the physics on this body. or well in this capsule right so if i were to enable more lateral movement here or well where is it here i can play with some values so i increase the range of movement and whenever i simulate then my head can do has more room to move around right So let's not do that. Let's stop simulating.
And I believe the value was like 19 something. Ctrl C, come on, save it. Save me. There it is.
So it's through these bodies and these constraints that we can define how my character will work under some physical situations. Now, what we need to do is create the bodies needed for the jiggle physics. If we check our character and right now my camera is moving too fast so I'm gonna change the camera speed to 2 and that's a lot better.
We see that there are no bodies here so let's create them. We will go to this tab, the skeleton tree tab, and we will try to find the bone. Right now this tab is not showing me any bones so let's click here on this cog and show all bones here let's find the one that we need and here it is one from for the left side and the other for the right side here let's just select one of these bones and right click it and add a shape we will add a sphere and we know that it is definitely too large for this character. So what we need to do is scale it. You can use these hotkeys like W to move, E to rotate and R to scale.
Or you can use this widget here, but let's scale it. Let's scale it down a little bit and there should be fine. we just need to move it now and it's a good idea that it's a little bit outwards because if later we need to add some collision then we know that it won't clip and it seems to be to be in a good position now it is really hard to tell if the is in the right place, well, you can go here to show and uncheck translucency and now I can realize that here it's too much to the side, now should be better, a little bit outwards and a little bit downwards here, maybe a little a little bit bigger Yeah, that's good enough.
There it is, that's better. Now, we just created the body, and let me show translucency again so it is easier to see. We have a body that it is tied with the breast bone.
If we select it, go here to simulate options, simulate selected, and simulate, it will fall immediately. because nothing is holding it up. So we also need to create a constraint. To create a constraint, we just need to go to the body, here it is, breast L, right click it, constraints, and we need to select either, well, another body, and I really need to know where is placed. where the bone is placed.
So here I know that breasts, the parent of the breast is the spine 4. So the body spine form will be a good option to create a constraint. So wherever the spine goes, this breast will also go there because it's its parent. Right, so let's select the body here. These are bones, these are bodies.
Right click it, constraint. and select here spine 4. Now we have created a constraint here and right now it is being selected. We really don't want it to be there, we want it to be a little more to the side and almost in the middle but not so much. With this constraint in place, Now we can select back the body here and see what happens now when we simulate. Now it's constrained but doesn't look very real to me.
Let's stop that. We now need to see the constraints here so we can select it easily because I know I have lost my patience trying to set up a physics asset before. by trying to select this but sometimes I select the body or another constraint so here also we can hide the bones we don't need them anymore except when we are creating the other side let's hide the bones and let's show the constraints here and now we can see in this sidebar all the constraints and I can select here the breast constraint immediately. Now, if we didn't want it to move, we can lock everything, especially the rotation. If you do some research, and it is necessary in every aspect of game development to do research, you will see that rests really don't rotate this way.
Oh, excuse me, simulate, and I only wanted to... simulate this body. Breasts don't rotate this way, they don't have this type of rotation.
So, we need to lock the rotation. With the constraint selected, in the details panel, we can search here for angular limits and instead of being free, what we're gonna do is lock them. Locked it here and locked it there. Now, if we select the body again, and simulate we are still simulating only the selected bodies it won't move at all even if i try to move it it won't batch and here we have the tooltip right click control right mouse to interact with bodies so it will try to stay in place well what we need to do now is well stop and see how can we add some movement and some movement that look believable.
The way that we are gonna add that movement will be through the same constraint. And this is cluttering my view so let me close anything that I don't need. So we click on the constraint and we now will find the linear limits. These are movement that we can allow our body to take. We don't want angular limits because we really don't want to rotate it.
I mean, we could add some limited movements and see if some rotations are good, but let's just do a simple setup. So, here, what we need to do is X-motion limited, and increase the limit to maybe five if you have you have seen nothing change then we can go here behind it and now you will see that these green lines have appeared if we put it lock again they will disappear so this will let me know that it can move in this range now 5 is maybe too much. We can test it by selecting the body from before and applying simulation.
Yeah and it's definitely too much so let's change it to maybe 3. Now with this. The breast do move but it stays there. You need to remember that it is mostly fat and the skin is very elastic. So let's click on the constraint and in the linear limits we can go to advance and play around with the restitution value.
Like it says here it controls the amount of bounce when the constraint is violated. So a restitution of 0 will stop that, like it's happening to us, and a restitution of 1, it will make it bounce back. So we have tested 0, let's test 1. Change it to 1, and select the body, the breast one, again, and press simulate.
Also, you can use the short keys, alt-shift-enter or alt-enter. to simulate or simulate selected so alt shift enter and now we see that it is bouncing which it isn't realistic at all so we will stay with a value of 0.4 you can play a lot around with this value so let's test it And now it gives us a better way of just falling through gravity and sagging a little bit. Which is what normally happens if a woman does not have a bra.
Because if the woman is not wearing a bra, then gravity does its part. Now, in the case of this character... You see that the outfit, not only it is tight, but should probably provide some support. So, let's go back to the constraint and we need to add a way for the breast to return to its natural position, or well, its sustained or supported position.
To do this, we can search here, we were in linear limits, We're gonna search now passing by angular limits to the linear motor and the linear motor will try to get back to the position I set up here. Now which boxes I need to check? Well the same ones here.
Now what I did want to add is that not only do I want it going upwards but also side to side but we will do that later let's just check the linear motor so it was in the x axis so here in the linear motor the first one is x now 50 is a small value if we test it then we see that it is not returning so let's change it to a higher value And now let's see what happens. Now it gave us a bounce. And if I try to see how the gravity will be affected by using CTRL, right mouse and any type of movement with these two keys pressed will affect anybody that is simulating.
Then I see that it can move around and it will have a nice bounce. Now, if we wanted to have more of a realistic feel, then we should really add that lateral movement that I was talking about, because breasts not only move up and down. Let's see which axis is the one that I need. If I choose the Y axis, it's front and back, and I don't need that. so let's get it back to locked if i choose the c choose the c axis then it seems that it is what i want now it's a good idea to check if it is in the same rotation of the breast and it seems that it isn't so this constraint beside moving it around what i can do is also rotate it around and i'm gonna disable my snapping otherwise it will snap it will snap my rotation and i don't really need that right now and i'll i'll try to make it be in the same direction if you can see this then because it's easier to look it from here we can increase the limit maybe to 15 and now it is a lot easier maybe 10. it's a lot easier to see the movement that it will take.
So maybe a little bit like this. And here we can see where it is pointing, where my constraint is pointing. So maybe like this. Yeah, that should be fine.
Let's return my limit to 3. And if I try it, I do need to set up my linear motor. Otherwise, it will work on the x-axis. That should be the world C.
But not for side to side. So let's fix that. Here, let's go to the linear motor.
And then add. the c value. 0 is fine because 0 is the initial location of this constraint. And now select the rest body and see the results. Now it is a bit jiggly.
If we needed more resistance we can increase the value. but we can already check if it is working in my character. Right now if I press play I won't see any.
Those are just the animations of the bones but if I select here in my physics asset the body and then here in physics type I select kinematic no excuse me simulated this will allow this bone to be simulated by default so let's press save and here i'll press play and there there it is there we have it we can see it that it is working and now it would be a matter of applying the same settings to the other side. Now let's mirror what we did here in the physics asset. It is more simple, we just need to tweak it a little bit.
Here we will right click our body and we will click mirror. Now the constraint doesn't have the same properties. so if i select the body and also simulate it then it doesn't give me the same properties I had.
So let's click on the constraint, right click it, and let's copy the properties. Make sure you're clicking on the right constraint. So this should be the right constraints, right click and paste the properties. Now it is similar. but not quite because it has not replicated the rotation of my...
not only not the rotation but also the position of that constraint so we need to at least move it back a little and at least give it the same angle and it doesn't have to be perfect, human bodies are not perfect and let's see it is it does have the same the same space to move around so now let's right click on my body here and make sure that it is simulated and make sure that it is in a good place. Let's save it and let's see what happens now. Now we do have jiggle physics working and whenever we attack we can also see them bounce.
Now that we know How to add a jiggle physics? I have prepared some examples of different approaches and it all depends on what you want to show in your game or what style you're going. So here we have absolutely no jiggle physics.
Here we have a realistic approach where we try to avoid by the laws of gravity and constraints, right? If you want to do something like this, then I'm going to open the physics asset. I'm just going to search for physics asset. And you can override the different physics assets that you may create.
The difference with the one that we created is that... Let me show the constraints. Here, in the constraints of the breasts...
We can first limit the range of motion so they are not flying around everywhere. Limit it to two or one depending on the size will let you achieve a more realistic look. And also if they are bouncing around too much maybe you can use a lower restitution.
Then we are reducing the linear motor strength. Otherwise it will try to get to the position where it normally would be but it will look a little bit unnatural. The next example is a stylized approach.
This has to do a lot with the type of character it is. with what you're trying to show in your game. It's also, for example, the character is pretty upbeat, probably all her movements will be large and quick and also this will mean that we need to pop up certain appeals of this character. So you can see it bouncing a lot more and It just shows a lot of more perkiness, which this character is very bright So it kind of matches for this approach.
This is the one that I believe we created Yeah, we already have seen that the setup but just as a comparison to the realistic approach Here are the constraints It's constrained. the limit is a little bit more, restitution is the same, but a lot more strength in the linear motor, so the movement is a lot more quick. Now, if this value is too large, you will get weird results, like it will not longer be a jiggle, it's almost like Spring, which is not a really good look. So be sure to play around with these values. And the last one is a pretty common one.
And if you have never heard of this game, it's called Dead or Alive. And if you have heard it, then you probably know what to expect. Dead or Alive...
Every movement is exaggerated. This is a... Dead or Alive is a fighting game and one of the more known to abuse the jiggle physics. And well, like I said before, it all depends on why you're doing it, how is it adding to your game.
Realistic approach is a way to acknowledge the female physiology. because otherwise if it's completely... and this movement is because of the animation if it's completely stiff then it feels like fake, fake boobs and it doesn't give a good positive image to women but the fact that it's having a natural movement or at least it's believable then it does give a lot to the experience of the game.
The stylized approach is just to highlight a character trait, highlight the overall personality and yeah you will see a lot of anime characters, a lot of cartoonish characters have this type. Maybe a darker character won't move as much. or will avoid any type of movement that will make this type of effect. And well, the dead or alive approach, what can we say about this?
I mean, it's just a style, it's just a way of highlighting a part of your game. If your game is all about sex appeal then you will probably have this. And...
it seems I forgot to show the settings for this example so let's let's show it here I open my physics asset you will see that I have increased where is my constraints here it is I will just click on one I increased the limit the limit they have a lot more room to move around also increase the restitution so they are more bouncy whenever they reach the limit and I diminished this value I use a lower value so they don't return to position so quickly if you just put a bigger value here then you will get a more tighter chest, more supported. If you put almost no value here, maybe 50, like it is in the default value, you will get something like this, like it's just sagging too much. So it's all about testing, all about checking what... which values work and which don't.
And here is the one that I was using. And then, well, here we have it. So again, now that you have this ability, be sure to analyze it. No...
Oops, what did I... Ah, here it is. I thought I deleted it. Be sure to analyze what type of effect do you want to add to your game, what are you saying with the things, otherwise it becomes a waste of time and you also can be critiqued easily.
Dead or Alive devs have always been seen not in the best light, but... if you understand the decisions behind it then you can at least try to understand and giving it some thought will also work at your benefit so be sure not to give us a bad reps as a a bad rep as a game developer and with that i will leave you hopefully this tutorial was helpful and As I said at the beginning, the community suggested it, so if you'd like to suggest more topics, be sure to leave it in the comments. Oh, and I forgot to mention, it really helps when you leave a like, comment and subscribe. And you can also become a member to get all our premium content. Okay, take care.