Motion Symphony - Live Q&A / Demonstration

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi there everybody how are you going this morning evening or whatever it is wherever you are um yes max that's right it's the one button make game uh demo for you those of you don't know that's a joke uh lots of uh lots of plugins people want to make their whole game and that's just not how it works but anyway we're here looking at motion symphony now what you are seeing there if you've been waiting for it to start is just automatic uh running i wasn't actually controlling that so that's why i was running off the edge and stuff uh i'm just going to turn that off now that we're actually here let's see if i can think and do things at the same time i'll just turn off the automatic trajectory okay so this session is basically just a q a slash demonstration uh we had one yesterday and i think it went pretty well answered a lot of questions people had a lot of uh questions that are you know the normal kind of questions that you ask for something like motion symphony and um and yeah so if don't uh feel free to ask the same questions again i'll answer them again there'll be different people in the stream so that's all fine uh but yeah this is motion symphony um particularly the motion matching that's the core of the plugin now other nodes but probably mainly going to focus on the motion matching since it's such a large feature compared to the others um but yeah uh any questions fire away this is uh the motion matching in the works as you can see running around and such now if there are any questions i am just going to continue to add new animations to the set i've got some strafe animations i've got some sprint animations uh ready to go so you can see a bit of the workflow as we go forward but yeah it doesn't seem there's any questions just yet so i will just keep going on with that so you haven't already seen um there's a whole bunch of sort of assets that you use to control motion matching with motion symphony it's designed to be really modular so i've decided to break things up between running and walking in this case i could do running and walking together i've done it in the past that's also a valid way to do it i just have done it in this way in this particular case and i'll just show you the animation graph for this here it is and it's a simple graph we have idle and we have two states and basically the entire locomotion run is run by this one motion matching node in run and same with walk again i could i could combine them into one i just find in my case uh i like to be able to see the states um but you're gonna have to balance between what you separate into states and what you combine in our idle node uh we actually have a pose matching node which is a motion symphony node and the reason i've done this is because it's a staggered star so left foot forward but you could stop either on your left or right foot forward so this pose matching node i've got an uh runtime mirroring enabled so we can actually stop on either the left or the right foot so that's that's basically that's the example it's very simple it could be way more complex but to get this kind of locomotion obviously uh without motion matching you're looking at i don't know how many states a lot of states um we'll show more advanced workflow with more with clips not in this this is like a short q a like i'm not gonna have time to go into it uh i do have the the next quick start guide is so i've done two quick start guides the the last quick start guide is going to be like a cut clip workflow um basically setting up a cut clip uh example from scratch i can't unfortunately include it because i don't ha own any um cut clips that i can redistribute i've only got bought ones off the asset store but you should be able to do it quite simply um but it's not that uh tricky the main difference is uh you need to set up some components and uh sorry um composites and blend spaces and do a few extra settings in the data but yeah that'll be on that quick start tutorial but yeah i'm going to make another one of these motion data assets and i'll call it md underscore hmm strafe strafe locomotion open it up and i'll add in my configuration so if you haven't seen this before the configuration is basically i'll show you in the in here it's basically telling us what we want to match it's a little little asset with a little setup it's bound to a skeleton you can define our trajectory we can define what bones we want to match in this case only three for those of you who are new to motion matching you might find this like only matching three bones doesn't sound like it's enough but it is it is really enough for locomotion you might have things like um you might match hands for like maybe combat for a sword fighting or a boxing game or something like that but yeah so we basically uh bind it to a configuration you can have different configurations between different motion matching nodes that's fine but uh it needs to be the same for this whole thing here all right um i also got a calibration now with the way that i've done calibration and motion symphony it's largely automatic most of the time the presets are going to be fine so basically what calibration is it's a bunch of weightings uh to sort of calibrate how the motion is synthesized but yeah as i said most of the time the default is fine the only real thing that you might change is the quality versus responsiveness ratio you can make it more responsive or more quality those two things are kind of opposing ideas but there's only so much you can go with that the the main responsiveness is gonna come from your source animations any issues with four targets uh not not that i'm aware of look i don't actually have it's hard to get sort of like dog animations or horse animations but i can't see any reason why it would be any different because motion matching has no concept of what a human being looks like um so as long as there's like natural motion in the animations and the source animations it really should work i can't see a reason why it wouldn't um but yeah because like yeah under the hood it's all the generic system anyway so i've set up that and i'm just gonna pick my animations um and i'll type in strafe let's see what animations we have uh so all of these animations by the way are included in the example project so that's not that doesn't get downloaded automatically when you get the plugin um but you can go to the the example project github and you can actually get that there uh there'll be links in the documentation i'll chuck a link in right now just so you guys can see there it is and also while i'm doing links i'll put a link to the documentation because there's so much information there that i can't even go over in a stream it's it's just too much information so we'll i'll link that as well all right strafing animations we've got quite a few um but i need to only get my ones straight start stop walk yep all these there we go so we can add them in here and we get this list of animations that we've added uh we can select them and preview them now we have a question what's the ideal animation data to feed into this 20 minutes dance cards or what thanks um yeah so the 20 minutes thing comes from i guess a gdc talk a while back i think that's more than you need to be honest it really depends what you're going for um so let's have a look at one of the ones i've done already uh so so just it depends like are you gonna have running and walking are you gonna have jogging are you gonna have also sprinting are you gonna then have strafing for each individual type of movement i don't think it's that much so what we've got we've got a bunch of animations here and they can be quite long but but the thing is you're actually calling a lot of the data so a lot of the data is sort of redundant so sort of these loops in between the stats and the stops in this case the the information is kind of redundant you generally tag it out so if you are manually creating animations well then you're not going to need 20 minutes however you are going to probably want to make more of those animations than you normally would because you need coverage you need to have start stops in all directions you need to have plants in all directions and all that kind of thing there's no hard and fast number you can put on it generally the more the better but there's also you know once you get used to it you can start to reason well is this enough um but yeah so i don't think it's that much so we've got roughly um so i'm mirroring all of this information here so let's actually see how many poses are being played uh i can check that i'll just turn on some debug so we'll do the search debug so there's 10 000 poses uh being searched so 10 000 poses and what's our interval we've got an interval of 0.05 um so for every one second there's uh 20 poses yep so 20 poses every one second uh man i'm not good at math off the top of my head but yeah you can do the math on that so there's 10 000 poses 20 poses a second and figure it out so um but yeah even that like i could even call some of that that uh that running stuff because those poses are including the cold the cold poses number so even like all of this is all tagged out as do not use i'm not gonna use any of this uh just um for example in this animation i'm only after the the um the accelerations so if you if you really wanted to be perfect like efficient and not have wasted data you would just cut out certain parts you'd need a little bit either side to get trajectories but you wouldn't need like for example i've got a t-pose in here you don't you certainly don't need that um i've got all this walking and then at the end my character turns around and the only reason that's there is because during the mocap i i had to turn around because i got to the end of the room you could cut that out and just have single length animations from like here including the you know one second before the movement one second after the movement that's that's my rule of thumb i do have a guide actually you know what i'll link that as well docs let me find this guide and i'll link that uh to animation authoring i made it originally for motion matching for unity um but everything still applies it's exactly the same concepts there we go hello frito welcome to the stream okay so let me continue with my strafing animations a few less questions than last time last time they were firing off every every second but that's okay it's hard to think and uh and do this stuff at the same time so maybe i'll actually get some of the strafing done all right so we got a bunch of animations i'll show you the kinds of animations we have and um when i did the strafing animation set i was having a bit of doing a bit of experimentation because i wanted to get kind of like hip flexing going and it does turn out really well and hopefully we'll be able to see it but see i'm doing these like a circular striking so my character is facing this way i'm doing this circular strafing i found strafing was a lot more challenging to get to work with motion matching because you've got so many different direction change combinations that you can do um all sorts of plants back forward side angles you've got so many different directions and then you can have like different there's something like 48 possible transitions in reality uh any relationship between coverage requirements and quality responsiveness slider uh coverage requirements and quality slash responsiveness slider well i mean look the coverage if you don't have coverage what's going to happen is you're going to have gaps in your animation and because this is motion matching the idea is you match to a close pose and a close trajectory if you don't have enough coverage then you have to make the trajectory more important so that means if you don't have much enough coverage you need to go to your calibration and you need the slider to become more on the trajectory side the more responsive side this will help jump the pose gaps but then yeah if you don't have enough carriage coverage jumping that pose gap is going to cause like a jump in your animation so you're going to get much less quality so yeah if you don't have the quality the coverage you really are going to have to play with this and and yeah you're just not going to get the same level of quality that's just that's just the nature of motion matching uh something that takes getting used to it it doesn't work at all like traditional animation and i find there is quite a big learning curve it's a common misconception i find among the community that motion matching's this one quick animation character done yeah you can get 80 of the way there really fast but it's not always going to be that simple so yeah okay so i've added these animations you know what i'm just going to pre-process it i'm not even going to look at it and change anything let's just see what happens with the raw input uh i don't think i don't think it'll necessarily work well but we'll find out so i'll pre-process that i won't use optimization yet that'll we we can do that later um sort of an iterative thing so responsiveness brings blending in for coverage gaps no it doesn't bring blending it just allows you to jump the gap because there's a there's a gap in pose and we've got this big cost function and we want to and it wants to find the closest pose and the closest trajectory so by increasing that responsiveness slider it's saying well the trajectory part of that is more important and therefore you're going to just get a jump and pose at the moment it's going to blend at the same rate using emotionalization you could increase your blend weight you probably sorry your blend time so if you do have low coverage i recommend increasing your blend time there's only so far you can go with that though of course it can't be too long otherwise you're going to get really muddy animations alrighty i'll go to my graph and let's chuck in this um strafe now again i could have put this in the same motion matching node and then use traits to do stuff but this is just for the sake of demonstration i'm i'm going to put it on a simple toggle uh because i mean ideally you don't want to have a state for every single kind of motion it's just that it's it's going to be a bit like fiddly to set up traits on a stream um not that it's difficult but you're not going to be able to see it so easily so let's just get that over here and this over here and i'm going to just make a variable it's called strafe if you've just why is this not changing okay doesn't want to change the name of the variable cool i'll figure that out in a second all right i'm gonna copy my other motion matching node because it's kind of already set up so i'll show you since i'm just copying and not setting up from scratch actually you know what let's set it up from scratch i'll show you so we can just create one search motion matching if i can spell right that'd be great there it is i think there's something going on with my keyboard okay there we go i don't know what's going on there all right so the main thing you get on the trajectory on the motion matching note is this trajectory this desired trajectory that's your main input and that's kind of a variable that you um you input basically your user input your wasd or your joystick or whatever generates a trajectory with the trajectory generator component i'll show you that so i've got this component trajectory generator you can actually make your own if you you know what you're doing the c plus plus and basically we just set the input on that trajectory generator in the example project you see i've done a little bit of work to make it relative to the camera so it's yeah so your inputs relative to the camera no big deal there and we're basically um setting that and in our animation graph under our event graph i'm actually extracting that trajectory so you can see here trajectory generator i call a function get current trajectory and then i just set the trajectory variable um as you can see here it's a type trajectory and then we can just use that as an input into our strafing or our motion matching node so i'll plug that in you can either plug it in or bind it doesn't matter either way you like we do need to add our calibration here and we do need to set our motion data so strafe locomotion all right some questions theoretically i can help motion symphony by state machines to achieve good results yes you can look if you've got um so motion matching in motion symphony i've made it to be like a tool that you can like put in somewhere in your graph it's not like i have i didn't want it to be monolithic i'm it's not going to take over your animation graph if you don't have the animations for a certain type of locomotion then maybe you don't use motion matching for that thing so maybe you have like a uh a character that's a game where it's like exploration but then when you want to go into combat you want it to be really responsive so maybe when it's in exploration mode you've got some really high quality uh locomotion animations and you're just running around and then you switch to combat you go into your own system or maybe not maybe use motion matching for that as well the point is that it's it's modular it's a tool that you you use in your graph the way that you think it's going to work the tool the individual nodes they just do one thing they do what they say on the tin and it's up to you to kind of decide how you want to use that in your animation graph um so maybe it is a bad idea to you to use it without mocap captured animations but on the other side i have really many animations and variations of it's going to come up to testing uh again that link that i set in the uh that i um put in the comments to the google doc that actually has a lot of information on that if you do have cut clips that are um you know got a lot of coverage then that is going to help when it comes to mixing and matching animations of like from different sets it can be a little tricky because you know their poses can be really different again it's going to come down to testing motion matching like by its nature isn't particularly fantastic for cut clips however i've done what i can in motion symphony to actually make it work at a baseline and i do have i have set it up with some uh clips from kubold he's a an animation developer on publisher on the asset store on the marketplace sorry and uh and it works fine it's just not as good right you don't get all the complex movements all right hey man i love your motion matching plugin for unity uh it has really streamlined my workflow and has helped focus on other things as a one-person dev team keep up good work yeah cheers man i'm glad it's it's working for you and hopefully motion symphony can do the same for many people on unreal engine um yeah okay so for compilers now it shouldn't have an error cool and what other settings yeah we've got things like update intervals so we're not updating every frame if this is going to be a player character you might make this something lower right so you know once every 30 seconds an ai you might put it at you know 0.1 to 0.0.5 depending on the lod you can change it at runtime because you can bind it i won't go through every single settings here you do have a blend time now the blend time is just really small it's intended just to cover the small gaps so the idea with motion matching is to reduce the overall gap in the animation transitions and therefore you only need a small uh blend now motion symphony uses uh initialization for its its blending which means that it's it makes it much more efficient when it comes to synthesizing so if you don't know what initialization is look it up it's a ue4 feature it's just a different method of blending it's almost like a procedural post-process blending and that goes there um but yeah so we set that up now what else will i need i probably need um that's all fine i'll leave all these settings so the only other thing i'm going to have to do for strafing is i'm going to switch the trajectory and i'm also going to do this transition um see if i can add this variable now straight it doesn't want to call it straight do i already have a variable called strafe somewhere i'll change it straight thing there we go it must have not liked the name uh okay so strafing and we can transition back when we're not strafing well they'll we'll need more conditions you know because we need to be able to get out of here but i don't want to you guys know how graphs work i don't want to get into like setting up a full complex graph um and again i would probably combine the running strafing and and running in the strafing if i were you you might it depends how you want to separate things out maybe you separate it by speed maybe you separated by style i don't know or you could you could put every single thing of all your locomotion in one motion matching node theoretically but that would become really uh difficult okay so is there anything i missed on the questions no cool all right so the only thing we need to do is we need to flip a switch on the trajectory and we also need to set that boolean there so let's do that i will open up the character so we need a input actually i need an input let's add in an input for strafing so yeah uh if you've just joined recently um we're just going through i'm just doing examples and if you have any questions feel free to ask them plenty of questions to ask and and i've got plenty of answers uh and if you don't want to ask a question check out the faq it's very important it's very important to understand what motion matching is before you you dive in so there's the faq um okay so walking and strafe and this is just going to be a hold down shift i guess because i'm really using control probably not the best button but hey that's fine okay and we'll find that strafe event and we'll make the strafe variable here as well and we can set that so when we press it strafing is true and when we release it strafing is false now the other thing i want to do here is on the trajectory generator i need to change the mode so there's the current mode let's see if this works if i haven't messed it up okay so the current mode let me turn this debugging off it's a bit distracting uh search debug zero okay so the current mode the facing angle of the trajectory points you can see those little arrows on the green and um trajectory they they they tend to rotate to point in the direction that it's going with strafing that's not the case you want it to face the way the camera is going essentially so we're going to change this trajectory to a am i just waiting for epic to approve the item's cell now uh copyright text connected correctly yeah i'm just waiting that took me like a second to fix that um so yeah for those who don't know i did submit it and i had to make a change it was literally out of 250 code files there was one that had a copyright notice it said 2020 instead of 2020 to 2021 so i had to fix that but yeah um literally whenever they click the button it'll be available okay so i feel like i should have done the sprinting first that would have been a little bit easier can you do a quick demo on post matching into a montage or idle loop um so at the moment post there's no you can't pose match into a montage the montage has to do the matching that is a feature that i'm kind of working for uh sorry that i'm kind of working towards doing later uh you can pose match out of a montage but i don't have any animations in this project right now to show you so sorry about that but i will i am still making more tutorials and videos so if you want to see that stuff before you know buying then just um yeah wait for the tutorial videos to come out and i'll i'll show that stuff i'm sure there's going to be plenty of stuff with and this is my experience with all you know asset development is that there's gonna be so much stuff that people want that i didn't anticipate and that's gonna that's part of the continued development of motion symphony there's a lot of stuff even that i want to add to it but i feel like the core is ready to go okay uh something like existing loco into door uh animation or stationary action that you would hit from multiple directions distances yeah as i said uh so um okay so you're talking about all right so motion matching and motion symphony right now you're probably only going to use for locomotion uh if you're going to trigger actions you're probably still going to use just normal montages there is an action system under the hood in motion symphony i've kind of disabled it for initial release because i want to see how things go first because i'm not sure if that's the ideal solution as i said before i want to look at making a um a pose-matched montage like so something to do with the montages so you can just play it to a slot and it automatically kind of matches the pose however that idea came so recently that i i just there's no way i'm gonna have that out yet any chance we could see an example with ai following a waypoint system using ms i can't show you in this uh tutorial uh it's gonna take way too long uh in this video but i will do a tutorial on that again um basically you're going to have issues with foot sliding i'm not going to lie because right now we're using group motion and this is just the nature of animation it's got it's really got nothing to do with motion symphony you're going to have to combat the foot sliding with several techniques like foot locking you're gonna have to try and make sure your animations kind of match up and all that uh but basically at the end of the day the the way you do ai with motion symphony is you use the um the navigation path to to basically get an input vector for the trajectory and then off you go you plug that in um and then at that point the animation becomes completely cosmetic you don't use root motion obviously for that but yeah there's a lot of yeah it's a lot of uh stuff that you still have to do and that's why i say it's not a plug and play thing um i provide the tool and which is the actual motion matching the animation synthesis and yeah put it in your project any way you like and add whatever procedural things you need to do to get it to suit your game okay let's see about the strafing um where was i totally losing my train of thought that's fine though i'd rather answer questions because you know that's the most important thing um okay trajectory generator we need to change its uh mode i've actually forgotten what the variable is called so if we have a look at the details panel for the trajectory generator we have an option for mode somewhere what okay i've made a fool of myself here so i don't i'm not seeing it at the moment okay i'll have to come back to this one again anything i do like i'm doing this all live so it's a bit unscripted so i'm sorry about that uh i i will do tutorials on all of this stuff but basically on the trajectory generator you can change the mode to to behave differently and then we would get the strafe but since i'm struggling to find where what i did with that uh if that is a bug it will be fixed really soon i'm i'm very i'm going to be very quick with updates at the start of this thing so uh just be aware of that so i will actually just go and do the sprinting instead because that will be more simple as i said i probably should have done that to start with so for the sprinting i will actually add these to the to the existing run animation we won't do a separate state for that uh i will add those here sprint how long are you planning to hold your tool up to date oh um this is a long term thing so uh years years pretty much um it's just at the very start i'll be like updating like if there's a bug that i can fix straight away i will i will submit updates you know that day sort of thing um you know within reason right because obviously um uh i'm a person i'm a single i'm a single uh developer solo developer and i can only do what i can do okay so an unreal initial blending can be used for blending between clips is it also used for motion matching yep that's right i did show that previously if you just came in now um inertial blending is the what i recommend to use for motion matching uh it's the most performant and it gets a good result uh so where was it here we go initial blending initialization node there it is so i hope that helps um yeah so i plan to support motion symphony for a long time motion matching for unity i've been supporting for about a year and a half now and i'm continuing to support it and add features to it motion symphony i i don't see like it's there's so much that you can do in the space of motion matching and and animation techniques that i don't see myself putting it down for a very long time but yeah updates uh when i can do them uh usually as i said at the start it'll be real quite frequent and then it'll become more regular like regular intervals but it'll be um it'll still be you know relatively often okay uh back to where i was i feel like i should just ask questions in these because it's so hard to uh talk and uh and do the stuff at the same time i'm not so good at the multitasking all right are you planning to port to ue5 as close to release as possible wink wink absolutely um it really depends how much has changed in some ways i'm i'm it might not be that much different in the animation graph space we'll see i have no idea i don't have access to it but yeah i do want to support ue5 as soon as i am i possibly can that's pretty important to me and then yeah because i mean that's not going to be far away right so okay sprint all right i had some of these i think these are all there we go i've got my sprint animations nope hang on i've actually have to do something on my sprint animations they are not set up properly with root motion so i shall edit these asset actions bulk edit group motion all right we want to enable and force root lock all righty um here we go i've changed my folder structure recently so i keep getting lost okay so this should work there we go running along the path so here you can see me trying to sprint in small spaces almost breaking my knees and getting really really tired but that's beside the point so we've got some different plants and all that so we're going to add these in now the difference between these is they're going to be faster so we're going to have to have a longer trajectory and it could work with just that however you generally want to separate the animations by traits and we can set traits by adding the trait names here but we do need to register them in the project settings so i'll go to project settings and down the bottom we go to plugins and we have motion symphony and i've got a tray here called walk which isn't being used at the moment uh actually i might just leave it there i'll add another trade called sprint so this is if you want to separate have like separate different kinds of animations in one motion matching node okay so now i've got that there i could basically go to all these animations and i can add a trait to it you can add multiple traits and call it sprint now there's also another way you can add traits if you don't want to add it to an entire animation you can actually select the animation add a tag track and i could just call this traits or whatever doesn't really matter i can add a tag section and we can choose traits and we can actually tag sections up and we set the trait name here so that's pretty useful that's good for when you have two things like in the one so i might have some acceleration or deceleration animations i can tag half and half like a sword swing is there a way to have a bunch of those and then have ms pose match pick the one that gets the sword the closest to the target so okay so okay so you that's something really similar to motion matching for unity um i i have that sort of thing pretty much exactly that and it's an event system where you can basically it's basically like having uh stuff in here and you add in a a tag something like this an action marker and then you um you you play an animation from that now motion symphony is not going to support that at release and the reason is because i i want to use montages to achieve that um because that's kind of the way in unreal engine 4 that you you play those kinds of animations you play it to a slot and therefore you don't have this crazy uh you know the logic just becomes all hidden so that my idea there is to add have diff have all the animations in that montage and then it picks the section to start now yeah as i said that's not going to be in our release it is something that i do want to do it is a feature in my previous motion matching things but yeah not not straight away [Applause] okay um you can however have things like pose matching to pick animations so in the animation graph we do have some other utility nodes now this isn't exactly what you're talking about i i understand that for sure but let's just as an example um we have i'll show you all the different nodes motion match uh motion symphony all right so motion matching node pose matching node so this is one animation pose matches to one animation it basically picks the starting time of the animation we just have a multi-pose matching node so this is the same as a pose matching node except you can just keep adding multiple animations and it'll pick the animation you want so this is really good for like a stop animation if you're not using motion matching and you're having a graph but you don't want to have heaps of states like one for a left foot start one for a right foot stop you could add them all in you could add in your walk stops your run stops and you just add all those animations here and then it'll pick the right one and the right time to start to get a good pose match so there's those there's also a transition uh what is it a transition matching node transition matching nodes it's exactly the same as a pose matching node except you can get it to sort of automatically pick which direction you're going so the direction you're coming from in the direction you're going and then there's the distance matching node and that is um that's well that's not the same at all but this is experimental so keep in mind that okay sprinting get back to our running locomotion and i believe there might be some sections we need to tag out as do not use so i did set the traits i'm going to just set that on all of these sprint on all of these sprint animations so you can see why in some cases you might want to split out your animations from your motion data into different states this is fine but this list could be much bigger if you're having uh everything in here and it can be a bit overwhelming up to you really it's a it's personal taste how you want to do that with the with the sprints particularly because i couldn't you can't fit them all in one because they take more space to actually act out you're gonna have even more uh files whereas with the walking you can fit a lot into one take so i'll just quickly add all these not too many questions today compared to yesterday so but uh yeah if you have any feel free to fire away getting getting lonely here actually that's fine um okay so we set up those traits now i'm going to turn off optimization because i don't want it to do that for now just for time's sake and let's just leave it as is and pre-process it this list is like in film slim plug-in it's awful no selection option um no selection option yeah look i i'm not particularly a fan of it myself ue4 editor um [Music] code is is something that i have to learn and it's actually quite difficult i do want to improve this a lot with in terms of having categories and stuff like that but yeah at the start it is what it is um yes sorry about that it is what it is uh in this case but you know um i do that is something i definitely want do want to improve even to the point where it's like modular so you actually have separate modules that you plug in here or even um like foldouts and categories and that's what i eventually did in motion matching for unity it's just that doing this editor stuff was such a big learning curve for me coming from unity into unreal engine 4 so yeah but that's also why i i like to separate it out a bit but yeah so let's save that so i've pre-processed it and now i need to set up the traits now i believe if i hit play we shouldn't see any sprinting animations whatsoever because obviously they're tagged with traits and only the traits that i ever input into the system are going to play so we need to do something about that so if we go to our animation graph there's two things we're going to need to do here is licensing with source code slash compiling on consoles and option um yeah yeah so you can get the source code so if you are um so it's only going to be officially on the on the page on the store page it's only going to be officially supporting windows however source code is available you just need to send an email to me the email is in you know you should be able to access the email one from the developer page right and you just email to me your invoice and i'll give you access to that github you can clone it you can even do push request pulled requests if you want um and then compile it yourself uh okay a bunch of questions coming in is it possible to motion match swim movement that would be very interesting to me yes if you have the animations to do it then yes you can uh just keep in mind the animation requirements uh from what i've found pretty much any any kind of motion is possible as long as there is motion if there's not much motion so like standing still or turning in place then it works really well if if the animation's really still then you probably want to transition to another state and just do that with swimming you might want to match the hands instead of the foot i'm not really sure whatever whatever bone drives the motion you'd have to test it out uh is it uh so any other questions so will source code be available as well with purchase so that people can add such tweak things if needed so yeah a lot of a lot of um plugins actually always have source code that people don't realize and it's actually stored in your ue4 folder and i'm not even sure how to opt out of it i know you can but i always include source with mine so if you can find that it's actually where it is installed and in your unreal engine folders it'll have the source code there but also as i said before send me an email with your invoice and i'll give you access to the github repository and you can that's probably the better option anyway because then it'll stay up to date and if you're there as well you might even get updates you know out of sync i'm gonna it's easier for me to push to github than it is to do an unreal engine uh unreal marketplace update uh just wanted to say i'm glad to see all the modularity you've put into us yeah thanks um yeah i i i like it this way i i ended up doing that in motion matching for unity based on user requests and i i want to do it even more um particularly as i said with the with the these lists here um i'm not 100 happy with it but it's functional enough that it works uh for now otherwise i'm going to be delaying the the release of this for even longer how would one set up a quadruped with ms why what kind of quality could we expect maybe an example at some point i'd love to do an example i just don't have animations uh so if anybody has animations or has mocapped a dog or a cat then uh get in contact with me i'll happily do it i'll show you what you would have to do um so in the motion matching config you've got this you've got the the bones that you choose now you would probably i would imagine for an animal you would have both the left and right uh front and back foot for a quadruped and that might be it you might have another centralizing bone so you can just add those bones there so like in this case hand and you could do this for a human as well but i find it's generally unnecessary keep in mind also you can have different configurations for different motion matching nodes so for example um this is just going off topic from what you just from from that question just something worth knowing is that so each individual motion matching node can have a different config because it's completely separate and they can still match between each other because of this special node at the end of the graph the motion snapshot node so this motion snapshot node captures all the bones that were matching across everything across all our motion matching and pose matching nodes and sort of records it so that enables uh pose matching and motion matching between states okay so how could one uh yep can you quickly just discuss stride acceleration or slope warping combined with motion symphony uh yes oh sorry so let's have a look at this i'll just play this animation uh okay what have i done i i changed something here oh right of course what did i do this was working a moment ago did anybody see what i did i'll come back to that question in a second let me just see what else there is do you have a license in place for the source code or is it covered by the marketplace it's covered by the marketplace uh i pretty much have to keep it that way is there a store is there a store globally um it's only on the marketplace for now on um it's it's probably not out yet still it's waiting for uh ue4 so epic games to um approve it so there's that okay oh what have i actually done here so yeah it should be should be globally available um but yeah so this is fine let me see if walking is fine walking's not fine output log motion matching mode failed to update properly setup's not valid okay what have i broken oh sorry of course i added i added these uh these um this config and i didn't pre-process i don't actually want that anymore uh and let me just double check this is okay yep this is okay okay cool silly me of course of course that made it fail i'll just save those there we go okay we're back okay so on to on to that question about strider and um and like that sort of thing stride warping so with motion matching you can only ever play the animations that you currently have so in this case i've got walking animations and they go this speed there's no like slow walking there's no fast walking uh if i run then i have running speed so there's nothing in between and if you do want something in between then you're going to need stride warping um you could change the play rate that is you know supported but i wouldn't do that it just wouldn't look good right speedy animations or slow motion animations like you're getting frozen so if i want a slow walk i would stride warp this to be slower or faster and then i might even want to go faster than this running and i might stride warp to have that as well now you are going to have to do some work in terms of the movement because the movement's going to be modified um but yeah so that is stride warping slope warping is going to look work exactly the same any sort of grounder tool or ik uh that comes in after the fact is going to walk the same uh it's probably not too much of a use for bank walking or acceleration warping in this case because motion matching kind of does that itself so like you sort of get the acceleration and like when i slow down you get the deceleration stuff anyway so it's kind of built in so not really much of a use in that case same with banking you get this you know if you have the animations you get the banking uh i do want to look into using orientation warp to like fix errors to help it be more less reliant on root motion um hello peter all right so yeah i think that that is that question answered and we've averted the crisis of it not working so this is pre-processed i've set up the traits we need to go into our uh character here and get rid of this i'll change this to sprinting so when we press this it's going to sprint when we're holding it down and it's going to go off sprint the other thing we need to do is we need to change the trajectory because actually we don't need a boolean sprint because we're not using states we need a trait so what we do is we create this like it's like a query so it's called a motion trait field so type motion trait field and it can store multiple traits in one it's basically a bit field so we can say required traits and i can just clear i think it's called clear or is it reset motion trait field add traits sometimes i remember forget my own functions especially the blueprint ones so we want to add a trait to the required when we add it so we want to add the sprint rate now you would probably use a more efficient way of doing this so there's different functions for this so add trait field you can add it from another field or you can add trait from well you can add a whole list of traits but again you're using strings so what you probably want to do is at like load time you want to cache these traits and then not use the sprint but i'm just showing this for demonstration purposes and then for when we stop sprinting we want to remove the trait i'll remove that tray okay and we are going to need to require traits hang on which okay i think i've already got something for this so required traits i've already got that there so i'll use the one that already exists okay and we need to change the trajectory length because the trajectory's got to go faster right so i think it's roughly 600 so we'll go set max speed set it to 600 and i'll set it back to it's roughly 400 this isn't the speed of the character i mean it might be the speed of the character but this is more feeding into the trajectory generator uh and it's gonna make it longer when we sprint let's see if this works there we go it's working so you can see as i press shift it it changes the speed of the trajectory generator and it gets longer and it also triggers that trait i feel like yeah it's probably about 600 now there's one thing i could actually do to make this a lot better and it's actually with the source animations itself um and that is to actually create a loop and it's one thing i just haven't done because i wanted to just use this rule but in your projects i highly recommend creating loops so for example i've got this um not turn continue it should just be a neutral what's the name of it i named it got it somewhere here start stop neutral i didn't add it there you go that's interesting well basically i'll show you for the um i don't have it with sprints either basically what i'm saying is you want to add in a run loop that you have cut up you might want to have three or four cycles i highly recommend that just for variation and then you actually make it a looping clip and then you check this loop button on it and that will make your straight runs much more consistent but yeah pretty much here we have managed to we've added the sprinting pretty easily so a full you know different type of locomotion didn't take me long especially since i'm talking through this it's kind of hard to do at the same time and that's working pretty well i might does the acceleration acceleration work very well i'd need to check that so it could be improved a little bit i might do that before i end the stream unless we have more questions [Music] so we'll go in here there's a lot more we can do once we add the animation so as i said you get 80 of the way there really quickly and then there's more you have to do there's some manual work you have to do so we'll go into here accelerations i'm looking for the accelerations i didn't name these i named these very quickly so i probably could have named them a bit better no counter plants counter turns plants no snake wide loop sprint forward loop oh okay i actually have a sprint loop but it's only one it's only one loop though so it's not very good i'll ch check loop on that anyway okay here we go start stop yeah here we go here's the sprints here's the accelerations so this is where we need to tag things differently so i'm going to remove the sprint tag from the whole animation and i'm going to add a track for um so traits i'll say run traits and i'll add another track for sprint traits how you do these tracks is up to you it's purely cosmetic and for organizational purposes uh and we add in that tag trait now let's see i'm actually going to add another one called do not use so i do this for all my animations you'll notice for my running ones i've already done it i've done a lot of do not use posing just to cull extra poses that aren't necessary it muddies up the the set and and uh i like to keep it clean oh some more questions would love to send you some dog mocap might not have enough coverage because dog if you were interested in doing a quadruped non biped example maybe for another day yeah absolutely um send it through and we'll see how it works i mean if i'm sure it could work even if the coverage is bad it could um it'll work somewhat so it'll be an indication so if we put curves in the animation such as speed curve that reflects the speed of the animation are we still able to access those those curves while using motion matching absolutely curves are supported uh notifiers and notifiers are supported it works exactly the same same way just yeah on the source animation you can just add curves and notifiers and they will trigger at runtime i ask because i'm considering how to use stride warp with motion symphony yeah that's exactly it exactly exactly how you do it all right so i'm going to also add some do not use tags so you can see what i mean here by motion matching gets you 80 of the way there really quickly and then you've got to add these tags and this can be time consuming but i feel like it's really simple work compared to setting up really complex animation graphs okay so this is like a walk to sprint interesting so in this case because this is in the running node i'd actually would do not use tag this whole that whole loot round what's this next one it is sprinting to decelerating to walking so we're not doing walking in this case so now we got running i think that was accelerating from run to sprint so this is where we want it okay so the acceleration starts about here so just a little bit before i'll start this and we'll just expose the acceleration part and i'll do not use the rest of that and then on the other side we have sprinting decelerating so i'll probably allow that from pretty much the beginning there and then i'll do not use the rest of that oh there's another one hang on what is it that was just another attempt you could use you could use multiple redundancy isn't bad but yeah i'm just going to use the one so basically just these two sections and yeah again in this case you probably would be a bit more choiceful with your animations and you'd actually cut this up like there's no point having all this here if you're not going to use it though you can just add it to the other animation as well so what do we have so in this section we've got sprinting so actually considering i am tagging out i forget that train of thought so this is sprinting so because we're accelerating into sprinting that whole acceleration animation needs to be tagged with sprinting so i'm going to put sprint here and this section is decelerating to uh running i might actually just start it yeah here it's decelerating into running and i don't have a trait for dece for running that's just the default so i'll just leave that blank you might have you might want to put a trade for running but in this case we only need to take up the sprint i'll pre-process this see if it's any different it'll be interesting just to find out um save that it does take a little longer to save because of the number of poses so we'll sprint could be a little bit more responsive and the way that we would fix that is we would increase the um speed of the trajectory for one and we might even modify the calibration a little bit that's another reason why sometimes you might want to split split it up into different nodes is because you can have different calibrations you can also favor things so yeah it works pretty well cool uh i might leave it there now uh with motion matching there's a lot of work you can do on it and it just each sort of iteration of work and improvements to tagging and improvements to cost multipliers and stuff it just makes it better and better but as you can see we set it up pretty easily in one go there's one last thing that i do want to show you and that is this cost multiplier now uh if you know how motion matching works it's all about uh the cost multipliers for um sorry it's all about finding the lowest cost pose or the closest post to your current one so we can actually affect this for specific animations by adding a cost multiplier to that animation and we're basically saying hey i like this animation i want it to play more often and i often do this with loops i give it a cost multiplier of about 0.85 to 0.9 and this just makes the loop more likely to play than other sections of animations now we can do that on the whole animation itself or we can we can also add a track and we can add up and we can tag up specific poses with um cost multipliers and then just put the cost multiplier in there so yeah that's another useful feature that i use quite heavily to improve the outcome man those stops into different directions acceleration motions look so freaking amazing oh thanks yeah like it's motion matching like it's just like it's the nature of motion matching itself that makes it possible um and yeah it is really cool i agree with you no surprise there um so yeah i might leave it there we got the sprinting done a bit of a disaster trying to get the strafe but uh i'll again there will be tutorials where i'm not doing this all live and i i'm you know i'm ready for it more coming uh they're not all out yet but they'll just keep going hello anders uh so yeah if if you've got any more questions i'll stay on for just a little bit longer if there's any more burning questions that you want to ask but otherwise i'm pretty much pretty much finished here if there's anything you want to see um you want to talk about we've we didn't talk about mirroring much we didn't talk about optimization very much [Music] yeah and there's a lot of examples so like my main focus has been motion matching how many dollars that's not something i'm going to talk about on a stream i talked about it last time basically my philosophy is that uh it is it is um it is what it is and uh but yeah i'm not gonna talk about that on stream sorry you'll you'll have to see for yourself part of the reason why it is the price the way it is price is because i want people to think i want people to think about what it is before they buy it um i don't want to impulse buyers like i'd rather people know what they're getting and actually decide yes i do actually want this than to just see a guy running around with high quality animation and going click buy instantly maybe as a business person that's you know counterintuitive but you know rather happy customers than than people that bought something that they they didn't realize what they were buying that's part of it but also it's just it's a big plug-in and put a lot of work into it but yeah um cool any other questions no it's not that much no no no no no uh not that much it's probably like it's just um there's more there's more expensive assets on the on the marketplace but yeah it's more than 100 i'll put it that way so uh it's an expensive impulse buy maybe if you're rich i certainly wouldn't impulse buy that but yeah look again especially for those who haven't been here the whole time i linked a whole bunch of documents so the the documentation here is quite comprehensive um have a look through it and see what the features actually are because this is going to be what is uh what the plugin is and and i've gone through a lot of effort to do this there are also the tutorials but the tutorials aren't as comprehensive as this documentation yet um so yeah have a look through this again i'll link it one more time there um yeah that's the right link so check that out especially the faq a lot of frequently asked questions there answered the mirroring profile is interesting could you show some more of it um yeah sure so i've been mirroring these animations have been mirroring the whole time so it's actually runtime mirroring here and the reason why i do this particular with these animations is because with raw mocap you can have some left and right bias when you mirror them it doesn't do that so here's the mirroring profile you basically have a skeleton and there's all these mirror pairs now these mirror pads are created separately i mean they're created automatically so you can create a mirroring profile i'll just show you quickly and uh open it up and we choose our skeleton we right click and say auto map so this is going to automap the bone pairs based on your left and right effects again all this information is in detail in the documentation and it's basically a list of rules at run time for the system to mirror the poses now that says that's where the automation ends there is some potentially some manual work i find every skeleton is different so you might find it it won't mirror properly just with the defaults you might have to go to specific bones and change some of the settings i had to do that for the mannequin and the mirroring profile that comes with the example project has all those edits in there so you can take a look at that it is something i want to automate in the future as well like completely automate um but i just haven't had the time and i'm not sure how to do it at this point but yeah so that is the actual mirroring profile uh when we come to motion matching we set the mirroring profile in the motion data asset and because it needs to pre-process those poses mirrored as well and then it's also going to use that mirroring profile at runtime for all other nodes you actually set it up on the node so if i go to if you have a look at the idle i've got a pose matching node you can see i've enabled mirroring and i've got the mirroring profile and that's just so we can stop either left foot or right foot forward in this case instead of just the one way and it'll automatically pick which one that is okay um is there a similar system in unity yes there absolutely is and it is made by myself uh it's called motion matching for unity and unless you're talking about a specific feature in that case um it's very different engine in terms of the animation system it's it's like night and day between them but unreal engine actually it enables a lot of the things that i can do with motion matching the way it is so the animation graph and the the groundwork that ue4 has for animation just allows me to do much more you're not going to get for example this ability to have motion matching in states in unity it's just it's actually i don't even think it's possible um if it was i would have done it that way maybe it will be in the future because they're working on new animation systems for dots but anyway that's that's beside the point uh getting a bit off topic there okay folks uh i better go uh i thank you all for watching if you have um if you have any other questions you know you can ask me on twitter um there will be a discord page that i the the link there's no link in the documentation at the moment it's sort of like a placeholder coming soon thing but there will be a link to discord um and you can get verified on there and and get support through discord uh i'll let you know when that is all set up so yeah without uh without further ado thanks for watching i'll i'll see you around i hope that was that was useful for you
Info
Channel: Animation Uprising
Views: 1,085
Rating: undefined out of 5
Keywords:
Id: 6JNkhj2krm0
Channel Id: undefined
Length: 81min 48sec (4908 seconds)
Published: Wed May 19 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.