Should You Use Root Motion?

Поделиться
HTML-код
  • Опубликовано: 13 мар 2018
  • In this video I look at what Root Motion is, how it works, and whether or not you should consider using it for your game.
    I also demonstrate how i've set up my own rig to animate for Root Motion in Blender, as this is something I have found very little information on online and thought others might find it helpful.
    If you want to find out more about scripting and implementing Root Motion to your game, John Mac has done a brilliant tutorial series, using 'The Legend of Zelda Wind Waker' game as a reference, here that I used when first learning about Root Motion:
    • Unity Third Person Con...

Комментарии • 83

  • @justinspearlord
    @justinspearlord 6 лет назад +212

    It sounds like you fast forwarded your voice 😂

    • @YuriNoirProductions
      @YuriNoirProductions 6 лет назад +9

      i was wondering the same thing...it might even be entirely synthesized

    • @juschu85
      @juschu85 4 года назад +7

      Or it sounds like he just randomly cut out/skipped a few milliseconds of the audio here and there.

    • @johnbrooks5752
      @johnbrooks5752 4 года назад +95

      @@juschu85 he used script audio instead of root audio

    • @boythee4193
      @boythee4193 4 года назад +1

      exactly. good hook. computerized? human but clipped and sped up? hmmm

    • @KBtTech
      @KBtTech 4 года назад +1

      It's a machine voice. Computerized

  • @psy237
    @psy237 3 года назад +6

    nice!! that's exactly what i needed to hear! Now I know that root motion is actually what I was looking for so many just ignore it or talk only about in-place animations. Thanks a lot!

  • @JustSomeRandomIdiot
    @JustSomeRandomIdiot 4 года назад +24

    Would be great for something like 'vault over wall' animations or animating the response of an attack, like a knockback in my opinion. Not sure I would use it all the time. While the walking animation is obviously visually more interesting, I'm not sure that kind of animated walking would be necessarily 'better' in terms of gameplay.

  • @Josje95
    @Josje95 5 лет назад +9

    You're a livesaver, this concept was super vague to me but I understand some of it now!

  • @leomotta5376
    @leomotta5376 3 года назад

    You had so much success on this subject that I think you should go deeper, would be good to see how you make such a complex animation state tree

  • @kureysalp
    @kureysalp 5 лет назад +4

    Can you show us the transitions used for pivot animations?

  • @domagojalagic6678
    @domagojalagic6678 3 года назад

    Useful video, thanks! :)

  • @asadd2
    @asadd2 3 года назад +2

    voice is a bit odd but beside of that...great video! I've always wondered what magic there is behind some characters really touching the ground or just sliding over it. Thank you very much!

  • @CosmicComputer
    @CosmicComputer 4 года назад +11

    I wish I could find more info on animating with root motion in blender, this was great though, thanks!

    • @BirdmaskStudio
      @BirdmaskStudio  4 года назад +11

      That is one of the biggest problems with root motion, no one seems to talk about how to animate for it. Only method I found, which I show in the video a bit, was adding a ‘Child Of’ constraint tn the feet IKs and setting an empty game object as their parent, and then turning their drivers on and off when I wanted to animate walk cycles.
      Wasn’t perfect, had quite a few issues and made the rig a bit more cumbersome, but that is at least a way to consider tackling this.

    • @CosmicComputer
      @CosmicComputer 4 года назад

      Birdmask Studio ah I see, thanks for the tips! I swear if I ever figure it out I am making a course lol. Also, your vampire heist game looks freaking amazing!

  • @dandymcgee
    @dandymcgee 4 года назад +6

    This video is really good, thanks! You desperately need a pop filter though, the "S" sounds are brutal.

  • @speedy_o0538
    @speedy_o0538 10 месяцев назад

    Best explanation out there

  • @JtooMe2
    @JtooMe2 2 месяца назад

    This is great!

  • @idatemodels2872
    @idatemodels2872 3 года назад

    Excellent content, please slow down. Eg. "People in all the universe praised the content. In regards to learning the content, they asked me to slow down. And I did. I did through repetition and more detail through iterative explanations. In addition..." I loved it!! I want to see more.

  • @medmel2160
    @medmel2160 8 месяцев назад

    This is gold. Take my sub

  • @GameOnBudget
    @GameOnBudget 3 года назад +1

    can you help me ?

  • @creasu124
    @creasu124 4 года назад +1

    did you speed it up by 1.25 lol like i used RUclips it's speed setting to change it to .75 and it sounds like the normal speed you talk lol

  • @GoblinGamesLtd
    @GoblinGamesLtd 5 лет назад +8

    You can get the best of both worlds by storing the root data as a curve and then applying that an offset on the mesh while it's still being driven by script.

    • @Trucktore
      @Trucktore 5 лет назад +1

      Do you have any examples / showcases of the result of this method?

    • @FreemanTraceur
      @FreemanTraceur 5 лет назад +2

      You mean Motion Matching? Because, documentation for that is even more scarce.

    • @JoeyQuint
      @JoeyQuint 4 года назад +1

      I was gonna say the video is missing that, precisely. The example of the character walking slowly in the video is not representative of script motion because they just used an animation meant to use root motion and removed it, so the character's feet will be sliding on the ground. I mean, of course using script motion we're gonna adjust the animation with fake movement instead of letting the character have his feet slide on the ground.

  • @HasimFN
    @HasimFN Год назад

    So script motion the animation follows u and rootmotion you follow the animation?

  • @nielsvdmarel
    @nielsvdmarel 5 лет назад +1

    How would you suggest correctly switching from root motion to physics? For something like reacting to a attack or falling?

    • @BirdmaskStudio
      @BirdmaskStudio  5 лет назад +3

      I can’t give a precise answer - I am still learning all this as it comes up. In most cases i’ve seen, and in unity's default example, the simplest solution would be to turn off the root motion while your character is in the air, or jumping, and calculate the movement by normal scripting, or physics means, until the character is grounded again.
      Root motion doesn’t have to be constant, as I think was mentioned by someone else here. You can also, along with toggling it on and off, actually have it disabled, but still fetch and apply all the move and rotation data by your own script, rather than the animator, which would give you greater control over how it plays out.

  • @fabianobersovszky6987
    @fabianobersovszky6987 Год назад

    As far as i know, root motion is not recommended in some cases. Can i use root motion for a third person cover system for a MP game?

  • @johannesmittig4169
    @johannesmittig4169 4 года назад +22

    can't tell if this is a real or computer voice

    • @Navhkrin
      @Navhkrin 4 месяца назад

      Its gotta be the guy that computers try to imitate.

  • @ZekeMe0ut
    @ZekeMe0ut 5 лет назад +72

    Pro Tip: Watch at 0.75x speed.

    • @andrewogolo7257
      @andrewogolo7257 4 года назад

      Jonas Tyroller said to watch tutorial vids at 1.25% speed... I think I won't take his advice

    • @mikethegamedev
      @mikethegamedev 4 года назад

      use 1.25 so it learn 1.2 half faster

    • @AlexTuduran
      @AlexTuduran 3 года назад

      The usual 1.5X is fine here as well.

  • @eirik2712
    @eirik2712 Год назад +2

    Tutorial: for those who don't know. In unreal engine at least, you need to have a root bone for your skeleton, and the animations must be set up for root motion. There's a video on a blender plugin that can give a mixamo character a root bone, and mixamo animations root bone data. Then you assign your animation blueprint to the new skeleton

    • @brodakarat6340
      @brodakarat6340 6 месяцев назад

      I think for third person root motion is good. I'm making a full-body first person character so most of it is scripted. But for mine there are no keyframes either. My walk cycles are set using math and lots of parameters, allowing the first person experience to be easily customized like view bobbing and stuff

    • @eirik2712
      @eirik2712 6 месяцев назад

      @@brodakarat6340 oh wow, smart. Using math for cycles. Yeah in first person root motion is probably not important. For third person games with combat like mine, well since it's a fighting game where every attack moves the character quite a lot, it's essential

  • @LautaroArino
    @LautaroArino 3 года назад

    Omg I'm so happy to read the comments about the voice. I thought I was going dumb. Or insane.

  • @Visigoth_
    @Visigoth_ 2 года назад +1

    Is this narrated with Text-to-Speech?

  • @supjay3945
    @supjay3945 2 года назад

    I think your noise cancelling filter is messing up the audio.

  • @chienbanane3168
    @chienbanane3168 3 года назад +1

    So root motion is why GTA 4 & 5 character movement feel so unresponsive while looking so fluid?

  • @magnusm4
    @magnusm4 6 лет назад +2

    I'm split. I have only worked with movement using scripts to wall jump and such.
    My main fear is that I want an extremely responsive game for 3d platformer that feels fluid and solid. I'm worried animating with levels of uneven and very curved floors could mess this up or make some feel unresponsive

    • @BirdmaskStudio
      @BirdmaskStudio  6 лет назад

      I’ve not animated root motion for a full-on platformer character, but i’ll try to respond to the best of my knowledge.
      While it’s animation driven, root motion movement is very similar to coded movement in how it acts, so there shouldn’t be any more trouble with slopes and uneven floors than you would normally have (Unity’s 3rd Person character example uses root motion and could be a good thing to stress test if you’re looking into it).
      As for the feel - that depends. Root motion can be very hard to get right, and feeling responsive. If you want a weighty character that carries momentum, it can be great with animated running pivots, skidding stops and so on - (the project from tutorial series I link to in the video shows a good example of that which you can download and try) - but again it takes quite a lot of work to refine, and requires a good deal of back and forth between the animating software and unity to change anything that doesn't feel right.
      I tend to stick with coded movement most of the time, unless i’m working on a point and move game with navAgents, or one where movement can be kept simple. Root motion can be great and do some unique things movement wise, but it can really cost you in time and resources, so unless there's something you really want to do with it, I recommend leaving it until you can try it out in a less movement intensive game.

    • @magnusm4
      @magnusm4 6 лет назад

      Yes see that's the thing. The specific movements.
      ruclips.net/video/vFsJIrm2btU/видео.html
      His 5 tips are amazing and I applied the jumping to my 3d platformer and it was amazing.
      But the problem is the drag. I couldn't find a way to make that in the 3d platformer without messing up the entire code that makes him walk based on camera direction., let alone figure out how to sync it with animation later.
      If you run but suddenly press backwards I want an animation of him stopping himself with a slide and running backwards. This I can imagine easily making in root motion but in script it's difficult enough to get an acceleration, i'm not even sure I got that done.
      If i'm still and push left I want an animation for that or if I choose a more rapid change in direction.
      I feel like root motion gives me the solution, but it's harder to apply and takes time.
      But scripted means I can't find any solution and instead takes time to figure it out and fine tune it. Then i'd have to sync the animation with speed variations if I get flung by something and I travel at a speed above my run speed then the animation would need to speed up to sync up

    • @BirdmaskStudio
      @BirdmaskStudio  6 лет назад

      There are ways you could do what you want with code, though it depends on the specifics of how you’re coding movement. From want that i’ve gathered from what you’ve said so far I recommend looking more at some of the tutorial examples you can find online for coding 3D platformers, adding a sense of acceleration and weight with coded movement, and even slow and sudden turns are much easier to tweak in code if you are able to program it (Rigidbody player characters using force for movement especially, though it can also be done for character controller based ones too).
      Syncing those movements to animation can take a bit of work but is also doable. I do have a playlist on this channel, and a project download, that goes over some of the basics of moving 3D characters, with fully commented scripts that could be helpful: ruclips.net/video/1IZlDI0Aun0/видео.html It covers the basics of syncing animations to movements, moving in the direction of the camera and, within the full unity project, are some extra examples of some features that can be added to your character.
      If you want to have a look at a full example of a sharp pivoting Root Motion platformer character and how to implement it the tutorial here: ruclips.net/video/b0PvJ4AWvWQ/видео.html Is the one I learnt from and is a good example to show how it’s done and what it takes.
      That's all I can really say on the matter but I hope you find it helpful, and I wish you good luck on your work.

    • @magnusm4
      @magnusm4 6 лет назад

      Thanks i'l look them up. I'm already currently going through the second link tutorial and it's an interesting watch to compare his methods to the same action I made using different methods, he uses Lerp for the camera movement while I learnt that SmoothDamp is apparently better and the recommended way to do camera controls

  • @magnusm4
    @magnusm4 4 года назад +2

    My main issue is I want control like in SM64, meaning very precise control so you should be able in a pvp session to run on a wall and when you land, roll and dodge to the side based on the camera rotation.
    My main issue I think of with root motion is the blank areas.
    The points where the animation has to rotate around so you don't turn quickly enough. Say you run to the left and it rotates 90 degrees.
    But the animation makes you run half a meter forward while turning, but you want more precise and turn much more quickly.
    It's like in Resident Evil when you turn, imagine you walk down a corridor or a street and you want to suddenly go back, but the animation makes them turn right into the corner or a street lamp.
    With scripting they would just turn in that direction more precisely.
    Plus the issue of an enemy projectile pushing you around and having the root motion slow down if you have a gust of wind pushing you back etc.
    What I mainly think of is, what if you used root motion for Touhou or a bullet hell game in general or in League Of Legends and Counter Strike.
    Suddenly those quick reaction movements don't work and you're locked away from gameplay

    • @dfghj241
      @dfghj241 2 года назад +2

      maybe you should make a 180degree turn animation that moves the root motion backwards on the direction you want to go then. make a simple code that detects the desired movement angle, and if it is within a certain threshold ( smaller then - 160 and bigger then 160) you trigger this animation to play, ignoring all the others. with root motion, this will make your character rotate very efficiently. the smaller this 180 turn animation is, the more precise it is in relation to character movement as well.

  • @Spaafy
    @Spaafy 4 года назад +1

    is it worth it on a tps multiplayer?

  • @magnusm4
    @magnusm4 3 года назад

    I wish there was a way to blend script and root motion.
    So a staff jump can have the arc but you can press jump in the middle for a high jump and cancel it. The problem is their positions in the world and having to contradicting motion compete or having to blend smoothly together becomes an issue.
    The main issue I have with root motion is it's complete disregard for physics or the world. This is clearly shown in Tomb Raider and many modern games where the jump is scripted and ends up hacking or looking awkward when colliding with things unlike scripted which stops all motion in the direction of the obstacle. Among many other things.

    • @BirdmaskStudio
      @BirdmaskStudio  3 года назад +1

      It's been a while, but from memory you should be able to blend root motion and scripted movement using deltaPosistion and deltaRotation. It's what I tended to do when I wanted a quick, partially Root Motion, driven character movement.
      DeltaPosistion and DeltaRotation let's you get the how root motion is attempting to move and rotate you character so if you want to you can take that info and apply it yourself through code after you've applied whatever modifiers you want.
      An example would be if you don't have turn animations, you can apply the rotation through code and then take the root motions position changes as the forward movement for your character.

  • @coffeediction
    @coffeediction Год назад

    1:15 "the result is, wvjwrnnlakdkjdflsj-animation"
    what?

  • @stuartrockin
    @stuartrockin 5 лет назад +4

    Speed 0.5

  • @vinaciotm
    @vinaciotm Год назад

    if you can do cutscene to gameplay without cut, like God of War 4, Tomb Raider and Uncharted... you will be THE FIRST!!
    I cannot find anything tutorial about this

  • @dogzer
    @dogzer 4 года назад +1

    I was going to ask how did you manage to get root motion working in Unreal.... then I saw you're working with Unity
    Man root motion in Unreal is impossible to make it work

    • @eirik2712
      @eirik2712 Год назад

      I can explain it for you. I just managed to do it after some research and testing. If you're still wondering after two years

  • @sagardeka2158
    @sagardeka2158 2 года назад

    why so fast😁

  • @prealityagila4864
    @prealityagila4864 3 года назад

    I can't understand what it's saying.

  • @kishirisu1268
    @kishirisu1268 6 месяцев назад

    Seems like you dont uderstand how root motion used in games. Character moved by scripts in both cases, only difference with root motion - root bone position is used to tweak body postion, so it look more naturaly. When jusracter fall and jump it is always work for physics engine, you cant animate gravity. Is”t it obvios?

  • @oyazdani4214
    @oyazdani4214 2 года назад

    I thought it's just me, but even the "Auto-Generated Subtitle AI" is unable to understand the fast-speech in British accent!😂
    The guy says: "Between". I hear: Machine!
    The guy: "Character". AutoGen-Sub: Cattle!
    Edit: Finally, we (me& AI) ended up helping each other in a 0.75 play-speed to encrypt the voice.

  • @sharklygoldman4040
    @sharklygoldman4040 5 лет назад +2

    Wait. What?
    Say that again 4x slower.

  • @playplus5386
    @playplus5386 5 лет назад +4

    you talking so fast

  • @MoogieSRO
    @MoogieSRO 2 года назад +2

    Why does the narration of this sound like text-to-speech? It's obviously not, because it sounds too natural, but at the same time it's so jerky, like it's clipping almost between every syllable. It's extremely distracting.

    • @iSn0w
      @iSn0w 3 месяца назад

      it is TTS

  • @Oppay48
    @Oppay48 2 года назад

    why is this video speaking so fast?

  • @ID345891
    @ID345891 4 года назад

    what in the everloving fuck was that intro

  • @karpadorgx5709
    @karpadorgx5709 2 года назад

    Ba n du

  • @tosuntosungrkm
    @tosuntosungrkm 3 года назад

    man great video but you talk so fast!

  • @maddiehad
    @maddiehad 3 года назад

    don't make your audio edits more efficient bro...just don't.

  • @user-rd6uc2sf6i
    @user-rd6uc2sf6i 4 года назад

    wtf is wrong with the audio? I mean the content is great but your voice sounds weird and it's almost distracting