This project elegantly bridges the gap between rigid animation and organic physical interaction through sophisticated procedural logic. It represents a significant leap toward achieving true emergent behavior in character movement.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
[GameDev UE5] Self-balancing Physical Character Movement (Day 3)Added:
Do you do well?
Hello.
Hello team.
How goes How goes the battle?
Um music down a tiny bit.
How's the volume and stuff? Can you guys hear me?
Can you hear me?
Awesome. Poke. Hello. Hello. Hello. And Agorago. How goes it? Haven't got a Prismatica stream in a while because I haven't streamed in a while except for like I started last week streaming again.
Pardon me.
Kombucha, how's it going?
Welcome to the YouTube chat.
All right, let's get into it.
For those of you that are uninitiated in the ways of the feet, we're doing feet, but they're real.
real feet.
Amethyst, hello. Wow, I haven't seen you in forever in forever.
Why does Unreal take so long to just load? Oh my god.
All right. Where the hell did we leave last time? I want to get rid of these giant balls. No more balls. Balls are bad.
Um, so we had we had some kind of character, right?
What was he doing?
Right. He was balancing very poorly, obviously.
Um, oh, actually, no, it's play. It's a playable character, so we can lean.
Like that's leaning the wrong way.
That's definitely X forward, right? X forward. That's going X forward. So, why is he leaning backwards?
Or is it just that he's not actually even leaning?
You never know.
Let me just see if I go this way. Okay.
No. So, it's definitely reversed for some reason.
Feet base feet rotation for leaning.
Blam blam blah blah blah.
Linear. Uh, let me check the lineers.
They're also inverted.
I mean, I will need to at some point do some real calculations, not just some like, oh, it's good enough sort of nonsense.
Still a bit loud.
Um, and then the back and forth is just this for each foot position roll which is getting calculated length offset lean offsets current balance vector look at rotation blah blah blah blah blah blah. I feel like this is incorrect. Well, actually, maybe that is correct, but it's just delta rotator.
What's up, physic character? gravity plus surface regularities plus two legs balancing the forces. Yeah, I mean pretty much that um it will be like our Bbot character movement from another experiment we did.
But I feel like we kind of reached the uh the peak or like the the maximum potential of this system.
which is a self-balancing ball character.
So currently and and obviously the benefits of this is that you know it's within the physics engine. So there's no kind of like fake you know getting and setting of the position and whatnot.
Um, and it, you know, obeys all of the physical constraints and effect that you would get. Like, you know, we can we can say so long Bowser and like yeet someone if we had them on a rope.
Um, so we're like pushing and dragging things, you know, like you wouldn't really be able to program So, like for example with this this cube, you know, if I pull it from the top, it falls over. Or if I try and like pull it this way, it's like really hard. But if I try and like rotate it, it's a lot easier because, you know, the it's easier to kind of pivot things around a foot than it is to do other stuff.
And then also when it comes to I'll just move over here um combining a lot of forces.
Like for example this floating floating platform if I like move this way the platform moves that way.
in response, you know, or if I move in a circle, this will gradually twist around. Look at your chaos movie.
Isn't it supposed to do the same thing?
Kind of. I think what it's doing is more of like a a kind of like hovercraft approach.
Um, so it kind of solves the you know characters bumping into each other and like uh like physics physics objects you know physicking against it.
It kind of solves. Although this is like a cardboard box, so it kind of does that, but it doesn't do like the feet and it's still kind of really faked. Uh, it also doesn't balance.
It's not like a balancing thing. And, you know, I want characters to be able to like fall over.
you know, or to lose balance.
Um, performance is fine.
Like, I don't know how many characters these are. There's obviously some stuttering because of I'm in editor and I think the um just moving stuff around with like the stencils and [ __ ] is a bit [ __ ] But the performance on this one at least is pretty good.
It's like it's a more complex like calculation cost but then the actual moving of stuff is all done by the physics engine. So it's not like game thread based, you know, get capsule, move capsule, and then it has to notify the physics engine, hey, like the quad tree or oct tree, this thing's in this new, you know, voxil zone, check collisions against other stuff. It kind of just does that all in the physics.
So that works. Then this it's going backwards.
So that would be actually it's cuz I'm doing this lean.
Sorry, I just need to go to Felidor.
Fame if done in Unity. I mean probably maybe it depends on how Unity does their their kind of stock character movement.
Three is a lot easier to balance than two.
Yes. And four is a lot easier to balance than three.
But two is how the humans work.
the other um the other thing is we can um we can how do I how to say what am I even trying to say?
Sorry, I'm just trying to get my Runescape character set up.
What can I eat?
All right. Um, yeah. So, we can do we can kind of fake a bit of like corrective force as long as it isn't linear. I'm like I'm okay with doing fake corrective um talk forces, you know.
I'm not like I'm not against it.
Does it want me to do this? But then what's the Is that just the same as combining?
No, now it wants to be upside down.
Oh, it is just an offset for leaning current balance vector. Target balance.
Current balance vector.
Target balance.
That now it's just gone to sleep.
is going.
So, it's just completely inverted.
Why?
Why is this playing a van?
Sorry, I'm currently Just doodling with a physical bipeedal movement uh thing.
Is that easier?
I hate that it goes to sleep so quick.
Let's put a little bit.
So that is going one that way, but it's going, which is positive x.
What the hell is x in rotation?
So that's what the [ __ ] is Hey a link animation with this leg position so critical to balance existing sim. Yeah, pretty much. So, we're going to get the run animation or you know the locomotion animations and extract the foot positions from that to inform where you know what the stride should aim to look like.
Um then using the current, you know, it it'll kind of know that it's, you know, from zero to one through a stride.
And then we use that value 0 to one or whatever to then um instead of using like a play rate on a looping animation, we use a play time to like scrub through the animation based on the physical thing. So the arms will be moving in sync with the physical legs based on the animation which is you know authored to look nice.
And then the feet should pretty much be in the right position. But then we just do some IK to put the the uh the you know the the mesh's feet on the the simulated physical thing.
So, it'll be able to operate without a mesh at all, but then the mesh will kind of follow the physical fella. It'll be the same thing if a character's like crawling.
Um, because if they're crawling, then they'll become a quadriped.
Now, what the hell is Let's go break.
Let's see.
No.
Break rotator.
X is roll. Y is pitch.
Roll pitch. E roll. Pitch.
Roll. Okay. So roll is like turning side to side which is this which is roll there.
Pitch is back and forth.
So am I. Yeah. Center gravity the pelvis location.
The fulcrum center.
from from falcrum center. Well, do we want to calculate the fulcrum center? Uh, I guess that's only really relevant if we if we're doing like onelegged like hopping center gravity.
What's the direction?
And that's straight up. Oh no, that's the balance vector with physical. I got to adjust the limbs. Uh yeah.
Well, yeah, it's it's forced first and foremost physics, right?
But yeah, the mesh will just follow the the physical fella.
Is that Yeah. Know that is pointing up.
Yeah, you could say that.
I don't know why it wants these inverted.
Like there's obviously just some fuckeryish like if I did this and I said, you know, one one Put that in there.
Then go forward side and then the other side.
Yeah. Back forward.
Yeah.
Um but why is that? Well, actually no. If I go forward is that that is negative.
But like the look at rotation. Well, no, cuz I guess the in order to lean forward like this to go that way, we need our feet to go the opposite way so that we lean forward.
But then I feel like if I do this, it just gets pissy.
Like it just won't balance because something is like pointing downwards.
Even though it should just be like the Whatever this this will do.
Um, okay.
You know, let me put him back here.
No, stop. Got that button. I want this one. Okay, so we got a dude. He can kind of balance.
And then keep in mind, remember that this is with no fake forces, right? No like additional fakery.
We're just tilting the legs uh you know lifting a leg so that it can go back. There's no damping or anything like that.
So you know if he goes back you can see his feet.
If he goes forward his feet will go so that he falls backwards.
We just want to get it like as good as possible without using, you know, a uh a gyroscope or a flywheel aka fake, you know, torque.
rid of balancing bipedal robots. No, I haven't. But I probably should. But at the same time, I think I should be able to get it.
It's pretty similar to like unipedal robots kind of.
Like if you think about the think about this test.
Um, this is essentially like we're just replacing the ball, the sphere which is doing all the driving with two feet that you know, like imagine if we just stuck two feet on this sphere.
Uh, and you know, it kind of did its thing, but obviously it's a lot different, but you know, we're still trying to balance the the the concepts are the same. So, like, you know, in order to move forward, we throw oursel off balance, then we use our feet or our wheel in this case to like try and straighten ourselves up, you know?
until we're at a target velocity.
Or we keep leaning until we're at that velocity.
But then we just have the the added complexity of feet.
And I think like for the time being I'm going to let the feet clip through each other and not worry about like crossing feet over and whatnot.
Um, Yeah, I think I I think first and foremost we need a like we need to decide whether our feet.
Uh um are our feet trying to reach a target location in world space or are they trying to reach a target location in local space?
Like, do we care about the world and stuff?
I think better. Yeah. I mean, I also think local space kind of.
Well, no. I guess if we're like, let me go back to the other s.
Um, if we're like sitting here, right, and then something knocks us. Where are my [ __ ] widgets?
Do this again.
Well, basically if something knocked us to the side then we'd want our foot to like remain in the same spot like in world space.
World space doesn't feel what local space wants because you carried a trip.
Well, we do like a conversion.
But like if we're let's say we're off balance.
So I'm this guy.
Here's my here's my feet.
And then we go off balance this way.
Um, and so like our center of gravity's moved, our origin point has moved and whatever. We would want to we want to keep this foot where it is in in world space. We don't want to be like, oh, actually like this this foot should try and be here. Probably want to say, oh, yeah, no, this is good here.
We're going to take the one that's furthest from the center of gravity and we're going to do a step in the direction that we're falling over in.
Right.
Like that. And that goes there. And then all of a sudden, yeah, our center of gravity is within our fulcrum.
Um, I'm just trying to think how that would work with like if we're on a moving platform, then that kind of falls apart because it's like we're always moving.
Unless we like had a knowledge that like we were on a thing, but we might be on two different things that are so yeah know maybe local space is the way to go.
Like we want to keep our feet underneath our, you know, underneath our body essentially.
And I guess we can choose a position, target position.
Uh, Bucheli, Miss Kia, shall water thingy. Uh, it's not finished yet. No. Uh, I'm I'm taking a little break from it because it's a bit complex, but I've only just started streaming again. So, I'm taking it chill.
Just taking it one step at a time, literal style.
So yeah, let's let's think when we have this character. He's just sitting, chilling, doing stuff.
Um, his feet are planted.
Well, no. Are his feet are kind of planted in world space, aren't they?
Cuz as he moves his everything moves.
Okay, let's let's do world space.
But like in the in the event that the character is on two or you know on on physical things um we can just apply cuz like we're going to be doing a trace from the feet down anyway, right?
So you know we'll be tracing from the feet down and as a part of that we'll be getting well you know the hit component and then for that hit component we can get the linear velocity at location where the foot you know is or where the foot will be if it's like up in the air and whatnot. So that way we can then apply an offset to, you know, I guess the target the target thingo target thingamajig.
Yeah. actually that that that will work.
So I think world space is the way to go for the feet targets anyway.
It'll also just be like let's say like the character's moving forward and there's like a little rock.
It's like okay well we've looked forward. We saw that the stride was going to hit here. Do a trace from above. It's on the rock. So the character, their next footstride target is on top of the rock in world space. And as we get closer to it, you know.
Yeah.
Also, is that maintaining the height?
Is it so?
Yeah, that's the middle point.
Cool, cool, cool.
Little kick things that are too small to notice. Yeah. Yeah. Yeah.
I mean, there'll also be that that's the other thing, right? If you look at papers for like balancing bipedal robots or other stuff like that, like the aim of that is for them to never fall over, but like I kind of want characters to fall over and trip over and, you know, to be like drunk and yeah, not notice a rock or something or to try climbing over a fence and, you know, to misjudge the distance and just kind of eat [ __ ] Yeah, that's exactly right, Beard.
Just let the physics handle everything.
Uh, you know what? Maybe I will put that back in here for now.
The other thing is I want to design this to be quite um like modular.
person trips is technically perfectly balancing person with latency plus bias to the data they receive. Yeah. Yeah.
Exactly.
Like if we're using a PID controller, then you know the speed that it adjusts or like over or you know for a drunk person it's likely that the damping will be lower so they'll like overshoot or undershoot you know targets and whatnot.
Um or yeah we can create some error in you know like like the foot target. It's like okay yeah their their feet go there like in a perfect world the feet go there and then there and there but for a drunk character maybe we just add a little bit of like random offset for each foot target so they kind of like And then eventually that would lead to collapse if they move too fast or something.
And then on top of that you do um just like a random noise like you know random 2D noise for their target movement.
which is just like emulating, you know, the inner ear kind of going all funky.
Cuz like if you think that up is actually that way, then you, you know, subconsciously you lean over that way to try and not fall over, but in reality you are falling over.
Okay, Rebit, have a ripper. I hope uh I hope you enjoy the the second monitor content.
Well, okay. There's there's the target location rotation, but then there's like the target for the target location rotation.
Um, I'll call this the stride target or the plant target.
Yo, Boom. How's it going? Also, there's like a little Is that on my TV? No, that's on.
Uh, is that right?
It's an emote, but on my on my thingo, I just see the first frame of it. I was like, is that like a dead pixel on my second monitor?
Scared me.
Scared me.
I wish there was a um a data type.
That was just location and rotation without scale like a like a transform light, you know. No, I don't want to return.
What am I even doing?
Actually, no. Come back. Come back.
I want them. Oh my god. Not not right.
But then it's like, should I just use a transform?
make my I mean I could I could but Yeah. pork. Thanks so much for the resub.
Those Bezos bucks.
Bezos buckaroos. Thank you very much.
Get Yeah, that's fair. That's fair.
Yeah.
Yeah, cuz I mean you either change the P values or fuzz up the input data or the output data.
Um, should I just put this stuff in this strct?
Strs are such a [ __ ] around though.
But then I'm just going to end up with like a [ __ ] ton of like parallel arrays that are just super messy.
I also need the um the previous, you know, plant so we know where we're moving between and like how far through that we are.
But I mean, I could just raw dog it for now.
Let's just get it done messy.
The the quicker we find out whether this is a really stupid idea, the better.
Yeah, that's setting the element blah blah blah. But before we do that, we need to do the same thing but with the previous one. So, we'd want to get just get from the array, bro.
Get get and that's from the pre no I set previous.
So get the current set that as a previous.
Get the current set as previous.
So yeah, as character falls, we need to take one of the feet and be like, "Hey, you should be you should be moving forward to stabilize the character." Obviously, we don't want both feet to do it, right?
Um, so Cuz if both feet try and move forward at the same time, then we die.
Do we ever I guess when you're running you don't have at least one foot planted So, I guess we just need to pick a foot.
Well, I mean, first we have to see if we're falling over.
That's the thing, right? Is that this?
So with the with the ball with the balls with the ball it's kind of easy because it's like a stateless feedback kind of thing, right? Like we lean forward one unit, therefore the ball rotates at one unit per [ __ ] whatever.
Um, there's no like state needed with the ballbot setup.
Like we don't need to know if anything is like planted or all we really need to know is like are we in the air or not? Or in this case, how close are we to the ground? Because we can, you know, we start moving the ball as we nearly hit the ground.
So that it's like already moving.
But with the feet, it's not like a continuous thing, which is something I've only just kind of like realized.
So I guess each I guess each appendage needs a state of some sort which is like plant or well it's either planted or it's not right. like it's either planted or it's trying to get to a new planted position as a as a walker.
Um, and then with a run cycle, I guess you just kind of let them, you know, let them uh both be un unplanted.
um so that these don't throw.
Might just initialize these. Initialize all bandages.
Initialize.
Right. That's the actual positions up there.
Uh, you know what? We'll just raw dog it here for now. One, two.
Look where you tip sideways. You know which feet. Yeah. So I'll probably do the distance from the center of gravity goes first. So like if we are here and we're we're leaning over this way or like we're falling over this way. Sorry.
um we just get whichever one is furthest from the center of gravity and that's the one that should then be planted in the direction that we're falling. So get this, you know, set its new location over here based on like, you know, how fast we're moving or falling or accelerating or whatever. And then it will basically do that and catch us.
Um here it's going good. It's going good. We're just mulling over some some stuff.
So, we probably need one called planted appendage.
Well, it's appendage state.
Um, but for now it can just be a boolean which is false.
Well, actually they should start planted, right?
All right. Do we need to move a foot?
Question mark.
Um, so we need to If a foot's already moving to catch us, we kind of need to know what effect that's going to have while it's like traversing, right?
Well, I guess we can get the target of it and use the target instead of the current in terms of like the balance.
crafted. How's it going? I'm doing feet again. Yes. Yes. Yes.
That's the wrong level.
How can it be more than one?
Oh, right. Because our target isn't normalized.
this guy here.
Uh well, let's test character.
Yeah.
Should be good enough.
Bam. Cool. Or Bam. Cool.
Would I like a coffee? Yes, please. Yes, please. Yes, please. If so, what kind?
Uh, a yum one.
I know. Maybe one of those caramel ones.
I need some some sweet the red. Hello. Hello. Hello.
actually. No, the target balance probably isn't right. It's like current balance against gravity.
Yeah. Okay. So, past a certain point which is essentially like maybe here we could say like I don't know 95 just chuck a little branch down and be like, "Hey, if this is greater than 0.95, then no, sorry, uh less. If it's less than 095, then yes, we need to move a foot.
Otherwise, no.
Um, if it is Yeah. Well, here's the thing then, because it's like if we start moving a foot, we start moving that foot.
For example, where are the damn widgets gone again?
If we start moving a foot, we're leaning this way.
Here's our feet.
And we're leaning. We're moving this way. Whatever. And then we say, "Okay, we want this one to move to here.
So, it's going to move like that right to there.
But we need to know that it is going to be there.
Um, so if we just use the target locations of the feet then as soon as it goes then it's it's like it's one of those problems where it's like um it's all it's like a a circular problem, you know, like there's no real starting point.
So if we cross the the No, but then it doesn't make sense because then the lifting foot of the planted foot.
Well, exactly.
Well, I think the planted foot in this case, but Oh, don't tell me this is [ __ ] local.
Why is it local?
I know. Is that just because of that though? Like is it still No, he's just [ __ ] No, that's right. That's cuz I unfucked it.
Okay.
Let's examine Can I do this in slow motion?
Can you get in?
I didn't booby trap the door. I'm just trying to keep the hot air in. Thank you very much.
Uh uh maybe later. Thank you.
Very young.
So if we were falling here, we want to move a foot to thereish.
It's like, yeah, do we need to almost like predict where the center of gravity is going to be, which we can do.
Just get the center of gravity's, you know, current velocity and project it forward.
Let's just try this. Let's go.
feathers.
This Well, I guess the I could just check both.
Um, I mean, you know, we hardcode it for now. Let's just get both.
and then we can just see what is less. So this to that actually I can even just do distance.
Distance distance is this one greater than that one? So is left greater than right?
If it is then [ __ ] I don't know left one.
Well, no, that's the uh So, if we want to set it to Does each foot have its own stride value?
I guess it kind of does.
Yeah.
Yeah. Yeah. Yeah. Yeah.
was also the stride target values.
Is there any way we don't fall backwards when straight up thing? Uh because we're always slightly off balance forward. Our ankles are always playing a bit of force. Um yeah. So the reason that we don't fall over basically like our feet make a his feet.
There's one foot and there's a second foot.
And we essentially make a a square zone.
This is bird's eye view by the way. Um the fulcrum zone. And if our as soon as our center of gravity passes over that then there's if we if we don't move our feet um it's essentially impossible to recover from that without like moving your feet.
So yeah, by default our center of mass is kind of like here.
Like you can lean forward more than you can lean back cuz cuz it you know fulcrum zone.
This is breaking my brain.
You believe.
We need more than believe.
Yes, dude. How's it going?
Where? What's the um We kind of go like 0.6 steps per second.
And then if yes, wait is is yes if Uh, do we need to move a foot? Yes.
If so, we should set that to true. And they Yeah. And they're false by default.
Then there's nothing in here that says, you know, are we already moving a foot?
Because we're just going based on a dot of the gravity and the balance vector.
So, we need a better way to kind of like like he is the man. He is center of gravity.
Foot foot like this.
I mean, it's more just that, but do that. Then if this moves this way, now it looks like this. So, what's changed You know what?
Maybe we should start with a quadriped cuz it would be less of a fuckound, right?
Or would it?
Mhm.
I just need to like look at a character moving.
It it it sounds like it would be easier, but I actually just don't know if it would be easier.
Yeah, I mean I'll I'll definitely get there at some point.
It's just about when do I get like yeah, we really just need to start with like making character walk forward, which is basically lean this way, start falling over, put your foot We do in this example.
basically cog. Yeah.
Except instead of a unicycle, it's an omnicycle.
This was an earlier experiment for physical character movement.
Um, but I want to try doing like a like using actual feet.
like same concept where it's all physical. No thrusters, no thrust movement.
Thrusting is banned, but we want to use damned feet. But I'm just not sure how I want to go about it.
with locomotive yet? No, I don't I haven't heard of that. Um, oh, motion matching. It's not motion matching. It's it's motion creation.
Like just imagine the the character is invisible and it's like just the cylinder and the ball. So it's like a um you know basically this is how characters move around the world.
Uh you lean forward once you out of that boxy show. You slide one foot forward to be below the new center of mass and pushes upwards once you a max forward angle. Yeah. Kind of kind of. Yeah.
caring a main controller. The the animations in this one are just a simple blend space.
So it's just the you know this big yellow line forward vector is like forward backward you know left strafe left strafe right and then the rotation rate of the ball is the the speed.
So, like if I slow it down, you can see, yeah, there's no like foot sliding really because the animation, you know, is keyed for like 500 units per second and then the ball is moving 500 units in rotation.
So, yeah, just simple blend space, no like fancy nonsense.
locomot 5.7 interesting I'll have a I'll have a geese enemy inspired by prismatic shards from stardu valley no I haven't played stju valley I think prismatic is a a common adjective locomot.
Um, let's see. Locomot.
I'm guessing it's more a an animation thing. All I can see is animograph.
Yeah. Yeah.
We're We're not really concerned with the animation at this point. The animation's secondary to the movement.
Like this, this is what it will look like under the hood.
Just a dude, you know, flopping.
Um, and then the animation's just secondary to this.
I could do a really I don't know like uh Let's just do like no.
All right, let's let's just figure out how do we know where how far to step or do we just need to like Um, all right, let's let's let's go back to the drawing board.
Get center of gravity. This is fine.
That's just a helper function.
Initialize component. That's all good.
Draw debug values. Initialize main capsule. That's also fine.
Initialize appendage. That's fine. All appendages. Just all of them. Cool.
Update all appendages. This is currently setting our angular orientation and linear positions and all that for each dude.
Get pelvis location. That's just getting pelvis location.
Appendage lean offsets. That's kind of I don't know irrelevant but um the fulcrum.
All right. Look this one. Get rid of location. Just get rid of that new plant target. I guess we keep this if we're Okay, maybe maybe what we do first is we take our character character fella who keeps getting shorter for some reason. Why does he get shorter?
Oh no, I guess his feet are supposed to be there. But then why does it get offset that much straight away? Who guess?
There's always some new tool, but no basic improvement except performance setup time or stuff. Still a nightmare mesh and Yeah. Yeah. That's just unreal in general, right?
Um, right. Let's just Do I really want to [ __ ] make like a gigruct? I hate gigrs, but it might be necessary.
Or should each appendage be an object?
But what's the point of that? They could just be struck with a manager.
Although it would be easier to maybe just ask each leg or each appendage to update itself and then to check, hey, I'm supposed to be going here and you're supposed to be staying still and that kind of [ __ ] So, I have like the the walking manager.
Um, the walking manager tells the legs and hands and whatever where they need to go or what to kind of do and then they kind of manage the lifetime of each step and [ __ ] Um, PFI really sell my performance as everyone says in terms of when you're actually playing the game. No, it's I don't think it's the engine at all. I mean, there's some things that are a bit like funky, but 99% of the time when a game doesn't run well, it's because the developer doesn't know what they're doing or just doesn't care enough or I don't know, Unreal kind of encourages is not bad optimization, but like it's easy to go overboard with Unreal. Like you just tick all the boxes of like make game look good, then you can end up with Yeah. like a stuttery mess.
But I don't think it's like a property of the engine. I think it's just like the the engine makes it easy to not make the optimal decisions or to kind of be lazy and video is paying AAA dev to unoptimize it so people are forced to use the LSS.
That sounds like a um like a threat interactive conspiracy.
I should just make a gig struck, right?
Yeah, I'll do that.
All right. What the hell does our appendage strct need? We need a a target.
You know, I'm just going to use transforms cuz like seams, you know, target transform.
Um, target stride. Oh, it's target plant.
Target plant transform.
We need a previous plant transform FPS in post. Yeah, exactly.
Yeah, that's a that's a good point.
Importon. That's I I kind of like to do the same thing like whenever I start Oh, [ __ ] A new session.
Um, you know, disable nanite, disable lumen, disable virtual shadows, use just the default directional light set to movable, and the default skylight set to movable.
And just like that's it.
Set it to unlit me.
Just realize this isn't even casting shadows. There we go.
Yeah. or forward shading can be I I find forward shading a little bit too limiting for all the like stupid shader effects that I like doing.
Isn't unlit gen? Yeah, that's so unlit, bro.
Target transform. Target plant transform. previous plant transform the stride stride value. Well, here's the thing, right? If we if our foot is trying to get from here to there, but it doesn't.
Do we need a P controller on that? Or do we just kind of say like get the [ __ ] over there?
And if you don't, you just eat [ __ ] Video how to get that packet 100 reboots down to 100 mega 100 megabytes.
Yeah. Yeah. That sounds lit cuz Yeah. Like you have like a cube in an empty map and it's like yeah 2 GB. Let's go.
Um, stride, what would you call it? Not stride rate, like the how far you are through, like from zero to one. What's that? Stride value, stride percentage, stride uh factor, stride fraction, stride completion.
stride point. I feel like point alludes to like the location, whereas I'm I'm thinking like, well, stride length would be the actual length, the physical length of it, but I want to know how far between the start and the end are we? So like you know zero let's try progress you know. Yeah. You know what progress makes more sense.
And then are there any how far have we strided?
How much further must we stride?
Um, I'm just trying to think. Appendage state.
Is there is that an enum or is it just a boolean?
Cuz like what else could it be doing?
I guess like if we're crawling and one of them is busy, you know, like we're holding a torch but crawling. So, we're using three instead of four limbs.
So maybe that should be an enum. Let me just say I mean, you know what? It's probably easier.
easier to kind of, you know, so add a numerator. Well, this is planted.
This is striding.
And then another one for like busy or occupied.
or severed. Yeah. Like if you're missing a leg or like if an animal's missing a leg, then it has to kind of know what the hell it's doing.
But I think that counts as occupied.
If it's missing, it's occupied.
Um, all right, let's reorder this. So, we've got the leg joint, leg collision, foot joint, foot collision, appendage, max length, cuz they're kind of on pistons.
Yeah, the target trans. So let's go appendage state first.
Target transform target plant transform.
Let's go stride progress here.
So appendage state then the stride progress then target transform target plant transform previous plant transform.
Right. So then we can move all of these.
Huh.
What's she doing?
She's just sitting.
I'll come have a look at her in a sec when I we all right. Let's purge all of these variables.
Um, all right. I'll be I'll be I'm back.
All right.
Let me just All right.
All right. So, if I if I lean forward, I'm like going to fall over. Well, here's the thing, right? There's a difference.
getting knocked this way and then putting a foot out versus intentionally.
It's almost like um we're trying to keep like we're trying to keep our our foot positions reflected around our center of gravity.
Right?
So, as I move like this, my foot goes out slightly, but then as I, you know what I mean? Like we we we're always kind of trying to maintain the same angle like But then how does that go when we're like running like Well, yeah.
Then obviously when we cross Maybe that's more like to do with the the length of it.
The other thing is that the um the plant target can change as we're moving. Like if we're walking forwards, but then we want to kind of go off to the left, we can like our foot can start going forward, but then then go to the right slightly.
So setting vintage new plant target shouldn't necessarily set the previous to the current.
Also, I just want to real quick, uh, let's just disable this, the leaning offsets, but that would be related to the velocity you want to Yeah. Yeah.
So yeah, this guy's doing nothing to now which is good. Although he will always fall backwards because reasons lean forward.
That does the opposite.
You know what? We'll keep this balancing.
He needs to have some balance first.
Google. All right. All right. So, that'll lean forward slightly.
And then if we just hit target balance forward.
Uh, what's forward? Is X forward?
It is he will try and go forward and when he is forward that's when we need to be like yeah this should go there.
This looks hard. It is.
It's uh quite hard.
[ __ ] love this this track.
Mhm.
Come on.
Huh?
I think All right. So, let's do just like a kind of random flip-flop.
Let's just do timer by name.
And we'll just say every every 1 second looping. And then custom event random stride target or I mean it's random plant target.
Uh which should be an event actually. Uh sorry.
You know what? [ __ ] it. Whatever. This will call an event.
So set appendage new plant target.
It should be called start appendage new stride.
And this should be an appendage strct.
pleation plant rotation.
Well, this should be the new or like the Yeah.
Why you should right and I guess we we'll just do a flip-flop nice and raw. or you know let's do it like this.
So we're just going to flip and flop that.
Then based on this value we just to int.
So we get a zero one from that.
Start appendage new stride.
The appendage is from the appendage array. Get ref of that. Bam.
New plant location is just going to be um let's do a new one called trace.
Uh what do we call it? Plant trace.
at location.
line trace by Chanel. Uh, you know, we go objects ignoring actors. Get no, [ __ ] you. Uh, make get owner. Bam. Bam. Ignore yourself.
So it'll be location plus fitty minus fitty.
That's your start. That's your end.
This is make array world stat. World static is good enough for now. [ __ ] it.
So then we're going to do trace. We're going to hit a thing. I should probably do a sphere trace out. Hit break. Bam. Bam. Get the impact point. return impact normal.
Uh, probably a boolean for like if it [ __ ] up.
Found suitable. Question mark.
Blocking hit. Yes. All right. Plant trace at location. location is just going to be the current uh can I break that put collision get location get put location then we're just going to add random vector or hold on random random.
You know, we'll just do a make.
We'll go random float in range.
Um, we'll go like 50 to 50 for both X and Y.
That's a new location.
We'll do a trace and then it'll get the actual height of it. That's a new plant location.
New plant rotation. We could just just [ __ ] with it.
You know minus 10 to 10 in the your duration. All right, let's just see if it is doing.
So, should we be getting random things?
Yeah.
Cool.
So, that's just selecting a random thing for each foot.
Now, we need to progress strides kind of. Well, no, no, hold on. Um, start appendage. New stride.
Start appendage new stride needs to take the previous plant location.
No, set the current as the previous and that has to stay there so that we kind of know where we're ending up.
Unless we're like in a like on a moving reference frame, right? Like if if the ground underneath us is moving, then we just need to offset all of our previous and new and everything stuff by that amount. Yeah.
Um I'll be right back. One sec.
I'm back.
There's a cat.
She's behind me.
Um, okay.
So then let's break this.
No, no, we set me, right?
Oh, so this should just be a new plant transform.
need your help right now. How do I flee the country?
Uh, which country? Which country?
I think just get on a plane or a a dragon.
Hopefully not north. Yeah, that's true.
That that would be quite difficult here.
I get world transform.
Well, I guess that's more like the really don't even need to do that. That just happens.
Set advantage. New stride. Get this. Set members.
Strike progress to zero.
Target plant transform as this.
I can set to zero.
Previous.
Uh [ __ ] How do I I need to get I want to get the So when we start a new stride, we need to just set the current.
Is it just the current target or is it the current? No, I guess it's more the current current.
So like foot collision get world transform and then that gets set as the previous plant transform target becomes the target plant that gets set to zero target transform is Well, that just depends on the stride.
So that's start appendage new stride then progress strides. So stride rate.
We'll do like one one per one.
You know, we'll do we'll do it a bit faster than one.
Give it a bit of time.
So then for this guy essentially we want to break.
We want to get the previous plant transform. And essentially they just like lurp between that and the target based on stride progress which the stride progress should probably get done first. So for this appendage, yeah, well I guess if appendage state equal uh striding just so we can not do a bunch of logic.
Cuz yeah, the target transform and the actual transform are different because it's a physical thing, right? Like if the physics gets interrupted by something, then we're kind of [ __ ] or Yeah.
Um try progress. So with can we do like set No, no, not that. We want to set me set memes stride progress as this well as the previous one plus this new dude.
We also want to use that as the alpha in the lurp from the previous to the target.
And then that would become the new target transform here.
Although no, this is this should be target plant transform, not the actual target transform.
Cuz these two here shouldn't change, but this one should unless we adjust the end target.
like on the fly.
Uh so then well if false then we shouldn't even be doing anything.
Um, so all that's doing is adjusting the target transform progress strides.
Then the other thing we need to do is update appendages which should well update the appendages. I guess which for each appendage we need to break and we need to do some [ __ ] So, like if we wanted So, this is where it's going to get hectic.
So, we need to get foot joint. Well, we kind of need to do some like IKish Cuz like if I say leg joint uh linear set linear position target that's in local space that's like how long do we want the legs to be? So like well compared to their max length. So zero is stay where you are but then like minus 50 means he'll be like crouching be super small very small bean smallest beanisk or if it was like a hundred he would yeet up into the sky like Uh, where's this print string coming from by the way?
There's always one. Yeah, [ __ ] off.
Little prick.
update appendages.
Let's say um move appendages to targets.
So, this appendage has a leg joint, and that's how long we want it to be.
We have a foot joint. The foot joint doesn't do any of that. This also needs its angular set. angular orientation target.
Just um split that.
And then we do the same here for the foot.
Then we just need to do a [ __ ] ton of maths.
So if the feet were set to like 45 then feet will twist. Oh [ __ ] Right.
[ __ ] What was it? Was it alt s to Yeah. simulate? Yeah. So that twists them 45° that way. This would be like that.
And then the other one would be the roll side to side like that. But then keep in mind this is Yeah, it's local space, right?
So, I might um for now, just for the sake of like making this easier. I might just like add component by class physics constraint component and just like oh no it'll be a physics handle.
physics handle component.
Uh, set [ __ ] target location and then also like set handle.
What's like how do I grab a thing with the physics handle?
It's not like attach. It is grabb component at location. Grab the specify component. Give it a location.
Does not constrain rotation which means the handle will appear to about grab location. Yeah, that's fine. Oh, I guess I can go grab component at location with rotation.
Yeah.
Um, cool. So, we can just say get the character [ __ ] capsule at the get location plus fitty.
And then that Oh.
Uh right owner.
So that should just kind of almost like hang our character.
If I do it like here maybe has a very strong rotation.
Maybe I'll do it without the grab component at location, not location with rotation.
Junior gamedev while you were gone. I did not. I was full-time house dev.
Okay, cool. So, now we've got the character just kind of stabilized on their own head.
So, this will just make it easier to set some You know, just so we don't have to contend with gravity and friction and [ __ ] We can just be like, "Hey, character, try move your feet over here.
Although, now that I think about it, maybe I should have done with the rotation just so it doesn't like flop around while we're thingamajigging.
Yeah, that probably makes more sense.
Hopefully no house dev clipping issues.
True.
Actually, Amethyst did fall through. She did clip through the floor one time and hurt her ankle.
Use any AI tools? I don't I don't really have any use for anything currently.
That being said, I'm not inherently like anti- AI like hot take.
Hot take, you know, hot take AI might be useful at some point.
Oh, what you you guys using game engines?
You guys using game engines? I'm [ __ ] coding my own game engine. You Why you play You use a game engine. You're not real game dev.
So why you using blueprints?
please.
Oh, you're uh Oh, you're recording to a digital audio workstation, huh?
Wow.
Could use a viman language. Exactly.
Exactly.
Yeah. I think the I think the AI currently AI is more of a hindrance than a than a help in a lot of sectors.
But I don't know. I I don't I don't want to say I don't have sympathy for people getting replaced by AI, but like you know o o adapt and overcome It's like uh people think that like warehouse robots are like automated factories. It's like but now we can't like sit in an assembly line and peel potatoes 8 hours a day.
It's like well [ __ ] who like that's a that's not a bad thing.
It's not a bad thing that we don't have to manually peel potatoes for eight hours a day.
Like the the potato peeler can find another job or you know if you have a competent government they can provide welfare for the people that have had their jobs replaced and need retraining.
They can provide training.
Been trying to research AI CB enemy for my space RTS but surges only show uh machine learning not behavior. Yeah, it's it's annoying because when you think like like it's it's muddied the the search pool. It's like um like oh yeah I want to I want to make some AI for my enemies and all you get is like yeah deep learning deep learning physical character reinforcement training blah blah blah.
It's like, no, I just want to be like based on what my enemy hypothetically could see, come up with like a counter strategy and, you know, I don't know.
But yeah, um, look into if you're in Unreal, look into state tree is kind of the new, I guess, paradigm for um or or you could build your own. That's probably what I'll end up doing at some point is building like a decision making matrix.
It's It's being buzzworded to hell.
Exactly.
All right. I need to I want to do draw debug values.
And I want to do four every appendage for each on 52. Not against state trees and new.
I think they might be or you might just need to I'm on 55. I mean, I haven't used state tree, but I just know that it's sort of the um the the the followup to behavior trees. Behavior trees were a bit funky or like hard to modularize cuz of the the blackboard. Like the blackboard needs like absolute values kind of baked into it in a way.
Whereas I think state tree is a lot more like open-ended like usable for a lot of different stuff.
And you can have like state trees within state trees within state trees that can kind of like talk back and forth.
Am I from the US or? I'm from Australia.
I'm from Australia, mate.
You call that a knife?
You call that a knife, mate?
That's a knife.
Criy.
Criy. I've been stabbed by a bloody stingray.
You're the two countries.
Exactly.
Yeah. Exactly.
Exactly.
And I mean like that that'll be the same like you look at um like artists. I mean the only people whose job like only artists whose jobs are getting replaced is like you know corporate like art as a hobby is still you know it's still a thing. I mean, I don't think any kind of AI like image generation has like actually replaced jobs.
If so, it's like the the lowest effort things like, oh, I'm I'm doing a a PowerPoint doing a PowerPoint presentation to like pitch an idea to my corporate overlords.
I'll just get AI to like do a cover photo for it or something instead of like hiring someone.
But I don't think like I don't think like League of Legends are using AI to make all the character portraits and stuff yet. Not yet.
But it's like once AI is every like everything's AI like you know houses get built using robots and AI it's like okay well now the builders don't need to work and like once everyone is like okay well none of us need to work or like we don't need to work as much or work as hard then it's like people that are doing art as a job can then just do art that they want to like as a hobby like instead of you know draw this for me I need this do feedback loops and [ __ ] you can just like do art for art's sake with like you could build a cabin in the woods for buildings's sake or peel potatoes for peeling potatoes sake.
I think everyone's just a bit afraid because it's like AI on the surface is really good at doing like creative things, but it's just how it is currently because, you know, they were doing like video and image convolution horseshit.
and like language models. But like the thing is with language models is that they are it's it is like a a local maxima.
Like it seems really good at doing some things, but it's like it can only go so far because it doesn't have any it doesn't actually know anything. It's just like, you know, regurgitating words until it matches, you know, a threshold of correctness or, you know, reward function, but it doesn't actually understand anything. And you can kind of fake understanding by like doing it step by step, you know, the the reasoning [ __ ] but like in the end it's still just looking at combinations of letters and then spitting out a combination of letters.
So I think I think large language models are sort of a dead end and like people will keep exploring it and trying to get the like the most juice out of it but like you can only you can only squeeze a little lemon so much.
Um so doing emergingly diva things are happening as something unsolved really useful. Well, yeah, that's true. But it's still I feel like because maths is, you know, patterns, but just because it's like solving problems doesn't mean that it understands the problems.
like it it can get the right outcome, but everything up until like up until that point is just like textbased.
But I mean, you could think of it as like every letter is like I don't know, we we kind of think with like words and images and like senses and I guess you could say that if the AI even if it is a large language model had enough parameters that it could, you know, it's It's like it's like the the clockwork brain kind of thought experiment. If you like had all these clockwork parts in an infinitely large box and you shook it around for an infinitely large time, eventually all of the the, you know, the gears and the the cogs and the shafts and stuff would all come together into like some kind of sentient thing.
you know, so I guess you could kind of say the same with like a language model, kind of I don't know. It's it's it's weird, but it it still doesn't understand.
Like, it's very easy to find gaps.
Like I think I watched a video about this guy trying to oh actually it was an image model but just like you know trying to make it render a full like a a glass of wine that was full to the very top like almost like overflowing out of the wine glass and it just like couldn't like couldn't couldn't fathom that that was a thing.
Like it it couldn't understand the physics of a cup and a thing in it and then how to you know but obviously that's like a training like a training set issue but you could run into the same issues with LLMs.
Yeah, different gaps but like the same kind of example or type of example.
Hey, Amethyst, could you turn the volume down a tiny bit? I can just hear myself echoing.
But yeah, I I don't know. I can't see myself really using AI for much.
Maybe like when like 3D I mean I haven't I haven't gamedevd for like a year. So, like maybe doing like base mesh generation with like a 3D, you know, like spit out like a, you know, I need like a character's face that has like a big nose and get it to just like chuck one of them out and then, you know, retapize it and texture it properly and whatnot.
Yeah, I don't know.
We'll see where AI goes.
But it is inevitable. It's inevitable that it will just um take everything over.
supervised using cob bladed codeex or something probably um I'd probably use it instead of using Google, you know, but I'd also just rather like ask a person.
I think it depends on like the novelty of the idea like the um like is it like a known problem like oh yeah iterating over 100,000 entities you know what's the best way to do this blah blah blah then I'm sure you know an LLM can give me the answer to that cuz it's like a pretty wellsolved thing.
But if it was like, hey, uh, you know, hey AI, what's the best method for programming a uh, physically based bipedal uh, character with extending and retracting legs.
you know, with like a two joint walking character self. Do you know what I mean?
Like where where would it even start with that? Because I feel like an LLM would be like, "Oh, yeah. You just like get the uh you get the capsule location and you like and you and you add the velocity and you set the new location."
I like, "Well, probably not. I don't know."
Well, yeah. You know what? You know, I could Is Claude Do I have to like sign up for [ __ ] You know, let me go.
Um, what's it called?
Do I have to sign in? Can I get like a free token or some [ __ ] Cuz I just out of my Yeah, that's that's true.
You know, I'll I'll I'll I'll type it in here and someone can put it into their thingo.
There is a solution to this, but you want to steer it towards machine learning and robot sim rather than gaming. Well, see, I I don't want it I don't think we need machine learning.
The the thing is right with like a machine learning, you know, physical character um they're usually doing like a full character like every bone whereas I'm just interested in a simplified torso.
So, arms, torso, head is just a capsule.
And then simplified feet, which is just like a a pistoned, you know, like like a almost like a Raymanesque thing.
Um yeah, but machine learning cuz like if it's machine learning then you know running like a hundred of them at once is kind of like not feasible because it would just take up too much memory or too much too much juice.
Whereas doing like a a basic like Pont controlled doodad, you know, similar to what we did previously where it's like for a given input of you know given input of current you know up vector the gravity vector current velocity what is the output and then you know just doing that like no no no machine learning needed cuz like this this works dec but you know uh the only body then the uh then the actual brain yeah okay okay cuz yeah like in essence all we're doing is this like what I've already done except instead of the the ball instead of balancing on a ball. We have feet, little feet panels that go in circles.
And then the other thing about doing it in a game engine is like at the end of the day, we can just we can just add an arbitrary force that corrects it to be upright.
But the more we do that, the more it ends up feeling like, you know, Gang Beasts or Exanma or Grand Theft Auto 4 when your character is drunk and that kind of stuff.
like we want it to be 90% of the way, you know, completely like real and then we can just like correct it cuz obviously, you know, humans balance.
H humans have had the uh like big training data for like thousands of years.
All right.
Please write me a Python script that deletes a default key in Blender and adds a fresh new one every time I open Blender.
Based debug arrow.
debug arrow from.
So this is like a Well, I guess we can just go from here.
Just break that.
Break that.
From previous to current line color, green. Green is go. So, yeah, we green.
My daughter learned to walk in a fraction of that time every two years or so.
Yeah, that's efficient. Efficiency.
So we are drawing debug values but we're not random plant target flip flop.
And that just flips between the Yeah.
Start appendage new stride. So when we start appendage, new stride, we get the new plant transform estimate.
target and previous plan. And that's doing it.
Wait, why isn't it getting Why are we getting green arrows?
Maybe I'll move towards world origin.
Oh, world origin is down here.
Let's just uh get ourselves right here and then move slightly away from it.
Okay. So, this not updating because strcts sucks.
Oh, yeah. Let me let me have a geese.
Each leg, physics handles, upper leg, lower leg, knee, foot. Okay.
Physics constraint actor. Well, physics constraint component.
Goifies a line trace from each hip straight down. Does a short forward cast. Finds a floor normal. Set the target. Foot position. Leave extension mount height. M distance clamp. You lur towards the target rather than snapping.
Spring field balance control to the support polygon. The convex hull of the active foot contact points.
Support the fulcrum polygon. But corrective torque that's also using add torque in radian. So this is this is fake force but yeah monitoring when a foot position drift on a threshold from it plan position when it does lift that foot forward position then reand natural.
Yeah. I I mean, yeah.
Yeah. I mean, it's not it's not like it's not too off.
It'll be like a Yeah. I mean, if someone had no idea, that is actually a pretty good starting point.
Do I have to send pass by reference? You [ __ ] You cheeky [ __ ] There we go. Okay, now it's working.
Cool. Um, I need to pee.
Yeah. Yeah, that that's that is true.
Like I mean I just gave you like a kind of random halfthought example and it sped out something pretty decent. So yeah. Um yeah, I'll be right back. I'll be right back.
Hello. Hello. I'm back. I'm back.
Anyone seen the ending of The Boys? Sh.
Don't Don't SP. I haven't even started.
I haven't watched season 1. I haven't watched episode one, but I've been told to watch it.
go pretty great by uh pretty great now assuming you know enough to be able to prompt them properly. Helps to give a reference photo to shove into the beginning of each chat. True true minds go prompts to say something as I check for notes. Leave yourself notes when you learn or discover something. Update existing notes when you approve. Yeah.
Yeah, that's a um a pretty solid approach.
I think I think yeah like you kind of need to know sort of like when they're when they're talking [ __ ] you know you need to be able to differentiate You know, I might even do this um the capsule and do it just based on that. Get world location uh you know minus some amount instead of using the leg just so it just so we're not cuz with the current way it could just wander off really easily.
Where the [ __ ] are they going?
Uh perhaps you'll get world location.
Yeah, exactly. Corva, right, that's our trace there. So it just needs to go down more.
Okay, now they are hitting.
You know what? We'll go down even a bit more. 100.
That's the tedious part of learning where you don't even know what question to ask or where to start. You can examine the output your heart's concern is very fruitful. Great learning tool.
However, you slice it. It will make you stupid for copy paste machine if you're not aware and cually counteract the subtle influence on you intend copy paste zombie. Yeah. Yeah.
But like I mean is he controversial? Can a question be controversial?
I mean, I guess, but like is it such a bad thing if people are copy and pasting [ __ ] from AI if it works?
You know, aside from like security flaws, but then at the same time, you can use AI to find security flaws.
in the way that a human can make a security floor and then a human can find and patch the floor as well.
But again, it's kind of like it's kind of like, well, is it such a bad thing that we don't have to like drag a hoe and plow the fields manually?
Like, was it such a bad thing when we started getting like animals to do it for us? And then was it such a bad thing when we started getting tractors to do it for us? And it's like I don't know.
I think it's it's best to just keep an eye on it, keep up to date, but just like Yeah, exactly.
As long as you're not forgetting how to think.
But then again, do you need to know how to think?
That's true, Buzzy. That's That's very true. Like, if you're doing I mean, that's the thing. Can can an AI like once something starts to scale up into this giant interconnected thing, can the AI like comprehend it properly? Like it it can tell you what like an individual thing does or it could write a you know individual functions that you assemble into this giant thing.
Uh right move appendages to targets.
This is where we get [ __ ] So the leg joint let let me just do leg joint get world location everything with just asking for stuff it would be a mess. Yeah. Yeah. This is cuz asking to refactor things. Yeah. Yeah.
Two or three onions. Do you three onions amethyst?
Three onions.
Let's just see if this uh Okay, so that does do these. I wonder do they can I do I can do debug draw debug coordinate system access location access rotation get rotation.
Okay.
And then if I rotate you.
Okay. But then if your leg cuz that's the joints.
Oh, actually what's that doing?
Let's do Can I do scale 20 thickness two?
Um, set angular orientation target to 90.
Okay. No. So, that is on the capsule.
It's rot. Well, I mean, its rotation is the same as the capsule though, so I probably don't need to Can I do like relative or like get now? That's relative to its parent. I guess I just have to do a transform.
Yeah.
Okay. Okay.
Uh M new when velocity for simulation. Should I take them from blueprint? Draw a capsule from or Niagara collision query. Find this point rotating object. Retrieve velocity for simulation.
taking the Drew uh blueprint is a collision.
Um what what's like the the effect that you're going for? Is it like a uh let's say you've got like a character and you're spawning particles? Let's let's say you're spawning dripping water on a character and you want the um the water to have the initial, you know, movement of the character as its initial velocity.
or is it for?
Yeah, if you describe what um what you are what you're trying to do, that might be a bit clearer.
But you can do some stuff in Niagara by you can sample the mesh and the velocities of the mesh or the velocities of the bones of the mesh directly in Niagara to do that. But then I'm not really sure about collisions at that point.
So, we have target transform, target plant transform, previous plant transform, and then I guess we have the it's in world space. So I guess in general, right, if we want Oh, they disappear. [ __ ] thing.
Well, back to paint.
Um.
Ow, my eyes.
Let's think if we have a joint.
And it's a a prismatic joint.
Get it?
And a foot. And we want it to end up, I don't know, here like that.
So I guess the first thing is get the just get this to that location which involves I guess it's just look at get it to look at the target and then retract the leg based on what the distance from here to there pretty Just what the AI said that Ca sent me.
So there's distance from hip to target is the target length.
Now the rotation is just a look get look at Look at rotation kind of.
So we get leg joint, get location, world location. And we can just do a distance distance vector to the target transform location in world space.
And we can clamp that.
Uh oh, that's a well we have the max appendage length which is the default.
So essentially want to do max appendage length.
So like 100 Then what is the distance?
It's cuz it's like backwards. It's kind of hard cuz like this is zero here.
the max length is zero and then anything up is minus you know minus 10 minus blah blah blah.
So we know that if it is whatever the max distance is 100 let's say then it's zero. If it's less than that, then it's yeah, max distance minus that amount.
And then we clamp it between zero and well actually no it should be negative negative max length.
[ __ ] Yeah.
Can you do a negate flow? No, that's a just multiply one.
That's the min and the max is zero.
Where's the um Oh, no. It's gone.
So, that should be our linear position target.
And then the orientation target is leg joint rotation.
[ __ ] Look at rotation.
Create a local rotation for an object with start transform to point at target location.
Find a local rotation for an object with start transform target location relative. So that should be okay.
from the leg joint. Get transform.
Target location is our target transform location.
That gives us a dude.
And then we don't want to [ __ ] with the yaw.
We just want to explore. Right.
Let's see how cursed this ends up.
It's beautiful.
Let's um not do this for now.
Let's just deal with Can I hang you up a bit higher?
He confused.
Well, actually, so this is between get uh If I if I anchor the fell in place.
Why he do that?
Why? Why you going that way?
when we start appendage new stride that is setting it and doing that because the the debugs all um update and this doesn't care about the state currently. Well, it should never care about the state.
If I just did like uh just like uh access clamp.
This should just give us a random XY per target.
Nothing.
Yeah. So that's like 45 - 455, right?
And then this is sideways.
Sorry, that's twist. And then this is sideways, side to side.
So, we just want it to point at uh Okay, let's let's point it towards the planned transform for now.
[ __ ] nothing.
Is it just because it's going to sleep?
All right. I do it all in here, don't I? I initialize.
Um, can I set sleep to No.
Oh, it should just be the the big guy.
capsule.
Character capsule. Let's sleep.
Uh, threshold.
Simulate.
[ __ ] it. Whatever.
Mhm.
H.
Okay.
It's here. Look at relative look. This is probably what it should be.
And the target location is this.
Probably needs to be like inverted or something though. Or um is it called?
Yeah, invert.
Okay, it keeps going to sleep.
It's almost there.
We're beaning. Hell yeah, brother.
I can't wait for some nacho.
Yeah. Is beaning a double N?
How can I stop this from sleeping? I guess maybe just applying a force to it every day.
Yeah. So, as long as I'm always adding a force to it, it'll stay awake.
Okay. So, we need these to go that way.
So, what is going wrong?
Find relative look at rotation.
I think we just need to do um just look at rotation.
from here to there.
If this guy is already, let's say he's like already 90° that way.
No. No. What about um 180?
Although I don't know why it automatically goes like 45° or sorry. Yeah, at the very start it goes 45 degrees. Is that because it's going to zero?
But then after that it should be fine, right?
So, I know it's going to be something dumb like combine the inverse of that and the current dude and then that goes to there and then That is our stuff.
Or hold on, hold on.
Let's use the capsules rotation instead of these the joints cuz they just seem a bit [ __ ] up.
What about Delta? Oh, what about combine the other way?
Whoa.
Also, where's world origin again? Right here.
Well, if anything, they should be pointing that way.
initially.
No, that ain't it.
Oh, [ __ ] [ __ ] Let's say the target was 0000.
Fine. Look at rotation 0 0.
So, we want them to point at world origin, which is right there at the start, which they're not doing cuz [ __ ] a bit higher. So you're hanging. Yeah.
Maybe not that much.
Okay.
So from the leg joint find the look at rotation.
from here to there is that but that's yeah if it's in the default configuration So then it should be saying rotate in X some amount like what should be like 45 sorry X It should it should look something like that at the start.
So when we actually get find look at rotation we print sting.
What do we get?
We get pitch your R is zero.
That makes no [ __ ] sense.
Do you want me to Hello. Hi.
The pitch is correct.
I'm guessing it's some [ __ ] up like the pitch goes into the roll and the and the roll and the yaw goes into the pitch.
Not quite.
Uh, let's just try that for now. Pitch into [ __ ] then.
Okay. The inverse.
What the [ __ ] is happening here?
I'm also going to just turn the strength down to like 3,000 and 3,000 and 3,000 just so they're not like totally skits out.
All right, let's go from the top.
What if I just did the [ __ ] Look at rotation. What if I just did them the the other way around?
There's always just like some random like offset applied.
Hello my girl.
Trying to sit.
Good. Scritchy scratchy.
Uh, I'm not winning. Not currently.
Thanks for the uh the bigger stretch.
Was there another good smelly ear?
Um Chicken.
You looking at Is it funny?
I will get it right. Craft. I I I believe I believe I just need to I I was thinking right.
No, no, let let me just let me double check this real quick.
So the pitch if pitch goes 45 set angular orientation target, right?
And this is default rotation blah blah blah blah blah. If the pitch, which is the green boy, goes that's like the negative direction.
That's the positive direction and that is relative. So that should go back. Yeah, that's going that way, which is the negative direction.
That's a positive direction.
So it's almost Well, no, cuz it's like upside down.
Well, am I No, I guess in a way it is kind of like correct cuz it's like that's No, no, that's You know what I mean? Like this on a new plugin. Uh maybe maybe actually learn your pitch roll down the lighthouse rotates on the your axis. do a barrel roll for roll and pitch is the one that doesn't do those other two.
I mean, there you go. Your lighthouse.
It's good.
Yeah. Barrel the roll is barrel roll.
I mean, look that. Yeah, it all checks out.
I just don't understand why this is You know what? Let's Let's just do one foot for now, right? Let's go random random [ __ ] Let's just do this. Just one of them.
Why does this one All right, cuz it gets an initial thing.
Um, maybe that's what's [ __ ] it up, actually.
Initialize component.
Initialize a bandage. Initialize a bandage.
Um, maybe I'll just do this. Bam. Bam. Bam.
Why do they go 90° straight away? I I just don't Well, actually, no. What's it? What is it trying to reach?
85.
This guy's staying at 85 because why um am I doing so initialize all the appendages?
Initialize appendage. Or was I doing that in some other dumb place?
Where is the location? Start appendage new stride impact point location make transform startage new stride getting and that just does this which is just getting the previous is that and that's that. The new one is a random thing I return. Okay, initialize plant targets isn't even doing anything. It's not even being called anywhere.
And let's just do instead of for each, we're just going to do get one. We'll get zero.
Get number zero. Do this. Do that.
So, only one of them should be updating, but nothing's plugged in.
Why is it that at the very start it's like It kicks out. Why? Why does it do that?
Why are you doing this location? Let's just The [ __ ] is this at the start? This is the leg joint world location.
That looks reasonable, right? Y Z here.
The plant transform is just there. So then Why is the yaw or is that just a bug?
I'm pretty sure it's a bug.
Like it should be roll pitch your do you know what I mean?
Like the roll shouldn't I feel like it's just mislabeled. Am I crazy to think that?
Pardon me.
This is the buggiest things I've ever dealt with in the engine. They do a bunch of localized reference frame transform nonsense that will sometimes only be cleared out when the component is initially created. And it's so dumb.
Yeah, that's I'm I'm getting that.
I am getting that.
Okay. No. So, it's saying that the roll is actually zero, right? Cuz this is trying to You're [ __ ] You're [ __ ] Like if it's here, location's there. Okay, you know what?
No, let's just do rot from Vector.
Well, we we need to get the target plant transform this guy minus this guy normalized.
No, [ __ ] off. Normalize, you [ __ ] Normalize. So now we have the vector between the guy, the leg joint and the guy.
Then we will rotation from I don't [ __ ] know. What do you mean from axis? Well, now we're just going in the [ __ ] Well, the forward is capsule.
forward.
I've done this before forward vector. The right vector is the the right vector and the up vector is the I guess it could just be the up vector, but Well, yeah. No, it is.
So, this is completely Wait, then what the [ __ ] am I trying to do?
Just rotation.
Uh, just from X. I don't [ __ ] care.
Just Just give me something.
I don't care about the Z.
Still no roll.
I hate rotate. Rotations are just not It's just not fun. It's just not cool.
It's just not swag.
Can I just like move all this [ __ ] down?
Just like just get out of here for a sec.
Get out of here.
If I do right, this will be this will be a good a good thing. Let's do a a debug arrow.
The line start is the leg joint.
The line [ __ ] end is going to be this multiplied by some length. We'll go 200 just to really [ __ ] make it a long boy.
And plus the plus the start.
That's the end. Arrow size 10. Thickness five. line color orange duration one tick. Cool.
So, this should be pointing a big fat arrow uh in this direction.
Yeah. So wherever the green line is, this will point towards that. So all I want to do is make this joint rotate by that amount. So what does that like? I want it to like for that thing from here. I want it to move forward and to the side. No, no twist and [ __ ] There's a hole in the center of the Earth and you could somehow exist inside it. Would there be any gravity? Uh, it depends how hollow it was.
Is it like is the Earth kind of like a shell or is it like the Earth but there's like a a little cavity in the very center? Cuz if it was just like a cavity in the center, that would be like a zero gravity zone.
Well, there would be a zero gravity zone if it was a small If it was a small cavity. Yeah, you could It would almost be like an inver like you'd kind of get pulled towards the center.
I'm trying to think.
Would it be like you're getting pulled towards the center or would it be that you kind of get almost pushed away from the center?
gravity pulls you towards a point while gravity is more like a gradient.
Think of it kind of like um I'm trying to think like the direction of gravity.
Well, yeah, it's like distance fields.
Gravity is essentially a distance field using mass as a kind of multiplier in a in a way.
What do you want, lady cat?
Take Fab to previous submission. Uh, I I never submitted to FAB. Actually, my thing was on the other the old plug-in marketplace thing.
How do I turn this vector into a rot?
rotation.
It says roll can't be determined from a vector, but it's like well I mean it can it can well it depends but yeah rotation from X Oh yeah.
Cuz like what what what the rotations are doing is like saying like for example, let's let's say we're top down.
top downish. Let's say we're a a cube.
And this is our leg joint.
And it wants to go like over here.
It's kind of like telling us, okay, if we were pointing down, you know, you you would lift your leg out like this and then you would rotate like your wise out to here.
But I just want it to be like like you know from here I want to move up and out but I don't want to twist at all.
Like twisting is banned. No yaw cuz yaw does like you know twists the foot and [ __ ] which I don't like that which I don't want.
But every every single solution is giving me a your value like is it just do I just need to do one of one of these ones will be correct.
It doesn't have your says the roll is 90.
That's not right.
R from Z.
I could do like get this and do Yeah.
Like look at Oh, no. That wouldn't I hate it.
leg joint get. Let me just check what the um like the rotation of the leg joint is.
Yeah, it's it's zero.
And then if it and that's in world. So if I did that 90 then it will be 90 your and yeah like as it goes this way that's like you know pitch and as we go that way that is roll and then if we say okay yeah the the roll of the foot you know pitch and your uh sorry roll and pitch 45° or something. Then like it'll stick out 45° and back 45°.
like yeah the your should just be Z uh it should be zero.
So, how can I get pitch and the yaw from these uh sorry, the pitch and the roll from these [ __ ] dudes?
like but then I need two vectors here.
What what does that mean?
Can I do a make from axis?
Like some [ __ ] like this.
Okay, hold on.
Direction of the center to the point as the up direction then forward is a flattened version of the center point direction. Then you cross product the right direction.
They do need to be inverted because reasons.
Yeah. Yeah.
Wait. Now, what the [ __ ] is this doing?
That's Where's that trying to go?
Like, I feel like it's kind of just [ __ ] itself.
Let's go blue. So, this this is just supposed to show me the angle that it's supposed to be at, which is supposed to be going from the leg joint is the line start and then the leg joint plus some mount is the line end, which is the plant transform.
Right. No. Yeah. The green is trying to go from the thing to the thing.
Green is trying to go from previous to current.
I feel like it's always at like a right angle, which is like maybe close.
It's always like Yeah. the the wrong.
So maybe it is just about like which [ __ ] thing is the thing.
Oh, so this should probably be upside down.
The down vector should be up in this.
Okay. So then the forward vector should be maybe the opposite of that or I don't [ __ ] know.
Hello.
What you doing?
>> Oh, thank you.
I don't have a brain. Jokes on you. I don't have a brain.
Funny, funny cat.
Why is this so dumb?
You know I know. I know. It's crazy.
Reference orientation position. If the constraint is currently active, this will set its active local pose. Otherwise the change will take it right in need constraint buddy buddy going to hop up yeah want to hop up hopping up Here. Come on.
Come on. What is it?
Want to help?
What is it?
Come sit with me.
Come and sit.
What is this?
Let's say all right. All right. As an example, let's get let's just get the rotation of the joint and set that to be the orientation of the thinger.
Right? So, what this will be doing is just it'll it should just be straight.
The leg should just maintain straightedness.
Yep.
Yep. Perfect.
Cuz it's just taking the current rotation and the world space rotation and adding that as its [ __ ] thingo.
So if we could then take that and combine that with whatever the offset needed to be. So com [ __ ] I don't know just just yolo that just chuck it in and just [ __ ] me dead.
I see now it's doing a bunch of your stuff. No yours. Yours are banned.
How do you get like the difference into vectors? What what if Okay, like a normalized vector.
If you just take a normalized vector and multiply it by [ __ ] 180 or some [ __ ] or 90 kind of. No, but then I won't be able to go that way or that way.
Oh, for Vagma.
Mhm.
I mean, yeah, like in theory if I got this and just said break and then just like multiply by 90 and then these would be swapped.
We just did a straight up Manny.
Uh, one of them needs to be What's the back and forth one?
This one.
No, it was the other, right? So, that works now.
It's trying to reach these guys.
All right.
But then it has to do it locally, which this doesn't do. So, we would need to rotate.
I guess we just rotate this vector.
by the capsules. Fuckerino capule. Capsule catation or is it unrotate vector?
Right, let's unrotate the vector.
Yeah. Okay, cool.
All right, we figured that out. So, the the the trick the trick with like using rotations is to not use rotations.
just just [ __ ] it's just vectors and you just like manually like you know put the x into the y times my minus 90 and the [ __ ] the y into the x multiply by 90 and there's no problems. So just like yeah, rotators you just say [ __ ] off and it's fine.
How's that sound? Do we all Do we all learn a valuable lesson? Yes.
Is this.
All right. Look, I I feel like we've made a a good uh start.
Honestly, once this stuff is like not totally [ __ ] then it's actually kind of easy.
Why is he not moving?
Oh, right.
Let's just see if I didn't Let's say I put this in, but I don't clamp. camp.
Should be that, right?
Yeah. Okay.
It's a It is alive. Yes.
H cool. Um yeah.
Okay. Okay. So if this was now using the target transform, not the target plant transform, then we just need to lurp the stride or you know wherever the [ __ ] start appendage blah blah blah blah blah progress strides if striding. Well, I guess when we start appendage new stride, we need to actually set the appendage state to striding.
Stride ding ding ding. And then it will actually progress strides. If striding, then uh we lurp this thing until it [ __ ] does some [ __ ] Except we're not actually calling progress progress strides anywhere.
Advantage is a target. So we'd want to progress strides here.
Just finish array. Okay, let's just do it either way.
We do set the strike risk to zero. Ah, the uh Yeah, right. Set members blah blah blah blah blah. [ __ ] thing doesn't get by reference.
So, [ __ ] me.
Thanks, Unreal.
Oh. Uh, the This needs to be clamped.
It's alive kind degrees a sl indicator is a zero and not a capital O. So I know this was some fonts make a difference. Yeah, that's true. That's true. I I do agree on that.
I think does Unreal do that like the the I guess I use a um I use comic sands I think for my for my debug font. No, no, no, it doesn't.
Although when I use the Runescape font, I think it has slashes. Yeah. Across the zero. Yeah.
Yeah, it does.
Yeah.
Are you simulating a Rayman? you. It sounds really dumb, but kind of. Yeah.
Um, we're essentially going to be well, once I remove the constraint from the head of the character, um, yeah, we'll essentially be doing like a Rayman version of this of the the Bulbot character that we did another time.
So, it'll essentially be Yeah. fully physical fully physical character, but instead of a ball on like a a gimbal, not even a gimbal, just a freely rotating ball, it'll be like a Rayman feet.
Feet man.
Is Ray causing Ray miss? Yeah. Well, I mean, yeah, that's a given.
nearly made a full rotation of this platform.
Oh god.
Oh god.
Denched.
push.
GTA 6 release a November 19th. Nice. I can't wait to I can't wait to watch any Austin's video on where all the power lines go in Grand Theft Auto 6 or where all the rivers go.
That's about that's that's that's what I'm excited for most with Grand Theft Auto 6.
Yeah, literally they probably have a uh you know a infrastructure consistency overseer whose job it is to just make sure that like you know all the power lines end up at like a substation and the rivers all you know.
Yeah.
on connect to anything. Yeah, exactly.
How do I any any chat GPTs in the chat?
Now, how do I disable collision between two completely arbitrary physics bodies in Unreal?
Unless I don't want to disable the coll because like I know you can weld I know you can weld them if they are attached to one another which you know makes their collision disabled so they don't like to penetrate and then I know with physics constraints you're not act while moving actually yeah was you that said that last time. Let let me let me see if I can go appendage array get get and just like break and break.
And if I was to say foot collision so there is ignore ignore component when moving. Okay. Does whether to ignore collision with another component when this component is moved.
Other components may also need to say when they move does not affect movement of this component. Does not affect movement of this component when simulating physics.
Is that ignore like ignore overlap or ignore collision? Like will it will it really let's say for each foot collision cuz I can do that like that. Ignore leg collisions.
should ignore. Yes.
And then for each leg collision, Ignore foot collision and foot collision.
And then on begin play, just [ __ ] do that.
We'll see how that goes.
Doesn't seem like it works when simulating physics.
Is it like when we when it says like moving does that mean with the movement component? cuz yeah does not affect movement of this component when simulating physics.
I'm guessing it's just uh like a function for the hardcoded movement stuff.
Collision overlaps entirely. Why why does it not why he not work then?
Cuz yeah, they're definitely still hitting each other.
Hold on. Wait for it.
Come on.
Overlap.
Okay. Wait, maybe they did ignore just then. No, no. Yeah, they're definitely hitting.
Yeah.
Um, U5 physics ignore.
between objects.
might need to be custom. No, cuz then it's I could do something kind of gross.
which would be that would get super [ __ ] though.
I could do like a constraint between between the legs.
that then has like full free motion like free range free rotation and it only thingos it's only there to disable the collision between them when thinging So this should now lift the feet up or something in theory.
going to do. I mean, doesn't YouTube do that anyway?
Is that Yasify the post? That's true.
That's true.
Okay, I'm alive. The new house is good.
New house is very good. Very comfortable.
Very swag.
All right, I reckon I might call it there just cuz my brain's starting to like die and I really want nachos.
I really want Naros.
Um, I should probably update the the plugin on the FAB and the, you know, that stuff. Maybe I'll do that tonight once I wrap up.
Okay. Yeah. Yeah. Sorry I I didn't go a bit longer, but I'm I'm I'm I'm hoping to stream most days, more more days than not days.
Um but yeah, basically we just need to get stuff move the feet. We move the feet basically.
in winter now. Yes. Yeah, it's very cold. So, you need to update again. 518 will come out. Yeah, exactly. Well, I mean, once I've once I'm in the swing of it, it's pretty easy. I mean, all I have to do with 57 and 58 for the current version is just like just um literally all I have to do is open it in 5.7, then delete the like intermediate and save folders, like the generated folders, and then just send it to the FAB update thing. And hopefully it hopefully it just works.
like nothing should have changed. I mean, I'll obviously check that it works, but yeah.
Um, yeah. Anyway, thanks everyone.
Uh, we're going to raid Mr. Vain, who's been streaming for like 8 hours, but uh we're going to make him go for a bit longer. So should check version is changing a lot.
Yeah, I need to go through the what are they called? Um you know the feature the feature thingos. I wish there was like a, you know, what was the last version you used and then what's everything that's changed since then to the most up to date. You know, I guess I'll just watch some videos or read some stuff or just I don't know.
I'm so behind. I'm so behind on like everything.
One day. One day. Anyway, thanks everyone for watching and with that we say goodbye until uh maybe tomorrow, but definitely Monday. I don't know if I I don't know. Weekends seem to be like doing more renovation stuff. So, maybe not tomorrow, but we'll see. We'll see how I feel. Anyway, bye.
And to the YouTubes, uh, thank you very much for watching.
You guys are quite
Related Videos
Beyond Robotics | European Rover Challenge 2026
beyondrobotics
189 views•2026-06-01
Beatbot Sora70: JetPulse Technology and AI obstacle avoidance and navigation!
DroidModderX
26K views•2026-06-02
Tesla FSD 14.3.3 Hits Phoenix Streets - FIRST LOOK
anthonystesla
114 views•2026-05-29
Elon Musk Just Revealed Fremont Line for Optimus Gen 3 Mass Production
TheAINexusOfficial
180 views•2026-05-30
人機一体「零式人機 ver.2」 子ども企画【おもしろ発見!モビリティー】 #乗り物 #automobile #robot #shorts
KyodoNews
1K views•2026-05-28
China’s New Luna AI Robot Looks Shockingly Human...
NextGenHumanoids
850 views•2026-05-28
Reachy Mini: the $300 open source robot you can actually hack — Andres Marafioti, Hugging Face
aiDotEngineer
662 views•2026-05-29
柔軟指×AI画像処理食品の仕分け作業システム!#柔軟指 #ロボット #自動化 #製造業をもっと盛り上げたい
KiQ_Robotics_Corp.
113 views•2026-05-28











