Learn more like this: www.udemy.com/... Discord community for UE dev/procedural animation: / discord Quaternion multiplication in depth: • Math for Game Develope...
ok now how do I use all that and make him punch at my characters head, I tried inputing the world transform of my player camera which is located at the player pawns head into the goal target node by the enemy ai was punching off to the right, tried the vr origin and they were still punching right, not at my head.
It will be cool to work on a hand-to-hand fight sequence to apply this knowledge. Personally, I'm gonna try to with your 2 Udemy animation courses in a 80's Hong-Kong martial art/action movie style project.
Been looking for 30 minutes and I can't find this. Details panel is contextual, so details panel after clicking on what? This comment could be so helpful for people but it's lacking context.
Select “Set Transform” node, it refers to the bone you want to manipulate. While the node is selected look at the “details” panel. In the video it’s to the right. Look for the section “Transform”, this is where you set the min/max. I will be away from my computer for a few days. Let me know if you need more information.
Hey man just wanted to say, your procedural step-by-step video got me to take the plunge from animation straight into UE5 tech-anim. Currently making my own solo game and been watching every vid since. thanks for sharing the knowledge, much appreciated
Thank yout for the great video. I'm curious about setting the Initial Target though. Since the Initial Target would generally be different for each animation, would that also need to be fed into the control too in order to get the correct quaternion multiplication value? Or another way would be to create different InitialTargets for types of animations and have them already set up (ButtonPressInitTarget, PunchInitTarget, etc). In terms of management I think the latter method sounds better but it doesn't seem as robust as the first option (if it works).
17:08 Thanks. Can you do a vid on how to implement this for actual use (how to feed goal loc with BP? into different anims). I.e. character needs to be about 100 units from the button? So for a door example, can you show how to use a collision box on door BP, to detect player is close enough. Then which node to use to make Player step to exactly 100 units? (This is what I havent found an answer to, esp for Player Controller since we cant use AI move nodes which are more precise.) And then how to you communicate from doorBP to PlayerBP to AnimBP? to feed Goal - BPI? (hopefully not castTo any PlayerBP) Can you show what works please. Ty
Bro at some point you need to figure some things out yourself. He's handing out the biggest part of the puzzle for you right there. That sounds really lazy from you
@@alex-qn5xp i'm stumped too mate, I used the event graph to make the transform of the goal target and fed that into the target goal, but it wasn't punching in the right direction
Thanks for sharing, great tutorial. Thinking that this could used for two-hand grips as well (2 hand sword, etc). Currently using two-hand IK for it but this seems much more natural-looking. Could you possibly do a follow-up tutorial for that as well? As it seems that not only you have to account for the handle's transform but you have to adjust the secondary hand's rotation to the primary hand.
Its maybe something I'll cover, but making one transform relative to another isn't too difficult. There's a MakeRelative node, to make one thing relative to another (eg. left hand relative to the right) giving you an offset transform, and then once you move the right hand, you can re-apply this offset by multiplying the transform of the right hand, with the offset of the left.
How can i transfer this red point reference to a socket bone in other skeletal mesh? I need to adapt my character animation e a interaction between two skeletal mesh.
Struggling through a use case with this technique today. I'm trying to use the AimMath idea to point two different bones at the same world location. Both of the bones point just fine on their own, but when combined, the spine rotation compounds and influences the second bone (hand_r). I've been trying to "unrotate" the hand using the aimed spine rotation, but I just can't seem to get the result I'm looking for
Heya! Love your tutorials, very clear and fun!:) Random question I've been struggling with trying to adapt this setup: Is it possible to use this for a character that's running? I.e the hip will be translating and rotating but I still want the attack to hit the same spot as when it's in the reference animation.
It would be a little more complex, as you wouldn't know where the landing spot will be ahead of time. For that, I would probably recommend some use of IKing to the target rather than just adjusting the angles.
Hi, I managed to create the whole setup and in the control rig view everything works as expected. The problem arises when on Begin Play I give the player the transform of other actor at the level where the player is to turn, but the player keeps looking (from the waist up) at the point 0,0,0. I take the “FromWorld” node when dragging the GoalTarget transform and make sure that the given location goes to the input of the Control Rig node in the animation blueprint. Do you have any ideas? Thank you for this tutorial!
Awesome tutorial! I have asked on forum, but maybe you know how to copy rotation value in control rig, from z axis and connect it to y axis? Can’t find function for this…
Sure. You'd basically just pass it a raw value (so the first part of this tutorial) for the pitch. EG: you'd get the view angle of the character, and take the pitch value only, and input that as a float into control rig, and use it to control the up/down angle of the spine rotation. Keep in mind with the pitch values, you might have to manipulate them a bit to get them nicely useable. It won't just give you a 0->180 value by default.
@11.13 . As I watched that Quaternion video , on and on, if I understand right, the inverse of quatanian means just rotate opposite direction. So if we use the bottom one(B) to time the top one(A) instead of the other way around, we don't need to use the inverse node... Maybe... Just wonder!!!
nice! would this be the correct approach for left hand grip when holding different rifles (rotating the lowerarm so it grabs the specific end of the gun) ... or is it overkill and I should search for a simpler solution?
For that you'd likely want to use IK. So either FullBodyIK (but only applied to the arm) or BasicIK, if you were to use control rig. Little more complex to set up, but a similar approach, where you'd just be adjusting the underlying animation by moving the IK goal from where it is by default in the animation, and offsetting it to where it needs to be for the specific weapon.
It would, but I'd maybe suggest doing it by creating a pose for those states if possible, then modify it as needed with controlrig. EG for different weapons/scopes/whatever else, you'd adjust it in control rig, but maybe start from an approximately correct pose. You could do the whole thing in control rig, and reposition the weapon to the right spot, but it might just be a little more work to get it positioned in a way that looks good, to not much benefit over using a pose.
Hello, sorry for the apparently stupid question, I'm completely new to animations and Control rig, but I believe it's possible to use this method to correct the position of the character's hand on the weapon's mag? This is clear considering that the weapon is performing the Reload animation and so is the character.
You can yeah, ordinarily the weapon would be attached to one hand (eg. the right hand) so making adjustments to the left hand wouldn't impact the position of the weapon, so you could for example offset the distance it reaches to or something like that if the mag was in a different place.
@@LincolnMargison thank you very much. Do you happen to want to create some content about true fps? There is a lot of content just using Modify transform bone, and very few with controll rig as it should be I believe.
Hi Lincoln. I followed this tutorial, but I found out quite quickly that if the animation has root motion enabled, it can quickly break down if you use this method. Especially if you use it on pelvis bone. Breaking down means that the limb/character goes haywire towards the end of the animation. Disabling root motion fixes the issue instantly. The aim math seems to work in the controlrig view, but when you look the resulting animation in game or even in the animation blueprint, you see that it's not quite right. I wonder if you would know how to solve the issue. Keep the root motion intact on the animation while still getting the aim math to work. Thanks.
I'm not sure why that would be the case, it isn't something I've tried it with, but presumably it will be related to where the origin of the character mesh is. So when the character walks away (with rootmotion) they may be separated from the 0,0,0 rigspace point? I'm not exactly sure of the exact interaction or impact of that but it's my best guess as to why this wouldn't work with rootmotion.
@LincolnMargison Thank you for your reply. That is my intuition as well. I can report now that I did find sort of a workaround. Since you really only need to calculate the rotation offsets once at the start of the animation, I made it so that the controlrig logic only calculates it at the start, so even if the root motion does crazy things, the calculation is still correct and the root motion does not start to affect the whole thing. Well maybe it's also more realistic that way, since your attack is not homing like a missile and the updated trajectory is calculated only once and not every single frame. It does however feel a bit hacky. I wonder if there is a way to do it fully inside controlrig cleanly. Otherwise I guess I could take all the logic out of the controlrig and do the offset calculations in the character blueprint and supply those offsets to the controlrig. I also guess you could replicate the results with IK nodes too and maybe that works better with root motion. Anyway thank you for the tutorial. I will keep experimenting and learning the controlrig system. Your videos have been very inspiring.
I want to edit the lyra rifle animations using control rig so that the legs are a bit more spread apart and the knees are a bit more bent.....how would I do that ??
A simple way would be to make a control rig which just gets the position of the foot bones (create an array with the two feet), and whatever their location is on X & Y, just scale it up by some amount (eg. by 1.2) and use IK to position the feet at the new spots. This would have the effect of separating the feet further away from 0,0,0 rigspace. To make the knees more bent, the easiest way would be to use a FullBodyIK node, where you move the pelvis down slightly, but also have effectors to keep both the feet in place.
Cool tutorial, maybe i'm missing something but once you play in game, the control rig will override the animation and it will not work, only in preview in control rig.
If the animation is being passed into it, the control rig should be modifying the source animation the same as in the preview. Make sure you have the animation path plugged in to control rig in the animgraph
@@mymyChannel771 Are you doing the set transform, or getting the transform -> modifying -> set transform? Because if you're getting the current transform and changing it, it should just be adjusting it based on whatever source is being passed into the controlrig node. If you *just* do a set transform and don't base it on the current value, it will override it.
@@LincolnMargison thank you, now i understand. what is a good way to add controllers transform to an existing state machine? so it can run in-game as an additional layer? offset node breaks things completely
@3:45, your character, as you note, twists when you connect it to the translate. However, mine does not. That doesn't occur until I hook up the later system you build. Weird.
I can't remember, I might have made it for this video, or it might be in the animset pro pack. By the foot movement/sliding I think it's a mocap from that pack.
This guy is literally the genius of our time when it comes to animations and rig!
This is pure Gold! And you are a master of tutorials! I'm impressed, thank you!
very true, what a big brain O:
That was cool. I'm gonna go press some buttons now.
ok now how do I use all that and make him punch at my characters head, I tried inputing the world transform of my player camera which is located at the player pawns head into the goal target node by the enemy ai was punching off to the right, tried the vr origin and they were still punching right, not at my head.
What a game changer tut bro. Thanks for it.
It will be cool to work on a hand-to-hand fight sequence to apply this knowledge. Personally, I'm gonna try to with your 2 Udemy animation courses in a 80's Hong-Kong martial art/action movie style project.
You can set rotation limits in the details panel under "Transform" ; set the Min and Max to your specs.
Been looking for 30 minutes and I can't find this. Details panel is contextual, so details panel after clicking on what? This comment could be so helpful for people but it's lacking context.
Select “Set Transform” node, it refers to the bone you want to manipulate. While the node is selected look at the “details” panel. In the video it’s to the right. Look for the section “Transform”, this is where you set the min/max. I will be away from my computer for a few days. Let me know if you need more information.
Hey man just wanted to say, your procedural step-by-step video got me to take the plunge from animation straight into UE5 tech-anim. Currently making my own solo game and been watching every vid since. thanks for sharing the knowledge, much appreciated
Such valuable and high skilled, thanks very much
W instruction! helped me alot! (as a student)
Thank yout for the great video. I'm curious about setting the Initial Target though. Since the Initial Target would generally be different for each animation, would that also need to be fed into the control too in order to get the correct quaternion multiplication value? Or another way would be to create different InitialTargets for types of animations and have them already set up (ButtonPressInitTarget, PunchInitTarget, etc). In terms of management I think the latter method sounds better but it doesn't seem as robust as the first option (if it works).
17:08 Thanks. Can you do a vid on how to implement this for actual use (how to feed goal loc with BP? into different anims).
I.e. character needs to be about 100 units from the button?
So for a door example, can you show how to use a collision box on door BP, to detect player is close enough.
Then which node to use to make Player step to exactly 100 units? (This is what I havent found an answer to, esp for Player Controller since we cant use AI move nodes which are more precise.)
And then how to you communicate from doorBP to PlayerBP to AnimBP? to feed Goal - BPI? (hopefully not castTo any PlayerBP)
Can you show what works please. Ty
Bro at some point you need to figure some things out yourself. He's handing out the biggest part of the puzzle for you right there. That sounds really lazy from you
@@alex-qn5xp i'm stumped too mate, I used the event graph to make the transform of the goal target and fed that into the target goal, but it wasn't punching in the right direction
Thanks for sharing, great tutorial. Thinking that this could used for two-hand grips as well (2 hand sword, etc). Currently using two-hand IK for it but this seems much more natural-looking.
Could you possibly do a follow-up tutorial for that as well? As it seems that not only you have to account for the handle's transform but you have to adjust the secondary hand's rotation to the primary hand.
Its maybe something I'll cover, but making one transform relative to another isn't too difficult. There's a MakeRelative node, to make one thing relative to another (eg. left hand relative to the right) giving you an offset transform, and then once you move the right hand, you can re-apply this offset by multiplying the transform of the right hand, with the offset of the left.
@@LincolnMargison Thanks! Will try that.
How can i transfer this red point reference to a socket bone in other skeletal mesh?
I need to adapt my character animation e a interaction between two skeletal mesh.
Its also a big question for me...do you find a solution?
@@BakahiraI haven't had time to try anything yet😕
Just in case you're still looking for this: using GetSocketTransform you can get the location of a bone or socket in the other mesh.
Struggling through a use case with this technique today. I'm trying to use the AimMath idea to point two different bones at the same world location. Both of the bones point just fine on their own, but when combined, the spine rotation compounds and influences the second bone (hand_r). I've been trying to "unrotate" the hand using the aimed spine rotation, but I just can't seem to get the result I'm looking for
Cool. I want to do something similar for archery
Heya! Love your tutorials, very clear and fun!:)
Random question I've been struggling with trying to adapt this setup: Is it possible to use this for a character that's running?
I.e the hip will be translating and rotating but I still want the attack to hit the same spot as when it's in the reference animation.
It would be a little more complex, as you wouldn't know where the landing spot will be ahead of time. For that, I would probably recommend some use of IKing to the target rather than just adjusting the angles.
Thank u so much so much man u helped me a lot and solve many problems love u bro
Hi, I managed to create the whole setup and in the control rig view everything works as expected. The problem arises when on Begin Play I give the player the transform of other actor at the level where the player is to turn, but the player keeps looking (from the waist up) at the point 0,0,0. I take the “FromWorld” node when dragging the GoalTarget transform and make sure that the given location goes to the input of the Control Rig node in the animation blueprint. Do you have any ideas?
Thank you for this tutorial!
Awesome tutorial! I have asked on forum, but maybe you know how to copy rotation value in control rig, from z axis and connect it to y axis? Can’t find function for this…
Control Rig King. 👑
Hey man.. great tutorial.. do you think I can leverage that to make the sword attack animations follow the camera up and down like Elden Ring does?
Sure. You'd basically just pass it a raw value (so the first part of this tutorial) for the pitch. EG: you'd get the view angle of the character, and take the pitch value only, and input that as a float into control rig, and use it to control the up/down angle of the spine rotation.
Keep in mind with the pitch values, you might have to manipulate them a bit to get them nicely useable. It won't just give you a 0->180 value by default.
Thank you bro
How would you reassign another target spot. Say you had a second punch that punches lower.
@11.13 . As I watched that Quaternion video , on and on, if I understand right, the inverse of quatanian means just rotate opposite direction. So if we use the bottom one(B) to time the top one(A) instead of the other way around, we don't need to use the inverse node... Maybe... Just wonder!!!
This is amazing!
is it possible to make the attack animation completely procedular too? like no animation file its all code?
It is. It is a lot of work as every moving thing in the body needs a transformation to make it look realistic.
yep, but it's a lot more trouble than it's worth I wager
As other's have said, its possible but perhaps more difficult than just animating. What kind of attack/character were you thinking?
@@LincolnMargison im trying to make a fully produceral combat system so bosses can sync with music, weapons clip though walls, etc
@@TheTylerCathey Ah, well it's definitely doable, but will be easier if it's non-human characters
awesome! more rig math pls!
What is difference between rotation multiplication and additive?
The result is similar but I can't undetstand the difference
This is fantastic thank you
nice! would this be the correct approach for left hand grip when holding different rifles (rotating the lowerarm so it grabs the specific end of the gun) ... or is it overkill and I should search for a simpler solution?
For that you'd likely want to use IK. So either FullBodyIK (but only applied to the arm) or BasicIK, if you were to use control rig. Little more complex to set up, but a similar approach, where you'd just be adjusting the underlying animation by moving the IK goal from where it is by default in the animation, and offsetting it to where it needs to be for the specific weapon.
Will it work if i locate the socket in enemy , then set the target snap on socket. by that will it hit or grab with multi size character
Would hipfire and ADS make sense with control rig?
It would, but I'd maybe suggest doing it by creating a pose for those states if possible, then modify it as needed with controlrig. EG for different weapons/scopes/whatever else, you'd adjust it in control rig, but maybe start from an approximately correct pose.
You could do the whole thing in control rig, and reposition the weapon to the right spot, but it might just be a little more work to get it positioned in a way that looks good, to not much benefit over using a pose.
Hello, sorry for the apparently stupid question, I'm completely new to animations and Control rig, but I believe it's possible to use this method to correct the position of the character's hand on the weapon's mag? This is clear considering that the weapon is performing the Reload animation and so is the character.
You can yeah, ordinarily the weapon would be attached to one hand (eg. the right hand) so making adjustments to the left hand wouldn't impact the position of the weapon, so you could for example offset the distance it reaches to or something like that if the mag was in a different place.
@@LincolnMargison thank you very much. Do you happen to want to create some content about true fps? There is a lot of content just using Modify transform bone, and very few with controll rig as it should be I believe.
Hi Lincoln.
I followed this tutorial, but I found out quite quickly that if the animation has root motion enabled, it can quickly break down if you use this method. Especially if you use it on pelvis bone. Breaking down means that the limb/character goes haywire towards the end of the animation. Disabling root motion fixes the issue instantly. The aim math seems to work in the controlrig view, but when you look the resulting animation in game or even in the animation blueprint, you see that it's not quite right.
I wonder if you would know how to solve the issue. Keep the root motion intact on the animation while still getting the aim math to work.
Thanks.
I'm not sure why that would be the case, it isn't something I've tried it with, but presumably it will be related to where the origin of the character mesh is. So when the character walks away (with rootmotion) they may be separated from the 0,0,0 rigspace point? I'm not exactly sure of the exact interaction or impact of that but it's my best guess as to why this wouldn't work with rootmotion.
@LincolnMargison Thank you for your reply.
That is my intuition as well. I can report now that I did find sort of a workaround. Since you really only need to calculate the rotation offsets once at the start of the animation, I made it so that the controlrig logic only calculates it at the start, so even if the root motion does crazy things, the calculation is still correct and the root motion does not start to affect the whole thing.
Well maybe it's also more realistic that way, since your attack is not homing like a missile and the updated trajectory is calculated only once and not every single frame.
It does however feel a bit hacky. I wonder if there is a way to do it fully inside controlrig cleanly. Otherwise I guess I could take all the logic out of the controlrig and do the offset calculations in the character blueprint and supply those offsets to the controlrig.
I also guess you could replicate the results with IK nodes too and maybe that works better with root motion.
Anyway thank you for the tutorial. I will keep experimenting and learning the controlrig system. Your videos have been very inspiring.
@@MrYoucantsay changing goal target location in control rig to 0 0 0 fixed the issue with math being not right outside the control rig for me
yeah I'v looked for it))
I want to edit the lyra rifle animations using control rig so that the legs are a bit more spread apart and the knees are a bit more bent.....how would I do that ??
A simple way would be to make a control rig which just gets the position of the foot bones (create an array with the two feet), and whatever their location is on X & Y, just scale it up by some amount (eg. by 1.2) and use IK to position the feet at the new spots. This would have the effect of separating the feet further away from 0,0,0 rigspace.
To make the knees more bent, the easiest way would be to use a FullBodyIK node, where you move the pelvis down slightly, but also have effectors to keep both the feet in place.
@@LincolnMargison That makes sense but I have no idea how to actually do that.....If you could please make a tutorial that would be great
Cool tutorial, maybe i'm missing something but once you play in game, the control rig will override the animation and it will not work, only in preview in control rig.
If the animation is being passed into it, the control rig should be modifying the source animation the same as in the preview. Make sure you have the animation path plugged in to control rig in the animgraph
@@LincolnMargison but a set transform node in control rig is overriding any animation input
@@mymyChannel771 Are you doing the set transform, or getting the transform -> modifying -> set transform? Because if you're getting the current transform and changing it, it should just be adjusting it based on whatever source is being passed into the controlrig node.
If you *just* do a set transform and don't base it on the current value, it will override it.
@@LincolnMargison thank you, now i understand. what is a good way to add controllers transform to an existing state machine? so it can run in-game as an additional layer? offset node breaks things completely
@@mymyChannel771 I'm not too sure I understand what you mean when you say add controllers transform
@3:45, your character, as you note, twists when you connect it to the translate. However, mine does not. That doesn't occur until I hook up the later system you build. Weird.
This may have something to do with the actual SKM you used vs mine. I'll attempt it with old manny and see if I can repeat the issue.
How can we transfer the target to crosshair?
Where did you get the punch animation>
I can't remember, I might have made it for this video, or it might be in the animset pro pack. By the foot movement/sliding I think it's a mocap from that pack.
Nice 👍
awesome……
i cant do to work in game....can you explain how setup the goal and init parameters in anim graph?
I wish so badly they wouldn’t call it global space, and instead call it local or rig space officially, makes it so confusing.
Can i transfer this target to mouse?
Sure, just pass in the info you need into control rig