Motion Symphony - Live Q&A / Demonstration

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
alrighty hi there folks and uh welcome to this q a live demonstrations think uh stream for motion symphony um no standout no there wasn't any sound so that was actually an automatic character running around i wasn't controlling that so uh i'll just ask you to bear with me it's my first time uh streaming this and doing this so this stream is going to be pretty short um we'll just be i'll just be answering your questions really and uh if there's no questions to ask i'll just be adding more animations to the example project just so you can see what's going on let me know if you have any issues with sound if you need it to be louder or quieter but yeah let's um let's do this all righty so yeah i'll just um i'll turn off that automatic uh trajectory it's just a thing that you can kind of debug on the trajectory generator automatically runs your character around for a while i thought that would be a interesting starting screen but what we're looking at here is um the example project and i've kind of set this up uh in a really basic way so i i don't want to go over the top with this kind of thing and make a full uh i just want to focus on what motion symphony does and therefore in the blueprints you know you might do things slightly differently a bit more efficiently but it gets the idea across and i've added in a whole bunch of these comments yeah go for it if you got any questions just uh fire away um but yeah uh this is basically in this demo scene at the moment we've got just you know normal running locomotion and if i hit control i've got the walking locomotion i've also got a sprint set and a strafe set which i'm planning to put in over this stream and the next one uh which should add a lot more diversity to this um to the animation okay so what is question what a pr what's a proper way to rotate character in place in top down perspective while using motion symphony see well when it comes to motion symphony it's very modular system so i'll just show you the animation graph here the idea is not to take over your animation graph personally you can do like you can do turn and place with motion matching but i don't recommend it based on my experience so you'll see here in my animation graph i've got my two motions uh you know states with motion matching modes here for run and walk i could combine them into one they don't have to you can you can put it all in one i just like to separate it a bit but you can see i've got idle as you know it's not motion matching and i feel the same way about turn and place there's not a lot of motion for turn in place animations so i find it's easier to just do it in a more traditional way so any chance of including a more comprehensive example project kind of like als v4 meaning you can have quite a few games with it right out of the box uh no not really um it's kind of against my philosophy of developing plugins i know some people like to develop these templates for games and it's just plug and play you just make a game i don't want to do that that's not my goal my goal with this is to make a professional tool to make games it's not designed for plug and play so i know that might upset some people but um it's just really what my target audience is for this uh it's a lot of work that goes into making that kind of thing i want to work on the tool and um distribute that and that becomes uh it takes away from development on that tool because there's a lot more that i still want to do for uh motion symphony itself the plug-in and doing these really elaborate examples um it takes a lot of work uh rolling sliding and climbing are questions i have okay so yeah that's all sort of like action so so far what i've shown is really locomotion when it comes to rolling sliding climbing etc you might have seen my other motion matching plug-in for unity there's a system in place for that where you can trigger explicit animations that just play right out and the the idea there is that well with motion matching it's changing animations all the time whether you like it or not just based on the trajectory now when you slide roll crouch attack any of that you explicitly want to play an animation now there is an action system under the hood that i haven't exposed which will come a little bit later however in unreal engine it's a bit different to the way i did it in unity where you trigger these events to play and that unreal engine has the animation graph that is customizable and you can still play your montages to slots i would highly recommend doing that what i do want to add in the future going forward is montages that are um somewhat uh like pose matching montages so that it pose matches to the montage the motion matching will automatically match out of the montage but yes uh definitely ue4 has already got that system of playing montages to slots in and i don't want to step on those feet like i don't want to change fundamentally change everything about ue4 when i when i make the uh this asset um okay it's more how how can you combine this with strider properly i'll talk about that a little bit later will this work with paragon animation start and stop okay so there's a problem with paragon animations i tried to actually use them they don't have root motion and that's a problem for motion matching now keep in mind when i say that you don't have to use root motion so this character right now is being moved with root motion so that's fully supported however i know a lot of people aren't going to want to do that you're going to want to have a capsule and the animation will just be purely cosmetic now you're going to have foot sliding issues that you're going to have to deal with and that's just a part of nature with animation is if you're going to have uh you know a uh controller-based movement there's going to be um you're going to have to use techniques to overcome foot sliding but uh what was i saying um i forgot what the question was uh house oh yeah so paragon animations don't have uh root motion and you need the root motion to generate these trajectories so i'll just show you in the um the motion matching data here so each of these animations has a root motion you can see the root motion for the whole animation in this if i scrub along here you'll see it plays along those lines now without the root motion the system can't generate a trajectory so i'll just show the trajectory here and get rid of that green one so this trajectory in the future in the past if you don't have root motion there's just no way to generate that properly i would create a lot of manual work and at that point you should just have a root motion animations it was a bit disappointing because there's a lot of animations there and i wanted to use those but yeah uh absolutely love the way this looks thanks man um i've put a lot of work into it and there's still a lot of work to go like um uh don't get me wrong i i the core of motion symphony is really like i'm really happy with it uh particularly the optimization i think is the most challenging part in having this editor in place but i want to take it way further than it currently is um okay so i'm working on a vr based mocap system and i was wondering if you would if you think it would be possible to use this to drive lower body animation if i got the room scale velocity of the hmd okay so you're talking about like the the rotational velocity because i wouldn't imagine you're running around with the with the head mounted display on um uh look i i think that would work um keep it you gotta you gotta consider like a lot of the stuff's experimental like there's so much people want to do with motion matching and i get questions kind of like this all the time could you do this and could you do that um well the cool thing is that you're just doing a pose right like all that's output from the system is a pose uh it all boils down to that so it's really simple um a a sequence node so if you just have a sequence like it outputs a post the motion matching node does exactly the same thing whatever you do over the top of that motion matching node so here we go just outside suppose it's up to you so you can you could just do an upper body um how it would actually look i couldn't tell you because that's going to test but yes the lower body would motion match and you know the upper body based on your movements would um well it would do what you wanted to do and if you wanted to somehow marry them up a little bit there might be a little bit of extra work there um but yeah you'd have to you'd have to try it out but in theory getting this basic but lower body locomotion and upper body movement shouldn't have a problem at all um yep cool cool awesome all right well um yeah keep your questions coming i'll i'll answer them i'm going to get started adding in the uh running uh sorry the sprinting and striking i'll do sprinting first because it's probably a little bit easier and i don't want the stream to be too long today as i said before for those of you who have just joined i'll be continuing this tomorrow with a longer stream this is just sort of testing this out uh it's the first time i've streamed uh this so or done a q a like this so we'll get going uh thanks so much also really appreciate that thank you um yeah all right so we have a whole bunch of animations that i've imported i captured these all myself by the way not that that matters but a little fun fact um so i'm going to oh so yeah it's really important that your animations have to have root motion enabled again you don't have to use the root motion at runtime if you look at my i have to say that so many times you're going to hear me say that so many times because people get worried about that and with good reason so in our animation preview settings actually where is it go to edit defaults you can change the root motion so i've got root motion from everything you just turn it off yeah so even if root motion is active on the animation it doesn't matter okay so let's start i'm going to use the exact same calibration module and config module if you haven't seen the tutorials on that actually i'll show you just really quickly here um configuration module tells us what we're going to match so you can see my trajectory points there and my bones that i want to match left foot right foot pelvis how do you capture the mocap suit yes i have a x-sens mocap suit just uh extends avinda or a window a window and it's one that you don't have a full body suit you kind of just have straps that you strap around it's really good it's really amazing like it's not super cheap but it's way cheaper than a like going to a studio and it's amazing like the software has a lot of like machine learning in it to fix up any errors so it pretty much comes out perfectly smooth so yeah i was able to do it all by myself but yeah it wasn't a cheap startup cost but you could just keep recording keep recording just anywhere out in the field anything and the cheap version of uh xn's the windows is no less good quality than the more expensive ones i've been using motion matching for unity for almost a year now how different is the workflow from motion symphony um i might go back to that one i mean the main difference okay the main difference is okay i will actually talk about that now um the main difference is the animation graph so with motion matching for unity you've probably uh if you've used it it's so the animation graphic motion in in unity you can't like it's not as customizable right i can't make my own custom nodes and you can't do this it's pretty much just a state machine and i can't put motion matching nodes in those state machines so the biggest change in the workflow uh with motion symphony compared to motion matching for unity is that you can actually split it up with your motion matching nodes so for example i've split it up run and walk here because i think this is personally easier to visualize if i had too many states maybe i would combine them but with motion matching community you can't really do that you've got to chuck it all in one really big thing and it becomes really monolithic and and i've had no choice but to make it that way to basically take over the animation system uh whereas in this case it's more a case of using it as a tool and and i don't think you should even but use motion matching only for example my idol i've got pose matching state here and i'll show you why that is quickly um so you can actually stop if you look at the idle animation it's both left it's a left or forward but i can actually stop on both feet let's see if i can actually get it to do it there you go stopped on the opposite foot and the reason i've uh so that's why the pose matching node is there um i've actually got it mirrored so you can see here and it can choose either the mirrored or the non-mirrored version but you could take this a step further you might even have your stops as a multi-pose matching node so when you take your things off the keys it automatically goes to stop and then you have even more control so it's just way more control otherwise pretty much everything's the same um yeah a lot like a lot of the concepts are exactly the same the core motion matching is exactly the same i haven't changed it um from from motion matching for unity the optimizations are different but then again i've actually got to go back to motion matching for unity and update it with some of the things that i've developed for this um you're impressed thank you what motion capture system name sorry didn't hear uh extends a window so um yeah it's quite expensive but then again compared to a full-on studio it's it's chips like i did pay like it was like 16 grand so yeah that's a lot of money it was a lot of money for me but if you're really serious about mocap and and you want to get good mocap on a budget i wouldn't even bother with cheaper ones than that um yeah but yeah it's probably more of like a small studio thing plus all right back to this okay so yeah i've got my motion config i'm going to create another motion data for sprinting um actually there's two ways i could do this i could make it a different state or i could make it part of running i'm actually going to make it part of the running one and i'll just add in the the sprint animations this is all live so i don't know what's going to happen it might not work properly and i might have to try and go back and and change it but that's fine i haven't named them that's going to be a problem oh well uh yeah yeah no like it's expensive yeah it really is um but like 16 grand for mocap that is top quality is really good really um i've done motion capture in a studio with cameras before and it hasn't been as clean as the xn starter that i've gotten and and that'll cost you 500 bucks a day 5 000 bucks a day sorry um let's go to my animation i actually don't have to name these otherwise it's going to be too difficult this this is sprinting start stops i think i'll have to undo the lock because i can't actually see the dang thing probably should have named these beforehand so sprint start start stop so you can see uh for those of you who aren't familiar with motion matching um like these animations aren't cut up at all they're just full on most mocap takes i think this is counter turns it's hard to see it's hard to tell when they're like in place uh let me see if this will let's turn that off for now okay yeah counter turns i love the counter turns they they really they're cool um let's count ten we definitely want those ones sprint counter turn ah it's probably more counter tense i need like a toggle just to see like with root motion he has more counter turns actually i'm going to just select the whole bunch of them and turn that off for now and then i'll turn it back on later asset actions bulk editing root motion bang bang as a feature i love it like this feature is so underrated in in ue4 i love it okay this is just going to be plants you get really tired doing this by the way i was i was yeah i was very very tired after the day after a few days well i did it over multiple days every time i was very tired uh okay sprint plant and with the sprints i didn't have enough space i actually had to uh this is a counter plant compound two i had to split them up into like each individual movement i think that's like a plant of some kind sprint oh like a 45 plant well anyway um yeah if you've just come in as i can see there's more people coming in this is just going to be a quick stream uh feel free to ask questions i've just been answering questions so far and in between that i'm just doing the uh sprinting adding sprinting to the example project um so yeah keep the questions coming otherwise i'll just start talking randomly and and about just about anything there's another sprint plant sprint uh 90 degree plant lucky i didn't do on my knee while i was doing while i was recording these animations uh okay this is one thing that's interesting with motion matching so you're either gonna want to have you know either you're going for something that's really realistic or something that's really responsive and i mean motion matching does the realistic better you can make things more responsive but the thing is that um the best way to get really good responsiveness is to have really good responsive animations and if you take raw mocap data it's pretty much impossible like i was trying to start and stop like as fast as i possibly could like to the the you know to the detriment of my knees but it's still not enough if you want a really fast paced game where you want to change you're gonna have to modify your animations or just alter them so that they're really fast and that's how you get that's that's the ultimate way of getting better responsiveness in in motion matching but you can see here it's going to take a few steps the motion matching might skip a few bit of that depending on how you've calibrated it but it's still going to be a bit longer uh good work man i was wondering if you can generate the trajectory path based on the hand movement um yes look you can generate okay so if you want to create your own custom trajectories uh that is something you can do it is going to require some c plus plus so i'll just show you quickly um let me just name this so this was sprint um it was like a 135 plant uh usually i'd have less files than just more angles so um let's have a look quickly at the character and how the trajectory is generated by default so i've added in you know the basic trajectory generator it's on the character and it's a component and um i've created a base class for trajectory generators so is trajectory generated base and that holds a lot of the functionality so if you look at the source and you can get source um if you look at the documentation you can request access to the github repository and i recommend you do if you do plan to do any um coding and stuff uh with with motion symphony um and yeah you can you'll have to you'll have to like write your own logic you'll have to override a function and write your own logic for predicting the future trajectory so whatever whatever your logic is behind uh creating movement with your um with your hand movements you just got to convert that into uh trajectory points you basically do a loop of iterations into the future until you get a bunch of trajectory points uh it is an advanced topic i only recommend it for people who want to get in c plus um but yeah that that is possible for sure uh cool man will you be including animation sets with motion symphony so everything you see here is going to be is included in the in the example project and there's a link in the um the documentation for the example project let me just uh see if i can whip that up somewhere so give me a moment okay so if you um navigate here uh actually chuck this in here now um and that doesn't have the plugin in it you have to actually have the plugin and then add it to this project but you'll have all the not source you'll have all the um all the animations that i'm showing here in the in character animation social like emotions you've got run sprint strafe and walk and and some idols uh so yeah these are relatively raw mocap data data keep in mind like if you're doing something really production ready you might want to you'd probably want to modify them but it's a really good starting point uh the only modifications i made to these animations like manually is i cleaned up the root motion so that it it didn't like sway from side to side and it turned smoothly that's about it the rest is pretty much raw um all right cool so with epic buying a lot of cool things lately and the metahuman stuff motion symphony coming out i'm considering switching engines what are your thoughts on that um prepare for a lot of pain look i love unreal engine 4 and it is my favorite engine now um for a lot of reasons and one of the reasons particularly for me is just how good the the the groundwork for the animation system is it just allows me the freedom to do what i want to do so for me the animation system is incredible compared to what i was used to in unity um but you know there's good and bad of both engines like i'm going to be completely biased and say that there's probably more good in unreal engine 4 but it is going to be very very painful i it was very frustrating switching over for me learning it all and learning how to do things unreal's way so just get used to the pain of that so i can't say i recommend it or don't it's something you're going to have to choose for yourself plenty of games made in unity plenty of games made it unreal um but you know if you've got nothing to lose then then go for it uh looking forward to checking the system out yeah thanks man uh i can take pain here yeah um yeah that's why i bought mxm yeah it's uh so for a bit of context there motion matching has quite a learning curve and that's it's something that people don't realize because you see these videos and a lot of the presentations make it look so easy like oh it's just one node look you just get all this you just click a button and and it's like yeah yeah motion matching can get you 80 of the way they're like really fast but to get it perfect it can be a bit of work and um and that iteration time increases dramatically once you know what you're doing and once you're used to it um so and yeah i think a lot of my customers and mxm can attest to that you know it's not it's not all it's not it's not a make a game it's not an animation button and that's i've been trying to fight that concept like that idea that's gotten out there that it is it's really not um yes you can create high fidelity animation you can get high fidelity animation really quick with the caveat that you need to know what you're doing and um and and that you have really and you have good source animations that's like that's the most important and yes cut clips are supported with motion symphony and i might show you that at some point but uh um uh it's not going to be as good as my cap okay so uh i'm uh i mentioned a good very quickly yeah that's fine it's fine uh so motion symphony is a streamlined version of mxm question mark um it's it's it's the best version of mxm i could make in unreal engine 4. so look if i if unity system was more allowing i would make um i would make mxn the same as this uh so it it's more streamlined but that's more because of the nature of unreal engine 4 um it's but yeah it's the best version of of of motion matching that i could think of making is is what it is it's not like i can't actually go back to unity and and make it like this some things i will i'm i plan to take everything that i've learned in making motion symphony back and what i can implement but uh yeah so thank you is it possible to generate the trajectory path based on hand transform during the processing phase so the trajectory is not based on root transform but instead let's say right hand um not at the moment no uh so so you're actually talking about the trajectory of the hand um i think i'm not trying to be rude here but i'm not sure if you're if the um if you're unfamiliar with uh if you're familiar enough with motion matching because you you need the root motion the trajectory is the root motion the hand motion is more of a pose thing uh so trajectory is more about moving where you want to i don't know it's really complex i think i've had this question before and it kind of it kind of was confusing for me so maybe we need to talk a bit off stream about that i'm not sure but yeah no you can't pre-process with anything but the root at the moment uh you can't pre-press the trajectory with anything but the root uh will you show the current distance matching implementation uh on stream today i know you said it's not finished yet but we wanted to get a general idea of how it's working at release i won't show it today i might show tomorrow i just don't have actually very good animations in this project now and i don't want to mess around with moving animations in and out if you are buying motion symphony for distance matching then don't do it that's my recommendation it sounds almost a bit counter productive for me as a business person but i'd rather people um know what they're getting and not get upset once they buy it and it's not their expectations don't buy motion symphony right now for distance matching uh i will i will gladly let everyone know when it's when i think it's ready uh maybe i'll show it on stream next time all right so uh let me just quickly get uh finish these and so what do we have here these are just plants again plant 180s plant um i can show you sort of how it's set up but yeah the the the reason is uh i wanted to do something a bit more with distance matching and that is motion matching like distance matching within the motion matching itself as well as just the normal distance matching but until i get that whole thing set up it's not quite where i want it to be so these are snakes distance matching is really cool and i also do think that it is is the key to making motion matching uh better uh so more responsive and and more and and it's it's the key to making motion matching without root motion these are more snakes the snake narrow um and same with strider striders also part of that and again i'll come back to that question about strider later i pro i should have actually added it to the project we might do that next stream um but yeah it's it's used in a very different way and you're probably not going to use all the nodes from strider these are even narrower snakes ultra narrow that'll do if you just joined the stream or recently uh feel free to ask any questions in the meantime i'm just going to keep going adding these sprint animations to the current example project uh what is this one these are wide snakes a lot of snakes i love snaking animations they really they really it's something you can't actually do with traditional animation um properly you can do arcs but doing actual snakes is not really possible without motion matching so snake wide how much is it going to cost um it's it's not going to be cheap it well it depends what your perspective is uh you'll have to wait and see it's not something i like to talk about um and and people kind of get upset so like it is it's gonna be what it's gonna be uh it'll come out you'll see soon um but yeah uh if it's too much like for any individual like i'm sorry uh but yeah is what it is not something i really like to talk about uh snakes are pretty cool when they come up yes yeah absolutely um it's just you get that weight shifting so you're like arcing left or right um uh and then you change direction there's like a step in between that where weight shifting occurs and it's just it's something i suppose there's a lot of logic you'd have to put behind it to make it work in um i didn't see what this one was pre-order bonuses uh yeah uh i'll add in some micro transactions as well unlock this feature for for a dollar no that would be uh i wouldn't be able to live with myself um like i like i'll just i'll say my philosophy on that kind of stuff um when it comes to software and stuff like this there's been a tendency to race to the bottom and you can see it in the mobile market that everything has become devalued and it's happened a lot on unity as well uh it's happening on the ue marketplace as well um but things become devalued and people undercut and undercut and uh i kind of did that at the start of my career in this um like trying to be competitive in that way but at the end of the day like this is like this is a lot of work um and and uh it's it's really cheap for what it is like this took me over a year to make uh and that doesn't include all the research and the fact that this is my second time doing a motion matching system when i think about how much it would cost the company to make this it blows my mind um so that's that's what the pricing is based on and yeah uh motion matching only with season pass yeah yeah you can you can get the post matching notes but only you need to season past the motion matching and they'll make it a subscription as well so it stops working after a month oh no jokes for anyone who just came in that's a joke that's not real thank you for the answer is there going to be a limit on how many trait tags you can set at the moment the 64. i have i have made it so that it can be increased um uh so i went for 64 instead of 32 but yeah i've had i've made it so that i can increase it without breaking people's projects um later if required so yeah just keep that in mind um motion only uh yeah never unders undercut a product becomes more valuable to people if it's expensive instead of cheap could you break down what motion matching is oh okay uh yeah i agree with you um hey jkl um yeah i totally agree with you uh i also think that your the target audience is different so for me motion matching is is an advanced technique that is i don't think it's for beginners and i don't want people compulse buying really cheap copies of it um thinking that they can make a game as i said before like just like one one button animation system so part of the part of the prices is is to make people think about it as well as i said i don't want people buying something that is like even though this is like i get money from it i don't want people buying it and not being happy with what it is so the price tag kind of makes you think about it a bit more uh so can you break down uh i'll come back to that stop giving it ideas about caesar yeah oh that's funny okay so what is motion matching um i'll i'll i'll do a brief explanation and then i'll point you to a video that i've made in the past let me just name this one actually i got to see what it was i forgot uh it's start stop oh it's it's cycles actually snakes like uh snake cycle all right so let me i'll turn on some debug things and see if we can get a kind of a demonstration so there's a character i'll turn on another set of debugs so ada and node so there's all these debugging things you can access so if you press till then go to command you can uh so most ada analyze dot most and then all these are the debugging options so what i'm looking for is pose debug 2 i think okay um so you can see a whole bunch of debug things now with motion matching what we do is instead of going okay we play this animation and then we play that animation and we have these explicit transitions to it we just take all the animation we just put it in one thing and we pre-process it so the pre-processor as you can see here is this atom data and you can see i've chucked in all these animations now i set them up in the settings you can do and you you and all that but when i pre-process it it's going to create poses so it's going to like record poses at specific intervals and that pose interval is up here it's 0.05 seconds in this case and we can actually have a look at what this pose data looks like at any given point in the animation so it's a trajectory so a past trajectory and a future trajectory and then there's also poses and and when i say pose it's a it's a portion of the pose so in my case it's only the left foot right foot and the uh in the hips and and that so there's it's basically this massive list of poses and what happens at runtime is the systems so at runtime what's going on is the system saying okay what of all the poses in that library which one is the closest to my character's current pose and the desired trajectory so if you have a look at this green trajectory here i'll make that bigger that green trajectory is controlled by my user input i'm using wasd to control it the red trajectory is the trajectory of the pose that has been chosen by the system it's the closest pose so the trajectory gets you where you want to go and the pose like so the left and right foot and velocities make sure that um the animation uh is smooth right it it doesn't like suddenly switch to legs being the opposite side so by matching pose and trajectory we get like the smooth animation synthesis with um that goes where you want it to go at the same time whenever i say that it sounds like it's really really slow but there's a ton of but there's a ton of optimizations that reduce the number of poses that are searched every frame um so yeah there's that and i see a few columns coming through now i will point you towards a video that actually goes way more in depth that i've already made if you give me a moment i will find that for you in the meantime let me see what other questions we have uh what mockup would you recommend for motion matching uh accents oh actually mocap oh mocap suit yeah accents i recommend xn's uh if you're using other ones uh electric coco and that um look it's up to you but uh you're gonna have a lot of cleanup um xm's is expensive but in the grand scheme of things if you're a small studio it's definitely worth it compared to going to a mocap studio which will cost you 5 grand a day and i've done both and the freedom of the suit is amazing whatever i exposed to give context to the system example have you implemented hard filters into the system understanding what a cycle is and an idle is no motion matching has no concept of what anything is it just keeps it it's a dumb system like it it just keeps processing it it's it's basically a big comparison and it always picks the closest thing um has no concept of of that of of what different animations are um hold up you were the same guy who did the gdc talks no no um i mean there's a bunch of dark guys as a christian i'm not going to try to pronounce his last name um and there's uh simon covert and um the other big guy is the kineratica dude um [Music] michael butner i'm not any of those people oh yeah i hate it when people get angry because they are they have to appropriately pay for stuff others that put months or even years into yeah um so acceleration deceleration is incredible thank you man uh looks amazing thank you does motion matching work with hand animated stuff as well uh yes and no um let me just find this link sorry for this other video it is in the documentation as well actually i might just go to the documentation so this documentation here is your best friend um it's got a lot of information uh it's probably missing some still and i'm going to add that in so if we go to motion matching understanding motion matching so this page itself so i'm going to just link this now and [Music] there's a video link here so this video i made it for motion matching for unity but it's it's fine it works for um it's the same concepts all the same concepts but yeah there's a good you you should definitely read this to understand it um yeah so hopefully that will work out um maybe it's an amateur question but can i use this uh used with short transitions and animations or there must be long maker animations no it doesn't have to be long mocap animations it does work in other ways let me see if i can show you um this might not work because i haven't used it for a while but i do have a set up for um normal animation so i'm just gonna have to change a few things so you can see here i've got a a lot of you people you might actually already know this guy kubold he does a lot of animations that are cut clips and they're based on mocap so you can see all of these here are cut clips now uh the difference is so like it's really short like as a stop animation right here i have created tooling to support cut clips with motion symphony but before we go on there's always the caveat there that you're never going to get the same level of quality it'll work the other caveat is you must have a lot of transitions so kubota's clips are pretty good because it has starts you know in in heaps of different directions so it has plants um it has all that stuff uh you know so yeah even all the different angles it the important thing here is coverage so animation coverage so motion matching needs animation coverage that's like a fundamental thing it's nothing to do with motion symphony itself um but yeah so to support cut clips i have composites so you can see here i've actually separated them out sequences composites and blend spaces so um so these things help with the coverage but i'm not going to go into too much detail on how it works there's a lot to unpack there so again check out the documentation for that let me see if i can actually get this to work i'm going to turn off optimization though i'll pre-process it um and i'll explain the composites thing quickly so one of the problems with motion matching cut clips i've found is with start animations um you know it does the 180 and then you can see i've actually added a few loops on the end of this start animation this not only helps me get a trajectory in the future but it also makes sure that the clip like the motion matching doesn't say oh i need to change pose right right now and what happens it'll switch to another one but then this pose here right at the end will also be good so it'll just keep flipping back and forth and so you make composites so that this doesn't happen you add on the loops to the end and i've pretty much done this with any kind of start animation or plant animation so i don't have this issue uh the other thing that i've added um well there's a lot of internal stuff that you won't ever notice but you can actually uh extrapolate the trajectory beyond the limits of your animation clip so um when you get to the end if it's looping of course the trajectory is just going to loop that's no problem um but when you get to the end you can it'll extrapolate beyond that point that's one option or you can actually take it from another animation and say take the future trajectory beyond this animation from another animation and as far as i know this is not something that's been done anywhere else i developed this specifically to support cut clips so yeah that's one of the things and also mirroring increases your coverage which is always good actually i don't use mirroring with this set because most of the uh movements are already mirrored um as far as blood spaces go i'll just show you quickly you don't use them in the traditional sense because you're going to have the same issues with quality reduction i use them for arcs mostly you can use them for strafing directions but you kind of i usually only use one axis so i should really be using a 1d blend space i suppose but if you if you spread it out you're going to get really bad blends in between so even for like north south east west strafing i would use uh four different blend spaces that are um you know just on one axis and yeah so you're not actually they don't really behave as blend spaces it's just that you're going to get all these in-betweens but yeah check the documentation for more information about that let's see if i can actually get this to work i'll go to my animation graph yep no more questions just yet where is my animation graph it is under yeah and for the running let's just see if i can change i'll change the motion data hopefully this will work i think i've got the same i'm going to change the calibration because i'm using a different calibration for the keyboard animations uh i'll just double check the trajectory generator make sure it's also got the same config i might have to tweak the speed because it's a different speed animation anyway let's see if it works please don't crash okay so there it's kind of working i haven't touched this in a little while so hang on let me try this again so yeah i have shown a video of it actually working uh much better but um i obviously need to go back to this as i said i haven't touched it in a while but yeah it kind of works you're getting all the animations here but it's just not as i don't know what this uh this that jump there that's something new to me i probably unchecked some looping thing because that's like a looping animation but either way it does work but yeah you're not going to get nearly as much coverage where's my loop gone my loop here just check to let me just i would love to oh yeah there is one more quick start tutorial coming i haven't done it yet so the the last quick start tutorial which uh i really recommend you guys to look at the quick start tool is going to be a cut clip one so how to do the cut clips so i will go through setting this up it's just i can't i can't obviously give this to you in the example project because these aren't my animation clips and that would be illegal all right so i'll go back i'll i'll just fix all this other stuff up again uh um what was the one i was using run md run that'll do just checked and it is still not out on market do you think it will be out today i do think it will be out today i actually did get um a message saying i needed to change something it was like one of the copyright notices in the you know billion files in the project was like 2020 instead of 2021 so i did have to do that earlier this morning but that was it there's no other issues so it should be basically next time they look at it it should be out um even with extrapolating out from the start why did you still need to link it to a cycle okay so there's two different issues here with the with the cut clips uh one is the trajectory and that is solved with the extrapolation or all the animation but but that's just one problem there's another problem with continuity where if we play the animation clip to the end it needs to change animation straight away and it's gonna then change animation but then it's gonna see that the end of the previous animation was also really close pose and it'll flicker between them it's it's really difficult to explain and it was actually really difficult for me to understand this myself when i first encountered it so you add on that extra bit of animation at the end there um so that just doesn't happen you just eliminate the problem completely and you do that with composites in unity i had to actually modify the animations myself because it's no composites but um yeah you should team up with kubot yeah maybe even even uh okay yeah that's it cool um all right let me change this back it's over here we've been going for longer than i expected i'll probably go for another 10 minutes and then i'll probably end the stream but we'll contin i'll do another one tomorrow if you've got any more questions and uh i didn't really get much of the sprinting done because i've been answering questions which is which is fine um but yeah so i'll change this back to config is there anything else i had to change so yeah that's asking that distance matching it comes in the form of a component and then you can either get it to automatically detect your distance matching cases but obviously every game is going to have its own logic so you've got these functions like trigger star trigger stop trigger plant sort of thing it's more generic than start stops plants you know there's a like human movement concepts but uh so internally it's more generic than that but yeah you can trigger those sorts of things um and then you kind of have to feed that information in into the graph uh you can extract the distance to that that thing um and and put that into the distance matching node as far as like the animation curves go on animations so let's have a look at one of kubot's clips here uh where is it so uh we'll get a don't want to jump i just want a normal patrol run forward start 180 right so what you'll kind of do is um you add excuse me you'll add like a so say there's a so the start the um if you're a distance matching the start animation you put the distance marker at the start so you add a notifier just like a blank one and you call it distance marker i believe is the name i made it to have i usually like to just just in case i forget to remove this later i make it so it's got a zero percent chance of triggering and then we can add animation modifiers so there's a distance matching animation modifier that i've that comes with the plugin that i wrote in cpus plus and we apply it and then we get this distance curve just like that and so we can get our distance curves to the animations um yeah so uh you use the distance matching node will automatically access this distance matching curve and it'll play the animations along with that so [Music] i'm sure we'll have more questions once we get our hands on it oh absolutely i don't doubt it um i didn't know about this until now cool did you know about motion matching before is this the first time is this uh replicated for multiplayer natively so okay that's a that's an interesting question that i get so animation typically you don't replicate animation itself um it's replicated by its inputs uh but the answer to that is a bit more complex i can't really put in something that is um at this current point in time that's going to automatically sync it but what you generally would do is where's my graph let me go to my graph and i'll show you so obviously with with networking you're not going to use root motion like unreal engine doesn't even recommend it so you're going to use a controller-based movement the idea is that your animation then becomes cosmetic so you would basically replicate your trajectory and by that i mean you're actually only going to replicate the trajectory inputs now it is possible that it will be slightly different but it will generally remain in sync and that's why it has to be cosmetic now when you trigger things like state changes that's going to be synced because you're syncing variables in your animation graph just like you would in anything so yeah as far as networking goes unless you're doing something hyper like a boxing game where every single like millimeter of the character's bones has to be correct then yeah it's it'll work but um i mean then yeah there might be an extra work there but otherwise you don't really need to need to worry about it uh okay so i'm sure we'll have yeah i've read that already plus one to that it is it in consideration replication okay i just talked about that i didn't know about this i have a whole system built though uh thought in rpc and this is close to ubisoft level thanks well look it's all based on their work okay i learned how to do this by watching their videos and then experimenting for a long time and trying to replicate that that stuff so um great work congrats on the release we did a lot of uh dance cards at ilm cool always using ubisoft as reference yeah yeah they have a good i i developed some of my own dance cards for strafing particularly but um yeah i still use i still use the same dance cards okay makes sense have you uh looked into event time matching uh so is that similar to so in motion matching for unity i made an event system uh i do have that in here and i might activate it it might be a few weeks until i've activated that just because i'm not quite sure if i like it what i want to do hmm it's still something that i'm not so sure on how to approach it because with with this system it's kind of like if i if i put something in it's like locked in if i change it then it's going to break people's projects and since we still have i still want to work within the way that unreal does it i want you know with slots and montages i want to have those things working as montages which makes this completely separate thing from the node but basically pose matching montages where you could add time matching and stuff to that but uh i tag up a bunch of clips with a a contact point and add time at one of the queries in the selection waiting time to event um so yeah like you're pretty you're pretty much describing exactly what is in in unity in my unity one um that's not in this one and it's for that reason that um i don't envision motion matching being used in the same way because we have so i'll show you the graph we have this motion snapshot node we can motion match and pose match between states and it basically gets the pose from the snapshot node it's kind of like down the stream at the end after the blending and before the ik we get all this um it's like it records some of the bones i'm actually recording way too many bones here i don't need to recording the hands and the neck and stuff but anyway uh it records all those bones and and and their velocities and stuff and then things can come back and what i want to have there is when i have like somehow have um um what is it montages that will look at that and say okay well what's which section of the montage should i start and what's what's the timing but yeah that's kind of out of scope for for now how would uh one read research papers like if you see a calculus equation with dt you insert the equation by multiplying with delta time uh i'm not sure what's been there i'm not sure what the context is of that anyway um a few more minutes i'll keep going with with this two more animations to change so this is a start so yeah the whole thing of dance cards now people get the concept misconception that you do have to have um i have to have dance cards for twerk it's not really true um you just need to it's just an efficient way to capture a lot of movements with good continuity and coverage that's all it is really i do have a guide for like animation authoring uh which i might link now i've made it back for motion motion matching for unity however pretty much all applies to everything so uh i'll link that in a second but a lot of good information and this will also help you understand motion matching so if you wanted an upper body animation like holding a gun do layer blends per bone a traditional animation state or do the the trained animations need to have the pose um no uh so so it pretty much works the same like i wouldn't do it any differently than traditional animation so if you go to i'll go to my integration graph and you'd have wherever you put your upper body let's just say you put it here you know you just put it here this state machine with the motion matching node it just outputs a pose and you can you can basically have the um upper body doing whatever you want it to do it can the motion matching node doesn't actually wouldn't actually want that upper body pose to be honest but it could get it from the snapshot if you wanted it to because this is at the end of the stream however if it's just upper body most of the time for locomotion you're only matching left foot right foot and pelvis so it's not going to matter at all but yeah upper body stuff i do it exactly the same way as there's no difference it's it's really important to understand that at the end of the day as as complex as it is um the the what comes out of it is just suppose it's just a pose like like any other pose um uh i want to say nothing it is special but it's nothing special at the end of the day like um at first when i thought of it as like oh this you get this mysterious thing and it's like how does it how does everything else work with it well okay everything just goes over the top of it it's like the base layer of layer of animation okay cool so i just used the motion matching for the lower body then layered blend the bone for upper body thanks yep that's that's pretty much it it blends by pose matching uh but also by velocity yeah so there's a bunch of things that are blended and i'll show you this again so um if you have a look at that blue line on the ground so that is the velocity of the character so that helps you maintain momentum um if you don't have that you'll find like i'll i'll do a 180 and it'll be like a 180 start animation it won't be a plant animation so it helps preserve momentum and you can also tweak that how much momentum you want because maybe you want more responsiveness so if you look at the joints here those yellow debug unfortunately i can't pause it because the debugs go away but those little yellow balls are the positions of the of the joints but the arrows coming off them is the velocity and this is also matched what it does is it helps the animation stop the animation from running backwards because it could technically run backwards if you didn't have this uh velocity per bone yep yeah velocity and um and and position relative to the root it's all matched um to get to get things working uh yeah all that stuff can be tweaked like how how important it is in in a calibration but to be honest with the way like i for for motion symphony compared to uh motion matching for unity i developed a sort of an internal calibration before this calibration which does most of the work for you um that's something i got to bring back to unity but uh yeah most for the most part your calibration is almost doesn't have to change um can tweak it though uh right so no just root speed but feed velocity yeah feed philosophy any bone you choose to match so in the configuration any bone that you add here so so you might in some games you might actually match the hands as well and then it'll do the hands position and velocity um as well uh yeah everyone how this blends with with root motion montages um should be fine many questions yeah i'm sure i'm sure yeah i don't see an issue with that you just play the montage and it should just play can you explain main concept of strider i tried to understand it it didn't i didn't find it useful example for this asset in flat and flat landscape okay let's strider okay strider is i mean it's going a bit off topic but yeah strider is basically it allows you more animation coverage from not having many animations it gets reserved blend spaces which is good for performance um by with the orientation warping node and it allows you to have in between speeds so uh you can either so so basically you've got a an idle animation and a run animation and those are two like digital speeds there's nothing in between them you could use a blend space to go in between them but then again you're using a blend space and that doesn't always work that well or you could use animation speed to go in between them but that doesn't also doesn't look very good so what strider does is it it uh so the stride warping note sort of extends the legs to kind of um it increases your stride and this is a more realistic way of moving but yeah i won't go too much into this because it's a bit off topic uh sorry but um how are you calculating the control input to the system desired accel and velocities for the trajectory i'll get to that in a sec can't wait if you bring this feature to mxm yeah yeah absolutely i'm really keen to bring it i was really surprised how well it worked so all happens uh [Music] so all happens in the atm bp are you considering adding some extra logic through control rig in the future no um motion matching is completely the bottom layer so so in my mind there's there's three parts to animation there's well four parts three parts i don't know uh so you've got the authoring animation authoring you've got the animation synthesis so synthesizing the bass pose and then you're layering anything with layers and then you've got procedural tweaking so anything you know motion matching only deals with that bass pose uh if you're gonna go add control rig over the top then yeah that's go for it like there's no it's actually got nothing to do with it i don't even know how you would do do anything you mentioned you recommended against root motion but have you tested it with this at all is it something you plan to just give up on no no it's not something i'm planning to do welcome look i i i don't recommend or unrecommend root motion it's just if you're doing a networking game it's unlikely that you're going to uh use it without rude motion uh use root motion just because it's it's well it's tricky right so and and it's harder to control so yes i have tested it without root motion and it works the thing is that motion symphony is a animation synthesis plugin it's not a character moving plugin it's not an ik plugin it doesn't do any of those things i've made motion symphony to do just its thing as i said before some of you may have not been here like i'm i'm my goal is not to make like frameworks is to make tools and so i make a tool that does the one thing the the thing that you're going to have to do uh with your um to get your root motion sorry your non root motion animations looking good without foot sliding as well one you're going to have to animate have animations to suit two you're probably going to have to use ik which there's plenty of ik tools in unreal uh foot locking uh grounding all that stuff and yeah it's basically it it kind of is what it is it's it's a it's a curse problem so have i given up on it no i haven't given up on it so there is something that i am working on to reverse root motion it's just that i didn't want to delay the release of motion matching for another for a long time because it's very experimental stuff so it's a combination of using strider distance matching and motion matching all in one thing and i have achieved a proof of concept of it and the idea is that you basically um you use the character the capsule movement to reverse uh it's the opposite of root motion so with root motion the animation controls the movement and with uh with this method that i'm trying to develop the movement feeds back into the animation system which then procedurally tweaks it with strider for one and and triggers distance matching so that you get no foot sliding and then also foot locking on top of that but that's something i still have to develop um do you have any concept of blending between root motion and path driven no i don't sorry i don't have it i can't i can't really say much about that at the moment um hasn't been tested all right well i think i'm going to have to end it there and i'm sure there's plenty more questions you guys are going to have but i will be back tomorrow to answer lots and lots of questions um and now that i've i've renamed those sprint animations i might actually get to adding them in uh gotta get some sleep good night man have a good one i'm starting my morning um yeah and hopefully the the plug-in should be available soon please please uh read through have a look at the documentation watch some of the videos read the store page understand what it is before you buy it i personally yeah i'm buy i think it's really really good i don't it's not necessarily for everyone so uh i'd rather not have any regrets impulse purchases thank you you hate how talented i am i'll bet i didn't start this way i was okay i'll say this before i go um i yeah i spent years as an engineer as a civil engineer wishing i was doing something else and i just hobbied i just hobby game development for years and years and i was bad at it and i didn't realize i was bad at it like when you look back in the past you realized you were bad at it and then one day i saw you know that gdc talk about motion matching i thought yeah i can do this and it took me i gave up on it first time um and then it took me like another year after that to get my first thing working and then another year of it being released to get it to really where i want and then this took me a whole year to make as well so yeah it you know it's just time it's just time i'm nothing special anyway thank you all for watching i'm gonna end the stream there and uh yeah development continues after release thank you goodbye
Info
Channel: Animation Uprising
Views: 1,073
Rating: undefined out of 5
Keywords:
Id: t2TdhdI4rVA
Channel Id: undefined
Length: 75min 57sec (4557 seconds)
Published: Tue May 18 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.