Unreal Engine 5.4 Feature Overview | Inside Unreal

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Hey Kevin yeah Daryl what are you wrecking about flying o Tess stop bloody bouncing your sister into the Coral Tree bloody caviar sorry help what were you saying I was um I was just talking about flying oh right right why oh I I know I just think it might be really interesting to see the world from that U angle wait are you you saying you want to fly um well maybe but you're an egg yeah I know but I could wear a helmet or something o Tess stop putting the bloody decorative Pebbles up your nostrils look Daz I just don't think eggs are meant to fly mate ow Tess what did I just say oops flight simulator where you can fly anywhere you can dream of as long as you are not an egg please verify that you are not an egg Melanie do you reckon I can have a go at flying your kite um I don't know Daryl isn't it illegal for eggs to fly or something well yeah maybe I don't know but I wouldn't actually be flying myself I would just be you know holding your car is this egg bothering you cuz I end him if he is no sorry I was just oh my God that's like so romantic Melanie you caught [Music] [Music] all right Humpty Dumpty do you know why you're here um uh I tried to fly you tried to fly and do you know what happens when eggs try to fly um I have fun this is the third time this year you've tried something like this what's going on Daryl o uh [Music] [Music] look you're a good guy darl I'm going to let you off if I warning but this is the last time okay you should really get some help mate [Music] egg a vessel for housing tiny embryonic life forms that have evolved over millions of years to live in complete symbiotic harmony with one another that can eggs fly [Music] yes I think they [Music] can hello everyone and welcome back to inside unreal a weekly show where we learn EXP explore and celebrate everything unreal I am your host Tina and today with me I have some of the incredible team behind some of the latest updates to 5.4 which are phenomenal if I may say so myself um if you couldn't tell by the title today is going to be a bit of an overview of some of these features where we'll chat a little bit about them go into detail and um maybe most importantly we're also going to be answering some of your questions that you may have about them but there is a lot to get into today so I'm not going to take very much time for myself first let's get into a round of introductions so we can get everybody up to speed with who all we have with us here today so I'm going to go just kind of in order of how we have it listed here on screen so Ben I'm throwing you to the Wolves you're first tell us a little bit about yourself hi I'm Ben Marsh I'm a principal tools programmer here at Epic um and I've been working on developer tools for the last 10 years or so today I'm going to be talking a little bit about for coming out in the 54 release fantastic thank you so much for being here next up we have Chase would you like to tell us a little bit about yourself as well yeah hey I'm Chase Cooper I'm the senior technical product manager for rigging tools Unreal Engine um worked at Epic for about five years started out on the fortnite team uh and now I work on control rig and all sorts of cool deformer stuff yes um a lot of which is some really exciting updates for this one so happy that we managed to pull you over to the UE side uh next we have Helgen want to tell us a little bit about yourself sure uh my name is Helga mate I work uh in the engine team leading the development and control rig and sort of anything rigging animation yeah same time as Chase more or less five years at Epic um and yeah my background is in sort of films and games production before that that's me awesome thank you as well for being here next we have Ryan would you mind telling us a little bit about yourself sure hi I'm Ryan Hummer I'm our lead programmer running our build team here at Epic so as Ben was first to go I am the first team that get gets to use the horde product here and kind of give give some feedback on it so we'll be talking about horde today but uh I've been at that for three and a half years now or two and a half years now leading the build team but I've been in the game industry for about 20 years now doing various TOS engineering and build engineering along along those that time frame fantastic I like how you just C ually dro the 20 years no big deal you know uh next we have Jose tell us a little bit about yourself hey everyone my name is Jose Vel I am the lead programmer of the animation gameplay team on the Unreal Engine side I've been at Epic since 2019 before that I've been watching these live streams and learning Onre maybe since 2014 since they started and participating on game Champs I've worked on game samples such as Lyra and City sample and today I'm going to be talking to you about a motion matching and the highly anticipated motion matching sample yes very very excited to learn more about that one um and then last but certainly not least Brian would you mind telling us a little bit about yourself as well I Brian Carris um I'm a a programmer on the the rendering team I'm heading up a nanite development um so I'll be talking a bit about uh nanite and and the rendering updates in 54 fantastic all right so obviously we have quite the crew with us here today um very excited like I said to have you all here it's going to be so exciting to talk a little bit more about some of these features um first and foremost we're gonna jump right into animation and rigging so uh Chase if I know it looks like you're trying to get stuff set up if you want we can start somewhere else it's up to you but if you're good to go yeah I'm good to go just had a little camera malfunction so switching to the the webcam I get it honestly that was quick that was quick thinking I'm really impressed all right well then with that let's go ahead we'll start off with animation and rigging here and I'll I'll hand it off to you what are we gonna chat about today and look at all right so we have lots of really cool stuff uh in Unreal Engine 54 for animation and rigging uh Dan can we share my screen real quick I'm going to pull up all the release notes uh that we kep going so uh un real engine 54 release notes actually goes through a large chunk of everything that we um we've built for 54 so uh animation and uh rigging all that's in here and I'm going to go through a lot of this today uh some really exciting features we're very excited about like layered control rigs uh this lets us basically animate on top of uh existing animation and uh modular control rig uh we're going to build a module together live on the stream uh really quick so people have an idea of kind of what that process is like uh so why don't we go ahead and jump in some of these tools and uh take a look at them I've told Helga to interrupt me uh as much as possible he has lot of really Co I will try see already now there you go that's his challenge uh for today so uh yeah let's just jump in right into the demo and start looking at uh some really cool stuff okay so have Unreal Engine five .4 I think 5.4.1 up actually and uh we're going to go ahead and jump right into the modular uh rig editor so I'm g go ahead and build a modular rig here okay we're going to rename this Rampage MCR Rampage um my notes okay so this is our new modular rigging editor uh and this is an experimental feature uh it's brand new 254 I'm gonna switch this over to tiles so we can see all our modules and tiles uh and it basically let you assemble control rigs together modular uh with all these modules up here and uh build a new rig out of it so we're just GNA start building uh on use Rampage here if I can spell okay Rampage all right so this is a paragon character uh and now that I've chosen what mesh to rig I'm going to go ahead and hide all my bones on him just a little easier to see so uh quick intro I'm not going to go over every single detail because we have so many uh docs and stuff on this which I'm going to talk about today too uh and there's a few videos out that go into a bit more detail on this editor um but we're just going to start building his rig all you have to do is drag and drop onto these little points we call these sockets uh this is the visual schematic you can use y to turn it on and off that'll you'll see why that's important in a minute so let's drag and draag drag and drop the spine onto the spine all right and we're going to drag these shoulders we're just G kind of work outwards on the character right I'm going to grab the neck find the neck module and you can see that the the sockets kind of tell you what to place next uh so as authors module authors uh you have the ability to kind of direct your rigger and how they should assemble the character and give them some guidance uh so two legs right we're not going to build this whole guy out okay so we do have a rig in there he's really big uh so we need to uh scale up the controls so let use why to hide that schematic because we are done with that for the time being and over here we have all our modules that got built so this is the module hierarchy and as I come in here and select my root I have a bunch of settings that will affect all my modules because it's a hierarchy if I Collapse this uh I can come and change some of these settings and it should filter down through all of them so what I want to do actually scale all my controls up do that to two compile so now it's a little easier to grab my controls and come in here and animate around pretty nice uh we're going to do a few more things let's go ahead and grab our arms we actually don't want these to be in FK by default I'm going to change these to ik right still a little embedded in there so let's come in here and let's try to make them a little friendlier to get all right so now we have our ik arms that are really easy to grab all right so if we come over here to our rig hierarchy uh a bunch of stuff happened uh we have a skeleton now right here and we also have we go we have our entire control stack uh built for us and organized it's ready to go you don't have to come and like add these modules and then organize this it just does it for you uh that's kind of done through the logic and control rig uh and so now we have a modular rig just kind of test it out make sure it's all [Music] working all right so we're pretty good here also these leg pull vectors are pretty big let's go ahead and adjust those quick bring those back we're going to go look at our settings up here uh so all the modules have different settings you can adjust uh some of them like this actually yeah let's do the legs the spine too uh this pull Vector offset we can bring this in and you can see how our pull vectors are uh getting much better so I'm just going to kind of adjust each one of these until they're kind of in the right uh position there like three there we go a little better okay and the spine we notice that this guy is H kind of high let's go ahead and tweak that a bit here to our spine module some settings for that uh so we can come and uh adjust this some body adjustment so I can just move this just pick the best place for it okay so uh now we have this guy let's compile and save him all right we have our modular rig this is probably good enough for us in the sto to get going uh it seems to all be working okay pause I'll pause you there Chase given this is a sort of a good time so first of all I want to point out a couple things so you've already pointed out on the right side the ri hierar key that's a view that people are familiar with if they use control R before you know in that's sort of the granular view of Bones and controls and spaces and other things you may have added here on the left the modular tree is is a simplified view where you just just in quotes right see the modules and what we call connectors and they resolves so if you notice as Chase was bringing the modules in that all this got filled out automatically for you and that's because module authors can build modules in the way that they will try to automatically uh find the right connections for all the sub settings they have so you see how the spine has an end bone that says like you dropped it on sort of the the hip area and we'll find the last spine bone um sort of theistically that it thinks where it belongs but users can go in and adjust this right so a good example for this um would be if you have a tail module something that drives like a crocodile tail you may not want to affect the whole bone chain but just a part of it so you know this is sort of a a you know have an initial guess that already is functional and then do adjustments after kind of workflow where you you don't have to specify everything uh necessarily but you do just do corrections on things so you'll bring in the module change what you need to in this particular case Chase didn't have to change anything it was just you know flying onto the biped scouton immediately awesome doing your doing your job H interrupting me he doing it um okay so modu rig we've uh rigged this up uh also if you're curious if you hover over any of these modules these are a bunch of modules we shipping with uh in a plug-in and these are intended to be as an example right uh if you can use them great we do plan to update and add to these as we go on but uh the idea is that these are also you know primarily a learning example for rigers and teams to figure out how to author modules themselves uh so let's uh jump into sequencer a little bit so I'm going to take my modular rig here I'm just going to drag him into my level okay let's go ahead and focus the camera on him a bit it's all working looks good um so one thing I want to talk about with our new animation features is that we have completely Rewritten the the Gizmo framework for animating an engine uh so you can see we have a much nicer design here uh improved looking style and and uh a lot of other features like indirect if I go to my rotate and I come way out here and I hold down the middle Mouse I can rotate uh so this is way nicer for animation and posing characters and it works on uh all the gizmos too I can just indirectly grab this and pretty nice um the other thing I want to mention it hasn't mentioned too much we have a parent space so we have a world local and we also have a parent space now so this is useful in uh very specific situations um keep this in vocal for the time being uh okay so let's do a few things here uh I'm going to go ahead and twist this guy and if you notice that as I turn this control we're we're we're having uh phenomenon what we what I usually call Candy wrapping um and so as I keep twisting this his wrist is clearly broken it looks not great uh we don't want it to look like that we really want it to work more like a regular forearm uh it's not too bad when I do this but it's just clearly not looking great uh so we're going to spend the next few minutes trying to correct this and the other thing we're going to add is if you notice the muscles uh let's see here this guy has some some pretty big biceps and triceps we're going to they're not really doing anything it doesn't really look like they're part of the character but we do have some bones in there that we can kind of fix him up so we're going to fix up these two areas uh right in the engine and I'm going to start by creating some animation so let's do a little animation on him I'm going to twist this guy um and we're going to go to frame 30 be quick all right all right make sure we're seeing really gnarly candy wrapping happening okay and let's go back to here and let's zero this out and as you notice as I'm setting all these keys that we've Rewritten theim details panel inside uh the animation mode to be much more friendlier uh and so what it lets you do is uh if you bring up the curve editor I love this feature this is really cool uh you can isolate your curves really easily so if I I just animated the rotate X I can just come in here click on it and I get the curve immediately I wanted to go and change another curve and you don't have to uh while coming through here is fine this is just a really quick way to get to your curves and animate okay so I'm gonna set up a few more keys here uh we're just going to bring it up here just kind of and just to be able to test this a little calisthenic uh as we go down this next part of the demo like that this area this type of pose is usually pretty pretty gnarly on characters um just the shoulders don't really usually maintain volume very well in a lot of extra steps sometimes like pose drivers usually have to be made to uh fix that okay so we want to save our sequence okay so let's go and we're going to actually make a little module to uh to fix this so to build a new module in modular control rig uh it's fairly straightforward we're going to create a new control rig not a modular rig very important so you're going to get this dialogue you want to select control rig all right and so as I have my new control rig here we're going to name this constraint okay you want to name that whatever you want your module to and we're going to hop into control rig go ahead and dock it up here okay so now we're in the control rig editor and this is an empty control R so we need to import uh a template uh if you have our modular plugin loged there's some predefined templates you can just type in template and we have a chain a bipad and this root template uh that's just like one bone and a pelvis I think uh but this is this usually works for most things you can just bring in the biped uh and it's an empty skeleton I'll turn on all the phones this is the very lightweight asset uh with I think there's one triangle collapse to the bottom basically simulating an empty as small as possible skeleton you want your templates to be whatever you're building your modules on to be very small and lightweight because all your modules are going to reference them so that's what we've provided here is a way to uh just quickly have something to start building modules off just just to clarify you can use any skeletal mesh right you don't have to use the templates the templates we ship them because they're lightweight and they're empty skeletons but let's say You're Building modules purpose Built for Two specific characters on your show and you have the schedle measures of course you can use that as well to preview the module You're Building you don't have to use the empty template um yeah so this constraint module uh what we're going to do is basically build one node uh to expose here so all the modules before I keep going all the modules we have in modular control rig yes these Define like parts of the character these are pretty beefy rigs right shoulder spine there's a lot of rigging in here but all these modules new modules don't have to um be this big they can be utilities too and that's the really powerful part of this framework is that you really quickly mock stuff up and then add it into the system and have it even work with all these other modules that's what we're going to do here we're basically going to expose this parent constraint uh so uh the first thing we actually have to do actually let's delete this first we need to turn it into a module that step we have a button up here switched to rig module I'm just going to click that and a couple things happen uh you get some directions down here to help you out but all of our bones turned yellow that means they are not being PR procedurally imported uh so that's a real important note that this is now a procedurally generated uh control rig in full a sake so this is a module we're going to save it just to double check we can see right uh in our modular rig we now have access to this module in the editor okay so a few other things we might want to do uh you might notice there's no icon uh let's come back to control rig go to class settings R module hierarchy um we have a bunch of settings you can set up for your module such as the name it'll automatically name it to whatever the name of that is but you can also change that here uh but we can also set an icon so uh you can build your own icon it's pretty straightforward but we also uh in the plugin ship a set of a bunch of icons that you can use for your modules uh some extra ones that aren't actually in the included one I like this guy this kind of represents constraint so let's do this really quick and give me a second okay so now we have a new module constraint popping up so let's go ahead and start building out our logic so parent constraint we're going to go ahead and hook this into our Ford solve okay so now we need to figure out a way to have our modu module talk to this node uh so how we do that is with connectors we're in modular control rig we have all these connectors we need to build these inside of our module uh so then we when you convert a module you get one primary connector this has to exist uh you can't uh shouldn't delete it uh I'm just going to drag this to some random bone and it's okay and we're going to actually rename this go click on it and we're I like to call these constraint I always call the primary module the name of the primary connector the name of my module just for sanity uh and you'll notice over here if you come over to the details connectors have a few attributes we can set we have our type you can't change the primary obviously uh and then we have some rules so what you want to do uh you can set up all sorts of type of rules and logic uh for how these uh connectors resolve uh so I like to set the primary connector to be rule type socket okay so I'm going to set that to type socket and uh so now what that's going to let me do without doing anything else uh it's going to give me that drag and drop functionality that a lot of people like so uh we're going to actually let's do the wrist first so to create a new socket in here by hand right click on any bone new socket okay now we have a uh interface in the schematic that we can interface with now I can just drag and drop straight onto there actually not going to do it I'm it doesn't do anything yet so but now we have I've confirmed I have that drag and drop interface uh that the rest of these modules follow okay so we're going to build a few more connectors uh I'm just going to randomly pick uh for this module it doesn't matter where these are necessarily let me pick new connector new connector and these are secondary connectors the noted by little two icon and we're going to very simply call these A and B okay and B and uh you can come over here to their options and it says secondary we can also make these optional uh we don't want to do that on these uh because we want these to be required if you make these optional uh the connector doesn't need to be resolved for the rig to build uh that's great for like optional you know maybe you want to give the controls a parent in your module uh but maybe it's not required you don't need to have it in theory that's where you would use optional um and we're going to change their type we're actually going to just delete the type on these because we want these to be able to resolve to many different kinds of elements such as no NES bones controls and we're going to do that okay so now we need to get to this data in the graph how do you do that uh I'm going to bring up the git connection node so this get connection node lets you access these connectors you can see type connector and I can then pick my connector so I'm going to pick my primary my constraint here and um I always check on skip socket uh this will basically if this does resolve to a socket node on the schematic it'll just give you the bone back uh can't be you can always just check that on if you're unsure you know what's going on I would recommend checking that on it's it's pretty harmless uh so we want this bone to actually be constrained by these two guys so uh we're going to do I'm just going to copy that down here and I'm going to choose a and I'm going copy this again and going choose B and in this parent constraint we're going to have it weight between uh these two n this this and um we're going to give the weight we're just going to split it halfway okay so this is all we have and now what should happen if I drag and drop this constraint node onto my forarm here uh let's see what happens when I rotate turn off the schematic with Y all right we have to resolve this sorry uh so I've added that that's there uh now the module uh is down here in our module hierarchy let's make this look a little bigger so it's easier to see we need to parent the module just like you do with bones controls we need to parent uh this to an arm so here we go I try to think of the parenting as like what space is it in this kind of lives in the arm area so you want to parent this to the arm that's the best way to think about it and we need to tell A and B what do we want constrain it to so a would be your wrist B would be your your um your elbow all right so now want to we do that now we're getting a really nice twist um a few other problems we're going to work out but it's actually not a problem but now now that twist is way better it's not just candy wrapping and breaking that rest but something we do see and we don't want is breaking it in another way that constraint is fully active um so you can see that bone is really turning and actually if I turn off the bones prob bit easier to see right we just want this rotation so we're g exp I'll stop you I'll stop you right there Chase even though your flow is great uh I just want to highlight a couple things uh here right it may be obvious to the viewer but just making sure so the way that um the the modules connect to the hierarchy at hand like how they connect to Rampage here is that you know you create these connectors and the connectors become sort of placeholders right for what you're really affecting when you apply the the modules if you go back to the constraint uh view um you sort of see it I don't know if you can zoom in but it will say on the connector name it says you know connector a on those nodes if you zoom in on one of the conect get connection nodes um it says a and then spine three and spine four in in braces and that sort of means that a is really spine three right and B is really spine four it means in this particular preview view it's resolved to these bones once you're applying it to Rampage it will have resolved to something else which is whatever you picked and how you filled these up right so basically what we're trying here is that these get connection no they really give you access to what the user has chosen on the character so if you have multiple instances of this module on your rig like each one will have a slightly different resolvable um uh pattern here and also the other thing that you mentioned I would just want to get back to it that each connector can have these rules uh to say this connector can only connect to uh a control or this connector can only connect to something that has a tag X right and the idea here is that you can either work with lots of rules or you don't and it really depends on your pipeline if you want Comm modules that work really uh you know with with strict rules with each other so they can only be used in certain cases then you know you set up the rules that way you don't have to though you can make them free form and then connect to anything like in this example the constraint can basically connect A and B to anything I just want to highlight that that's a feature that you don't have to come up with really complex rules if you don't want to but you can constrain the workflow using these quite a bit to fit your pipeline needs yeah and it's very flexible that was something we were talking about earlier too was uh how to present this and you know we're we have a framework here that is flexible uh and these modules can be designed in a myriad of ways uh while the ones we're shipping are very drag and drop and stuff there's a lot of ways you can actually author and work with this system depending on your problem set or whatever uh characters you know you have in your real-time project so uh what I'm going to do is show a few more features of this because it's pretty powerful stuff uh so we want to fix that so you can expose any data you want to the top level of module and we're going to expose uh this filter in the the parent constraint this is basically telling me what axes I want to work because we want to get rid of that gnarly um RIS breaking thing so I'm just going to take this filter it to a variable right let's make this a little bigger it's easier to see okay so we have a variable down here and I'm just going to call it filter and it is not public yet this little eyeball over here to the far right I click that uh now what's going to happen save it come back to my module of the rig select my constraint now it's exposed to this top level inside of here uh so this is a really powerful feature you can expose uh just about anything you want in that manner uh so now what I can do is I can uncheck what I don't want to have happen small bug uncheck all this okay let's do this guy all right so now I just unchecked I only want the rotation of the X to be affected so now we're not getting breakage anymore when I twist my elbow I'm getting a really nice uh now it's doing exactly what I want if I come up here it's just much better uh forarm twist not breaking anymore uh so some other things you can do uh you can keep exposing these uh data if you want so uh you can expose like the weight for in instance so let's make it a float weight uh let's go ahead and make that public and then we're going to uh we're going to plug this into a subtract node it's a little trick I like to use we're just going to one minus it and uh invert this other value so now this is balancing itself uh you don't have to manage each weight so if I come back to here maybe I want to have this uh this weight favor uh let's see scale thing again favor the forearm more so now it's going to favor the wrist a bit more or the elbow you know depending on how I tweak that you can get kind of some different effects that way and that's just one attribute on the constraint uh I mean you can keep going to town and expose yeah so see if I crank it down now it's favoring the elbow a lot more um this is probably like something there there we go a couple things to highlight here again I'll I'll go is is uh first of all you know one of the things that I'm quite excited about is and it's sort of I guess something you'd expect from unreal is that everything's always live so as you changing these um the character that they operate on they get the update immediately and actually as changing the setting the the settings for example on the filter the rig gets rebuilt all the time so you can't see it but it's actually rebuilding the whole character rig all the time as he's changing his settings so that you get a live preview of what the results would be right so that that's really exciting if you compare this to workflows in In classical dcc's where you know the the notion of rig building scripts exists but you tend to have to wait a couple minutes until the character is built and then see if it works and go back uh this is now sort of what you see is what you get kind of workflow and with with immediate results yeah here I'm in sequencer and you can just see all those changes I did are instantly flown through into the the the level editor uh you don't have to wait or do anything else you just compile and it's there immediately um so really good workflow uh I can't do it we're on a live stream but you can have up a couple screens and see all the stuff happening live so it's a really great workflow for like testing out how your rig is actually interfacing uh or or on certain animations you have a bunch of animations um how are we doing on time Tina are we doing okay yeah you're doing great okay uh so the next thing I wanted to do uh is show kind of how this constraint while I'm using it on the Forum here you can actually use it for a myriad of things um I could keep going on this uh we're going to keep this fairly simple I think this is fairly straightforward uh but even this is like really powerful uh for a couple of things so let's turn back on our bones and we're going to add some sockets to our our muscles up here he has a lot of big creaty muscles so new two new sockets hit Y to turn on our schematic okay so now I have two new uh sockets that I can add constraints too so let's start with the B the bicep save that guy save this really quick okay I'm going to drag this over here okay so just like we did with the for arm twist I'm going to drag and drop this under the arm okay and there is an evaluation order in here uh let's let me set this up real quick then we'll talk maybe hel can talk a bit about evaluation order sure so so as you said it up so basically that you know as as Chase is par to these together in a tree that there's one two reasons for the tree actually one is sort of just organizational because it Mak sense to have things that belong to the arm under the arm but it's also currently in 5.4 it's it's the only way to indicate execution order so the arm will run to solve the arm and then these two constrainted rigs like modules will run after right so the tree is also a way of um telling the system which order things should be evaluating yeah so now just setting up uh in resolving those two connectors I get kind of a very cheap uh like muscle preservation you see the biceps moving a little bit more and it's just He's Just a Little More Alive um and this is just one constraint bounce between two nodes essentially um so you can do some interesting things in here uh here's a little bonus tip you can do things like uh you know debugging uh so this is fun let's draw a line okay so I'm going to get my uh because these are the bones let's get the transform I wasn't going to do this demo but I can't resist so this is a really fun uh way to do interface with this's got you here may as well right okay so now we have a line let's give it thickness a bit bigger here need that's good all right so now um I've added this line you can see it's going to draw a line between my connectors wherever they resolve to um so now you can see I have uh there's two lines here because I have two um two of these in my scene but now I've just created a quick debugging interface so this is telling me basically that uh this bicep is balance between uh these two nodes essentially so uh some really interesting I mean you could have a whole mod that just runs a bunch of debugging operations you know you can write these in uh you can set up a bunch of settings essentially to uh you know if you don't want to see that stuff all the time we'll just create a branch node and if this is on we'll do our same little uh thing here let's call it debug and we're going to make this this public all right so now we come back to our modular rig and those are off um but maybe I only want to turn it on for this guy so I can turn on debugs now I get it for that guy um so very quick this becomes a tool that's much more useful for a myriad of different things uh all right so let's go ahead uh here we'll do the ahead and do the tricep two I'll do one more time so you can see how this is set up really fast we'll come in here and uh for the tricep turn off that schematic this guy has a lot of bone sometimes it's easier to work uh in the lighting only mode yeah it's a little more friendlier for me uh let's go ahead and pick his not that this guy that into a and plug the elbow into B right so now we should have a bit of movement happening there great so now we have a cool little like cheap muscle set up let's look at our lit let's turn off our bones none all right so he's just a little more alive just with a little bit of rigging uh in here and with a module now that's useful lot of different uh types of uh things now it's not just you know handling our forearm handling some muscle movement up here uh I don't love that twist happening when I do that fix that but uh it's most more so to demonstrate what it's something to stress something to stress as well right is that yes you've just built this as you were setting up Rampage and it seems like it's purpose buil for Rampage but it's not right you you sort of you build a tool that you can use in all the characters and the more parameters you add to the more uh applicable you make it to different scenarios as it possibly historically grows as you work with it um you never not never but you rarely have to go back to the graph ever to set up a constraint if uh constraint module if you have a good set of for your production so just want to stress that yes you're doing it you know incredibly well in as far as demo usually you do this like a couple times in production then you just keep using the modules right yeah and I also want to note too everything I'm going over today um I have a uh we have released the modular control rig um documentation uh there is this is all documented uh in how to write an module um uh so I I put the QR code here you can come in here and uh browse through and see kind of all the modular rigging uh if you're curious about creating your own modules uh there's a lot of uh info in here so grab this QR code and it'll take you straight to this docs which are now on the uh EDC uh super great uh so uh real quick let's talk about hi this guy let's talk about uh a few of our other tools um how much time do I have Tina do you uh um I mean how much do you want to go through i' I'd say probably if you have something for the next five 10 minutes that's probably fine great y yep we can do this in five minutes okay so uh if you notice here that uh my wrist is still candy wrapping a bit we can take this a bit further using some of our other tools so I'm going to create a new deformer graph all right so the deformer graph uh is in beta currently and we'll just keep it deform graph it's fine and it basically lets you add uh real-time deformers onto your assets so I'm just going to step through here I'm going to come in here I'm going to add Rampage as my mesh uh I'm not going to to get too in depth to this editor I just kind of want to give you an idea of what you can do with this it's really powerful um in 54 we we're shipping a suite of deformers uh for your character so we're going to uh come in here I'm going to start building this graph out so we're going to do our skinned mesh let's do that okay all right and so I'm going to build a little what I call the former stack okay so we start here out our points or skeletal mesh going to go down the stack uh and we're going to need we're going to want to CER a linear ballon skin that's what we see now uh I'm going to come down here and I'm going to do a compute normals tangents because we want to uh have that happen again and then right and mesh okay okay so right now uh this is basically just defining the a very standard deformation stack for this guy this is what we're seeing in the viewport uh when we're in here this is kind of the idea so uh what we're going to do is Swap this out for a dual querian skinning um method what dual querian skinning does is it will maintain volume in specific areas very well uh and the wrist is one of those it really works well in the wrist and elbows like shoulder regions uh so we have a sueded deformer shipping with 54 and I'm just in dual quter skinning is one of them so I'm going to pop it in here just right under here and I'm just going to connect this up okay and so we're going to load a bit actually let's go here let's export out our animation so I'm going to bake out this um this uh animation sequence so I can access this uh later Rampage all right cool so now I can come in here and I can load up some animation there's our Rampage animation so now we see that in here um and you can see that we get getting some candy wrapping uh but not as bad as we were so if we compare this to the linear blend skin we compile you can see just how much more volume it adds it's kind of subtle in this instance because we did help it with rigging but it's enough it like does make a pretty big difference um and just everything looks generally uh M volume a lot better especially like in the shoulders and the elbow regions let's go ahead and take a look at that again we compile all right so uh if we wanted to leave it here we could actually plug this in and how you hook this up in to see it in here is we need to find our uh skeletal mesh in the level and you can come down in here and we search for our deformer turn on mesh deformer and let's see is that the one we want do yes all right so now there those those updates are flowing through into the level now we're getting a much better uh rotation in here if I come in here and it let's go to that grab it all right all right so that's that's the deformer graph uh we have a whole Suite of uh deformers linear deformers uh such as twist and there's some videos out there right now that kind of show some of this stuff in action really cool uh and Daryl went over that in the 54 features overv to which is a really awesome also um real quick uh we're not going to do a ton here but we have updated the skeletal editor uh a bit um I'm just going to go over the release notes on this just due to time sorry uh so in our release notes we go over everything I went over today uh plus a little more uh and we have let's see scale editor scale editor moving the beta um so it's all about components so coming in and cleaning up your weights adding animation to it um that's all in here and a few more cool little Nifty control rig features H feel free to jump in on this one as a direct manipulation you can now select certain nodes inside of control rig and interface with them visually uh we're calling that this direct manipulation and last but not least uh retargeting uh I got to show I got to show retargeting because it's just so great um and we'll call it a day okay so the new retargeter has had um a ton of work it's just so easy um you right click on any animation sequence and you come into retarget animations and we're going to pick Rampage here spell all right and so then you can come through here and pick whatever you want to um Target you see he's getting retargeted um immediately it's looking pretty tough in this one and to export uh you just export your retargeted animation click through this all right and so now we have a new animation retargeting that's how easy it is um a lot of info on line docs uh but I don't want to go into it too much more because that was that was the big point of this release was simplifying that greatly well done I didn't have to interrupt anymore so very well done wonderful um I said check out the release notes we have a lot of other cool things in here um more details and there's some other videos out there kind of going into DET detail on all the stuff a bit more yeah we'll be sticking around so if you have questions later at the end of the stream fit free I'll be here as well so if you have technical questions or anything like that on control rig in general or mucho ring specifically let us know fantastic awesome I'm glad that you did do the little bit on retargeting because I I loved watching just a slew immediately as soon as you did it go oh my God I know it is exciting everyone awesome all right well thank you so much for walking through that uh like you said there's so many updates so obviously yeah please take the time to go read through some of the release notes to get a little bit more information on some of that stuff but thank you both for walking through that really appreciate it um we're taking questions still from chat obviously as this all goes through so if you have questions on any of the topics as we go through just toss them in there we'll grab them and at the very end we'll do a Q&A segment so if you got anything you want to ask make sure you put it in there that's the whole point of this uh next up I think Jose if you're up for it we'll hand it over to you to chat a little bit about motion matching yeah sure I'm ready all right let's do it I'm ready okay everyone so today I'm going to be talking to you about motion matching but also ER what I'll be showcasing motion matching on is the motion matching sample that we will release in June so there you go that's when the sample is coming ER if you could screen share my screen now there we go we've got it pulled up for you awesome all right so this right here is the motion matching sample which we've officially titled the game animation sample everything that you see here is obviously still work in progress we're we're still not done and along with this H with this sample project we're going to release an example on how we do motion matching internally how we realistically use it in in a game scenario and that's why we're calling it The Game animation sample the intended purpose of this sample is that over time we're going to upgrade it and update it and so on and so on so 54 may have something the next release may have something else the next release may have something else and so on so let's start off by telling you a little bit about what motion matching is if you see this line at the bottom this is the query this mean this is what the game wants wants the player to do so motion matching is an animation technique where we select the best possible animation from a motion matching database and that animation is decided based on a b based on things like the character's intended trajectory and the character's current future and past poses those we call features and those are what are used in the motion matching search uh so we search the motion matching database for the best matching feat feature and that chooses what animation you're going to pick in this example here we have a full on ground character Locomotion and the two main problems that we wanted to tackle here is a strafing movement set where the character is always facing towards the camera and a forward facing animation set where a character is looking in the direction of the movement we also wanted to include some other examples of things that you can do with motion matching such as traval that you're going to see right here and jumping jumping landing and all that good stuff so let's talk about the minimal setup first I'm going bring that onto my screen right now so this right here is the minimal motion matching setup so this is all that you need like this part over here is optional I just kept it because it worked for my example but let me just remove that right here so you drop a motion matching note you drop a post history Noe and you connect that to your output post and check this box right here that says generate trajectory and there you go your aning blueprint is done now let's go over to your database selection a over here I prepared a a a database but so that you see that I am not lying right here you see it it's empty so let me just replace what animation blueprint my character is going to have right now and and there we go beautiful animation theost character and now let's bring in another ascept all right so right here I preprepared a just a folder full of animations that I thought worked well with a dragon drop so right here is my motion matching database which you can just drag and drop your animations on and there you go I dropped all these animations in in the postar database you can just see this is my coverage these are the animations that I have and now I can just run around and play those animations so one thing that I really like that has been going on with the community right now is that the community is sort of speedr running of who can have the fastest motion matching setup and I think I've seen motion matching in 12 minutes motion matching in 10 minutes motion matching in five minutes so this is the speedrun over how you get motion matching set up in your product there is one asset missing right here which is the schema so a schema is another asset that describes when I mentioned before motion matching matches features or or or channels the schema represents what those channels are and what are the things that you care about when you select your animation ER for purposes of not breaking my My Demo here I prepared another asset here ER when you create your your schema you get just this under skeletons you can select which skeleton your schema is going to be used for in this case it's just my character skeleton and then over here on the channel section you can add channels so I'm going to start with four four channels and I'm going to describe a little bit over what they are the most common channels that we use are three there the trajectory Channel and there's the Velocity Channel and then there's the position channel right here so the trajectory Channel means exactly what you're seeing right here this is my character's project and I'll actually use another debug draw here show this this is the game trajectory so this is what the character is doing H the trajectory Channel lets you specify what do you care about about the characters trajectory so over here you can add samples I added four and I believe these ones are autop populated for you the first time you created and it right here are where you see offset right here this represents the time in the trajectory that you care about so I care about where my character was4 seconds ago I care where the character is right now I care where my character is 35 seconds in the future and I care about where my character is 7 seconds into the future that's the trajectory channel the weights over here represent how important are these channels to your overall search motion matching will sort of like sort of like quantify the values over all of these over all of these features like your trajectory your post and it's going to score them then it's going to weight them based on the weight that you have on on your database sorry on your schema and then it's going to add up all those scores and give you the one with the lowest score which is the closest to your current animation so rectory Channel then there's the velocity velocity channel in which we can specify okay we care about the trajectory of the character now let's talk talk a little bit about the pose let's say I care where the foot is going to be where the foot is going to be or what the velocity of the foot is going to be you just pick I care about the velocity of the feet you can do the same for the other foot and did I do the same thing yeah okay different and then the position channel it's the same thing maybe I don't care about the velocity of the feet in the future I care about where the feet are going to be in space in the future you can use the position Channel but for it works the same way you can just specify which one you care about but for this demo I'm I'm not going to use it and then let's go back to our postar database your poster database you can specify what's the schema that you're going to be using which features you care about and just going put that one there we go and now let's talk a little bit about how you can make sense out of this so I'm going to run around a little bit and use rewind debugger rewind debugger is a tool that has been out for a while that lets you debug everything animation related so I'll just run around with the character PA and now I can see exactly what the character was doing and now this is going to be your best friend if you're working with motion matching and and that is the post search debugger it's lots of numbers it's very scary when you first look at it ER but in reality you only care about a few things here and that is I click that by aim sorry open that what you care about here is the cost so if you look over here in in the asset you can see which anim at the top is the animation that is selected so it's a run start and it becomes different animations as I move around then the next thing that you care about is the continuing post this means this is the next animation that the car this is the next frame of Animation that the character would naturally transition to and then you have post candidates which is everything else so what you'll see right here is well exactly this we're storing them from least cost to most cost so these ones are sort of likely to get picked this ones this one was the best pick but as you scroll down you can see that the number grows bigger and bigger you're never going to pick those animations so let's talk about what the continuing pose is the Continuum pose is the next natural animation so if you have an an animation of running around your next frame is going to be your continuing post generally when you use motion matching and even outside of motion matching you prefer to go to to the next animation unless there's to the next frame of Animation unless there's a reason to change for that reason we use something that is called the continuing post bias and I've lost my assets I don't know where went it's right here okay we use the Continuum post bias this means how much we bias are scoring it's literally an addition to the formula that calculates that cost that says okay give this animation this Frame of Animation a little bit of a lower cost so we prefer always going to the next animation and that's pretty much the basics of what gets your character to keep playing the same animation while you're running forward now in your re in rewind debugger which I've lost again it's easy with all these windows open they just hide yep I usually work with multim monitor you know so it's a it's a little bit harder when when you don't have that in a life hard mode yeah for sure so let me just rewind back over here okay so right here you can see a breakdown of the features that we Define in our schema that's trajectory right foot left foot and and you can just see how much each one of these impacts a decision so if we go to the exact frame where we switched with from one animation to the other and that's pretty easy to see in rewind debugger you can see the weights of all of your animations just find the very first frame and you'll see as I go back and forth fourth I changed animations right here so let's see why did I switch to this animation it's because this one was the one with the low the lowest cost and in the frame of swap which is I'm a little bit confused where did the animations change right here so you can see that the continuing pose would have been continue on the Run start and then the next frame my my continuing post was exactly that animation the animation that I would have picked if I if I would have continued the previous animation but another animation scored better now I mentioned before like that you see a lot of these animations here and that part is scary if you only care about seeing what's the best score of each in of an individual animations so these are one animation that has 30 frames will have 30 entries in the same animation so if you only care about the best entry for once particular animation you say only best POS as it here and you can see oh I only had these many candidates and those are all that I search and this is a lot more digestible over what it is so now that we've covered the basics of motion matching this is what's going to get you 80 or 90% of the way there this is what those five minute 10 minute videos tell you what to do but there's always things that don't work quite right and the purpose of this sample here is we want to show you how to get that final 10% done so let me revert back to my previous charact my previous animation blueprint and I will show you that right now this is the animation blueprint that we're using in the game animation sample it is a bit more complex but it's that's because it's a lot more robust this covers a lot more of all the cases this is the setup that will work in your game Drag and Drop the main differences here is that motion matching is an excellent tool for picking a animations from a database but motion match can also get confused especially when you have low coverage low coverage means what happens if I'm going at 30 degrees or if I'm going half as fast as my animations were authored what happens if I am if my anim if I don't have an animation that matches that exact and that's why we use this function that you'll see right here evaluate Chooser so choosers are a feature that's also not new in 54 there's some additions that that that we put in in 54 H but generally the idea here is we don't want to confuse motion matching so we've isolated in our official setup starts stops pivots in separate databases that keeps our selection clean and it means if I'm doing if I'm starting to move I only search my starts if I'm stopping I only search my stops and same with the loops and chers a chers have a Prett robust integration with with rewind debuger 2 so if I click record right here and I move around let me just go back here you can see right here live how my selection changes and what Chooser gives us and choosers you can use this to choose from any character blueprint values that you have in any blueprint so in this case it's just these four over here that we computed manually somewhere in our event graph or animation blueprint users will give you uh one database or multiple databases that you search those run through this fun this function right here eval user and we call set databases to search on an anim node function if you want to learn more about what anim node functions are that's available in documentation and we're going to be very detailed in our sample when we release it ER for now just look for any note functions and you'll see how this work but basically set databases to search tells this node right here these are the databases that you want to search on and now let's talk about something that you're not going to find most likely anywhere right now so let's talk about traversal I know a lot of people are probably wondering how do I get this to work with motion matching and I'll tell you right now our traversal actions are montages you play montages those montages have Roo motion and it is actually pretty straightforward forward what you do is this right here you have a the motion match function which you can give a set of animations to search these animations can be from Chooser or it can be a whole database it's really up to you what you give to it and then you just say play Montage the result of that animation and that's really the architecture of how we've done all of our traversal in in this sample right here so let's look at a little bit of that right now by the way how am I on time right now you're doing great okay you got plenty okay awesome let me do a traversal action right here and we're going to debug this so you see right here when we start the first when I press space bar to do our first frame of that traversal interaction we are running a search on just that given frame and the search is returning to us the best animation the and the best frame for that animation to start if you see right here I was showing before re bar you could see the trajectory and other things here you'll notice this point it represents the edge of the geometry you can get this from any calculation that you do on your game site this can be a trace this can be a predefined warpo that's all really up to your own game project but we want to feed that position directly to our motion matching search so I'll show you how to do that right now ER what you want to do is to create a custom Channel you can do that by going to blueprint all your classes s for channel and you can pick position velocity it's a position it's the position of the edge of the of that object in the world so I created it right there and this will give you one function to override which is this get World position so I've already made this one over here in which I fed that world position through an interface so all that I'm really doing is feeding the result of that trade over to motion matching and then in my post schema when I am choosing one of these features over here I can select exactly the type of Channel that I created right there so this PSC or if I this new blueprint that I created it's right there you can just pick that one it will just work and and to feed that value to your a through your interface you can choose how you're feeding that since I used an interface as you saw in the blueprint I'm just feeding directly the the result of my Trace over to the search you just run the search and you're done and now I wanted to talk about a two more things one is a lot of the samples that we've released in the past have been very strafe heavy like a strafe shooter kind of like fortnite or Lyra we also want motion matching to have a good example of how you use it in a forward facing situation like this one where you have the nice directional starts with nice looking rotations for that we' created a new node that's experimental in 5.4 that we rely for all those kinds of transitions that is called the steering node which is this note right here so if I have do I have something like five more minutes five to 10 more minutes yeah absolutely awesome Okay so if you're familiar with motion matching you're familiar with the motion matching node motion matching node selects your animations then Blends over them using something called a blend stack where we choose an animation then we choose the next one we blend to it we choose the next one we blend to it too a a blend stack if we select two different animations like for example left animation blending with right animation we have animations that are going in different directions if you've used our post Waring notes like orientation warping this one right here these ones rely on root motion information to tell you how you need to warp your character animation so if I have an animation that's authored to go forward and I go at an angle I can warp that animation using orientation warping now the problem here is if you're operating on the Blended result of both animations where one is going left and one is going right the root motion just makes no sense anymore the root motion result is nowhere it's zero so the way you want to solve this problem is by warping each one of those animations individually so this is what a blend stack or the motion matching note looks like internally you select an animation you blend to the next animation you blend to the next animation and each one of these selections of Animation can have an internal graph just like a state machine does and that is the motion matching blend stack graph you double click the motion matching note and you get it right here and this means that any operations that you do onto your animation onto the post they will only affect that one animation and then blend the result of those graph run animations together so we can run animation orientation warping on each one of those animations and we can run steering what steering does is it grabs the root motion information from the source animation and it warps it towards the our characters desired facing this one the Desir facing we you can calculate it in any way that you want we did it using our trajectory we looked at the future of the trajectory so4 seconds into the future that's where that's where our character is going to be that's where we want to warp our animation towards so we run steering that warps the animation and then this other new node this has been experimental since 5.2 or 5.3 but we've used it in in the sample is the offset root bone which graphs the root motion information that's a result of all the graph that came before and we apply it as an offset to the root bone what is the result of this what this means is let me just disable the offset root bone for a second uh our character is doing this our character is snapping snapping snapping snapping off the root bone our character is using root motion information from the animation to drive the rotation of the character and that lets us have nice directional motions now that's it for motion matching there's a lot more that that you can learn that you can learn from Community tutorials I promise our official documentation is coming soon soon and when you have that you're going to be able to see all the small features and details that and things that you can do with motion matching but what I want to share with you now is I was following chat a little bit and some people mentioned like bringing animations to my character is extremely hard and that is a problem that every single project runs into both like from the community and even internally so what we wanted to do here is to sort of make this The Hub uh of you want to use your own character animations from samples that we've released or you want to bring your own animations to another character that you have we're using live retargeting to retarget this motion matching set to any character and the sample will include a will include examples of how to do that so as you see right here this is the ufn mannequin this is our UI mannequin we have Echo from Valley the ancient we have a meta human and everything that we do here is everything that we do is compatible and you can also see how high quality your target is across your different characters so when the game animation sample comes up you'll be able to have examples have to bring animations to your own games use motion matching with your own characters and even share animations across different projects that you may have or with samples from the community and that's pretty much it awesome aome just that's it no big deal just this incredible Tech thank you so much for walking through that and showing us just the surface level of some of this really cool stuff I know we're all very excited for when the sample comes out and everyone can actually dig into it themselves but thank you so much for walking through that really appreciate your time thank you all right well next I think we'll hand it over to you Brian if you want to talk a little bit about some of the rendering updates that came out sure um I'll I'll start with nanite because that's the the thing I'm closest to um had uh been doing a lot of work with uh with the dynamic tessellation for nanite um going on for a couple years now and it's uh some people saw that that was that was a in the in a work in progress state in the the 53 release um but we weren't really ready to release it quite yet and uh that time is now for 54 um it's still in an experimental state but it's actually like ready to be used um with some expectation that it won't be terribly broken like it was kind of in 53 which is why we didn't like document it and and talk about it because it wasn't really ready yet um but it's ready to to try out um the I've gotten some questions as far as like why does why do you need to generate more triangles when the meshes were so uh so highly tesselated already with nanite like do we really need smaller triangles um and there's there's some good reasons of why you might uh want to use a dynamic tessellation instead of just uh um the highly tesselated just High poly meshes that that nanite allows um the there's just cases where um you want to create some like procedural detail um places where it wouldn't have made sense to create a a bespoke um High poly mesh for just that situation um we we go in a bit more on this in the um in the the breakdown that we did of the the Captain America and Black Panther demo that we showed off at at GDC um I I don't really have a lot of materials here to to show you un likee some my other um no that's Partners here on this dream but uh yeah I'll just kind of to speak to what um what the very stuff that that rendering team has has released in this um so there's reasons why you might want to to use Hardware tessellation is this sort of like procedural detail cases where you'd have um say a a where you would normally want to use uh like tiling textures and normal maps that you wouldn't have built out the actual like geometry of meshes um say you've got like a Cobblestone path on on the the ground and you want that to um to twist and wind around it would it wouldn't really be practical to create um a a unique gigantic High poly mesh of the entire like walkway and Cobblestone um what you'd want to have is a reusable bit that is replicated along it you can try to do that by placing many instance meshes um but that's a hard thing to do we've got um spline mesh support which is also um kind of ready for for prime time now with 54 that's that's one of the things that we released that might be a use case for that but there are other places where that doesn't make a lot of sense you know it's blind meshes are can follow like particular paths but you might want to have a a displacement go over a a more complex surface so um the dynamic tesol feature allows that um I guess I'd say that uh be careful about the cost of it unlike nanite that in most cases just like base nanite with high poly meshes scales pretty well it's mostly unless you get cases of like heavy foliage and overdraw it mostly scales to just the how many pixels you've got on screen um tessellation is a bit heavier of a feature so be careful in where you use it I wouldn't recommend necessarily covering your whole game um with tesselated uh materials and surfaces if you're trying to hit um like 60 hertz on a console for example exle um but if you've got a higher end Hardware or you're not shooting for for a real- time like game sort of frame rate um yeah you can use it and a lot of stuff um I guess a one recommendation one thing that I would highlight that we've tried to highlight in the docs but one thing I try I would recommend is um be careful with what your ma what your magnitude setting is on the displacement because the larger that magnitude is that controls the overall bounds of the of the patches that are rendered um for culling purposes so try to make that magnitude value as small as possible so that you can use the entire range of that magnitude when what you're actually outputting to the displacement pin um but with that I'm really uh excited to see what what everybody uh does with it um we have a number of other uh improvements uh that have are coming out in 54 for for n night uh I mentioned the spline meshes already but we also have uh um compute based shading um it used to be pixel shaders that were these like full screen quads that were drawn on the screen um but we switched over to a complete compute Shader based uh uh material base passs um with that it should mostly be transparent to you it'll just run a bit faster um but some of the features that allow it to run faster is that we've got software V RS that has now been enabled with the the compute pipeline um so whether your Hardware supports um like Hardware vrs or not you can have variable rate shading um working in in a in a software supported way so basically you can have variable rate shading working on all platforms that support support Nan um and that's that does accelerate um your your B your nanite base pass by quite a bit some other optimizations that came in there was uh some REM removal of what we call empty draws because nanite is a GPU driven pipeline um we have to do a draw call or a compute dispatch for every single material that is present in the scene whether it's actually like in view or not um because whether that's in view isn't really known um on the CPU that is launching those draw calls or those dispatches the CPU doesn't know about it because it's a GPU driven pipeline so we need to have the GPU be able to trim that stuff um we don't quite have the API control to do that everywhere on all platforms but we've added that on the platforms that we do have the ability to trim things on the GPU for stuff that isn't actually visible so you don't get this cost of these empties and when you get a lot of empties in a row it adds a bubble in the pipeline that just means your GPU is idling and not doing real work um so we can get rid of those bubbles and make it so your gpus is just uh running it full bore which is what you want it to do um so that's kind of some of the stuff happening with with nanite but there's been a number of other rendering features that have come out with 54 as well um TSR has some improvements uh really cool thing called history Resurrection where um because TSR and any other like TAA sort of technique is accumulating samples from many frames anytime you get a disclusion where an object is moving and it then displays what was behind it where the you get a first frame you now have um a place where there couldn't have been an accumulation of samples so you're seeing some bit of the scene for the first time um anytime that that happens in a TA or particularly a temporal up sampling case where you have even less samples that you can H that you can add each frame so there has to be a lot more accumulation um those areas tend to not look great they can be noisy they can be high contrast that can look lower resolution um history Resurrection means that if in the recent history you have seen that and it was just something like passing by the screen for instance so you saw it then it was covered then you saw it again um we could be able to resurrect that frame where you previously saw it so it was uded and then you saw it again um we can resurrect that bit um so you get an actually like accumulated um resolved bit of image doesn't look as noisy or low res so that's a cool uh um addition for for quality for TSR um some other stuff it's uh got support for orthographic cameras I know this is a a thing that uh some people in the um in the uh Enterprise space really uh of looking for um it's something that we haven't really supported well like we supported in the in wireframe rendering and stuff like like that but actually like fully lit views and orthographic have been something we haven't supported for for a long time but done done the work and that's that's uh ready to go and release now um another thing that was shown off in that GDC demo with with Captain America was uh was heterogeneous volumes um so this is like full like uh volumetric rendering where you can have smoke or fire simulations and have array actually like March through that volume instead of having what so much effects that have been in video games for forever have been Sprite based um and and effects artists have been trying to fake the fact that you have a real sort of volume of of smoke or volumetric fire instead they've got just a camera facing sort of billboarding sprite or collection of many Sprites that are all compositing together to try to fake that that volume um well with this heterogeneous volume rendering feature um you can combine that with open vdv um files that are actually like volumetric um pre-computed volumetric Sims and do that um use this feature to to render them to light them for them to cast Shadows onto the scene for them to cast Shadows onto themselves um you can combine it with hand import VDB files you can also do it while just like running a a Shader it's the ability to have a sort of a volumetric function um that's that can exist in the scene and receive lighting and cast shadows and all that sort of thing um so that's it's in a in an experimental form um and there'll be some more optimizations and and kind of buildout of of the feature Matrix make sure that that interacts with all of the the various different effects in the on screen so that it's you know nicely integrated into the frame um some more features and and fill out of that will come in time but it's already in a in a in a pretty nice state that we were able to show show it off and look really nice in in that demo at GDC um some less less about uh so we also have some some work that has been done that's less about like sparkly pretty pixels and it's just about um optimization so um so I know that the community has has reacted pretty positively to us talking about the the sort of frame frame rate times or the improvements that happened with the city sample um a big part of that was um render paralyzation work that has been done to trim down the the render thread Time by having better paralyzation of the work on the render thread um a lot of a lot of work and a lot of improvements has has been done there and continues to be done and we're we're still doing work and making improvements going forward but a good chunk of that is coming out or has come out now with with 54 um so we get some some really nice improvements a good like in some of our tests uh examples like cutting the Rend your time cost like in half so it's like really really big improvements there um another bit of optimization is uh uh a lot of work has been done into um reducing the the time or the amount of shaders that need to recompile when changes are made um I know that's it's been uh an issue that have plagued users for years using Unreal now of like just having to wait for all of your recompiling shaders um so this uh is something we're really trying to attack to bring down um both these sort of like interactive when you're in the editor as well as improve overall like cook times when you're just trying to cook the game um because cooking needs to compile shaders if they're out of date as well um so we've made made some nice improvements for trimming both in the way of um trimming down the number of shaders that need to be need to be compiled because we have better detection of what stuff is is out of date and is not as well as trying to improve the actual like time it takes to to compile the shaders themselves um so good improvements that have have come in in 54 there uh let's see um some work has been done in in bindless uh bindless resources um that's still very much in progress so I think it's a kind of experimental state right now I'm not sure whether it's a we still be able to use it without getting some crashes um but it is work in progress and and a good bit of that work has come out and and 54 uh another another bit that is uh in progress um and is out in an experimental form at least is uh rate tracing on Vulcan um so that should kind of match up to the same feature set that's been in and direct 3D side of things but now you can use R tracing in Vulcan or at least in an experimental form uh you can see speaking of rate tracing um a lot of improvements that been done done in in the r tracing um uh performance side of things a lot of optimizations um the the general sort of shift is um we're focusing a lot more on trying to get uh Hardware rate Trace Lumen to be kind of the more the the sort of primary uh mode instead of the the distance field tracing um distance field tracing has been up until now the the fastest way of doing it and it's still that way for certain types of scenes um but we're we're we've shifted more resources into trying to make the hardware R traced uh Lumin kind of the the primary mode uh because we've seen um we've seen some early evidence as well as some exper uh experience once we've made some of these optimizations that that that can actually be competitive from the performance point of view and it certainly has um has benefits from the quality side of things and it's only going to get faster as um Hardware rate tracing um in the gpus evolves um that's moving at a very fast rate from from architecture to architecture when uh the new new video cars new gpus come out um so we're we're fully on that sort of path and are making improvements for it and a batch of those improvements have have made it into 54 uh let's see what what did I miss oh lastly or one of I missed I don't know yeah um large World coordinates on the GPU um there's the the wording on this is a is a little confusing there's just some things in our release notes that say like a double Precision it's not exactly we don't support doubles in shaders that's actually kind of a misnomer um it is large World coordinates as supported in um in material graphs and in shading now um but it's using a different format than like your traditional like double float um that you'd get in like C++ um the reason why is that not all gpus on all the platforms that we support um actually support doubles so that's one problem and the ones that do support doubles um the the performance for doubles in shaders is just usually very slow um so instead we've got like an emulation for a high Precision format using this this format called a a dual float so you have two float values um one Kings the sort of High bits the other taking the the the the loow decimal places um and those two together form a higher Precision number um it's does not have exactly the same sort of precision that a full double will have um but it should be higher performance um and supported across all platforms um but that that support is is out in 54 so in place is where you have absolutely gigantic worlds and just massive massive games um and you want to be able to do some of this like math in your Shader to do like World space coordinates um sort of world sort of Deltas between actual like positions that are that you're trying to calculate in world and you're trying to do that like in your material um and you're trying to do that really far from the origin if you didn't use this new feature you'd have uh major sort of like stepping and banding artifacts because you don't have enough Precision far away from the origin um using this new higher Precision lwc um support should should be able to um improve those problems um I think I covered all of it looking at the release notes now yeah oh I missed the I one at the top um neural network engine um is is released with h with 54 um so this is our our like abstraction layer for uh for neural networks coming into the the engine um there's various different things that it supports but it allows us to abstract what those what those end apis are whether that's running um ispc on the CPU or whether it's through direct ml um this is our our like abstraction framework um to be able to uh get neural networks and do um do inferencing in and the runtime so exactly what that can be used for is uh was yet to be explored but uh but the framework is is released in in 54 to allow people to start exploring that yeah I kind of love that honestly that there's not necessarily a very specific use case for it it's that the tool exists now experiment see what you can do with it I love giving that kind of creative freedom over to uh developers and seeing what they can make up yeah so I mean we've we've tried already it's not like we have not like we've not used it for anything so we we've got some uh some experiments already of having full screen postprocessing of doing like style transfer sort of stuff and like we've done some experiments to to use it but really the I mean it's a it's a very active and fast moving field AI right now um and exactly how that that ends up impacting rendering is is anyone's guess but uh getting those sort of foundations to be able to explore that is is what this is about so we'll we'll see that starting entering more into real-time rendering in in time yeah definitely well thank you so much for walking through all those I know that um I think my favorite comment I've ever seen um especially in regards to the compiling shaders was someone said that they don't know who they are without their shaders compiling so we're giving developers identity crisis this is fantastic though thank you so much for walking through all of that and again I know a lot of stuff was covered there but if you have any questions about any of that please make sure to toss them in and we'll collect them for Q&A at the end here then next last but again certainly not least Ben and Ryan I'll hand it over to you I know you were going to talk to us a little bit about horde I believe that's right yeah I'll I'll pick it up to start off with um I think we're switching tack a little bit because we're not talking about stuff that's in the engine so so much um in general I think uh one of the strengths of unreal has always been in the uh the tooling like a lot of the things we've seen in the the stream today um but that historically that uh tooling is kind of stopped at the editor boundaries it's all stuff that you run on your machine and uh that's the kind of limit to it um and to actually successfully run a project in production when you have a bigger team you have to get everybody to work together and so so on there are a lot more things that people need to um to think about um and we haven't really sort of dictated or encouraged anybody to use any particular solutions for those things but the every team has to go through it and there's a lot of sort of Reinventing the the wheel on that stuff there are lots of um third party things you can use to to help a team work together there are things like build automation systems like Jenkins or team City things like that uh maybe to improve your build times then you might want to have some distributed compilation solution like credit build or snbs or fast build something like that you might have to set up some Network shares and so on to be able to distribute bills to people all that kind of stuff and in general they're all very segmented and it's quite janky sticking them together um and we wanted to like internally at Epic for our own use cases as much as anything we wanted to be able to combine them together so that we can smooth out some of those joins make it so they work together really seamlessly that everything has the right context to be able to sort of dictate how the next thing operates and so on um just kind of reduce the cognitive load that takes for people to work with uh other people on their team um and to also kind of selfishly for Ryan and myself reduce the overhead deploying and managing this kind of stuff when there's a different tool for every aspect of production that you get into um it be gets quite difficult to just keep things up and running running smoothly uh keep it optimal that kind of stuff so about five years ago we started working on a product called for which I'm going to talk about uh today um we started we developed it internally and we've been we've been working with it for like I say about five years now um I think fortnite has been shipping on it for the last four years um and the 54 release is the first time that we're kind of it's all been in in GitHub and per force and been accessible to people for a long time now but we haven't really given any instructions on how to use it or even kind of explain what exactly it is it's just being like a a bunch of source code that's there so uh 54 we we're going to make a um making our first attempt at trying to open it up to other people we've talked to some other lenses they've tried it and had good results with it so um I'm kind of here evangelizing it today um so maybe if I can share my if you could share my screen down uh uh so this is the the GitHub repo um we' got the uh the release note for unre engion 5.4 there is an unreal hord server MSI attached there so it's like a uh it's an installer that you can run on uh Windows uh we do support deploying it uh using uh Docker on Linux as well that's in the the packages section of uh uh the epic games uh uh organization um there's also the Full Source there in the engine Source programs horde uh folder has some lots of docs in there and uh when you install that uh you'll end up with something that looks a little bit like this uh so this is the welcome page for horde we set this up as a a server so that everybody can connect to it um and the first thing you see is this this welcome page that gives you a like a guide to setting up lots of other bits of functionality that your team may or may may not want um it's important to sort of emphasize that all of this stuff is I know that a lot of teams will already have like um existing solutions to to these things and so they not want to take uh aspects ofo all of these things are enable enable uh individually um so if there's something that you want and something you don't want that's absolutely fine we don't sort of for you to use everything um but one of the things that we've found developing internally is that the more stuff that we include with it the better of cross referencing we can do between things the less duplication of effort that we have um the easier it is for people discover to discover things and uh to work with them so uh I've got this uh this hord server set up and I've connected it to to it through a web browser um I have if I go up to the server tab here and go to the agents uh you can see I have six machines which are connecting into my uh my hord server and uh the architecture of hord is such that um it's trying to solve at its core two problems there's lots of different Services which are sprinkled on top of it but there's two core problems which is trying to solve uh first is like coordination of different machines so um you have a bunch of uh if you have a bunch of spare machines and you can connect them into horde and you can send work to them so it'll uh you'll be able to distribute work that you would things like compiling your shaders like you can do that on other machines rather than doing it on your own machines um the other aspect to it is storage so um there are a lot of things produced during like if you run builds and so on if you want to share that with another person on the team then you could upload it to horde um uh yeah lot lots of other things lots lots of the little tools that we we sort of end up building on have a need for storing artifacts of of some type or another so um they can all use hord for that anyway getting back to the uh the main bit of the demo so this is what you get when you install uh horde for the first time there's some instructions there on how you set up agents which I've already gone through um probably the easiest entry point that I think to sort of showing what functionality is in horde is to look at uh build Automation and uh build automation meaning uh continuous integration continuous delivery all those kind of B Buzz words and jargon kind of like Jenkins or team City and so on but that acts as a really good jumping off point into other bits of functionality that hord can provide so even though I'm going to demo some of that stuff now uh you don't have to take that if you don't want to it's just a really good place to uh to show how things fit together so I've set up this uh this hord server to point to the uh the 5.4 release Branch um using the instructions that are in the uh documentation and uh the defaults that it comes with uh set up a bunch of build processes for you so that you can uh you can like build your editor package your game uh do all sorts of things like that um so I'm going to flick between these different tabs which have different types of jobs that they run on them uh the first one here is the incremental tab these are all customizable by the way like it's all config file driven so you can set this up how with your team wants to work but the idea with this incremental tab is that uh as developers are checking in changes into your branch then this is just going to run uh some uh some build jobs on it just to make sure that uh everything compiles everything works properly and so on um so we have a bunch of jobs here you see helg over there as well this integrates really closely with unreal gam sync which is another tool that uh We've uh been publishing for a few years now um in fact uh board has a download uh page where you can download on real game sync for it and real gamesync is kind of like the the client side application that developers can use to um sync down changes from other people and so on I've got a copy of it up and running here um this is all the changes that are in the the 5.4 Branch um you can see all of the changes that people have checked in um whether it's a code or or content change and you can set it up so that you'll be able to see like whether certain things have succeeded or failed in hoorde uh in this column here I haven't actually done that but anyway all of these um incremental build jobs that we have here uh these are building the uh the editor in this case I've got it set up so that it's building the Lyra editor a Lyra sample uh and as part of that it's producing uh a build of the editor if I click on browse here you can see that there's uh the engine folder which has a bunch of dlls and executables and all that kind of stuff in it and uh if you wanted to you can I mean you can browse through all of this stuff and uh download them individually but you can also just download the whole thing either as a zip file or um there's another way to just download it with unreal game sync you don't have to go to uh to The Horde uh website to be able to do this if you look in unreal game sync the one I had set up over here you'll see that half of these changes are grayed out and half of them are uh are rendered in solid font all of the things that we built an editor for uh show up in solid so um there's Helga's change over there corresponds to this Chang list that was built over here there's Sergio's change over here corresponds to this one over here and if I double click on one of these things inside in real game sync it will not only sync down everybody's uh code changes source code changes all the assets and so on it will also sync down those uh that build of the editor so uh if you have content creators who are working on a project at the same time as uh engineers then Engineers can be checking in changes left right and center and whenever there's a build of those changes available for Content creators to download they can come to in real game scene and just double click on one of these changes and it'll fetch everything down for them so that's the uh the incremental tab there's also some uh editor tests that we have set up here um so this is the kind of thing You' maybe run slightly less frequently but um what it's going to do is build the editor and then uh run some of the uh tests uh that we have built into the editor using Gauntlet uh which is our tool that's part of autom Tool uh for coordinating different machines when they're running tests um so those those are just jobs that run but what they do is they pipe uh data into the automation tub automation Hub over here uh so I can go over to automation hood and I Hub and I can select uh engine test and that will populate with the results of all the tests that have been done uh so we can see that uh there's lots of parameters I can uh filter things by down here um I can expand the list of uh rendering tests this will normally show if you have like a fairly big team and you have lots of different branches this will show you the results of running the same test in every Branch so you can cross reference whether some change that was introduced into one branch is causing a failure or whether it's existed some other place um but I can uh see all the results of uh running tests over here um I click on that I can expand into it see all of the different uh tests which were run I can drill down a bit further see a little timeline of when things started to break and so on uh this is a test which has screenshots in it so some rendering tests that uh have failed because uh there's a reference image for what it's supposed to look like and then there's an image what's what the what it actually produced and I'll show you the difference in there as well um kind of just helps getting on top of when something broke what the actual problem is be able to drill down to the details of it so that's automation Hub um just going over this stuff very quickly all of this stuff is EXT extensible and uh uh you can build a lot of functionality into it um this is like a completely custom instance that I set up yesterday uh being able to demo this stuff as I say epic has an internal instance of this which we Ed for fortnite and building and real engine releases and so on which has a lot of stuff into it so this system is kind of proved itself out to be quite scalable for our needs and also pretty adaptable to whatever our game teams come up to us and and say that they want uh want it to do um moving on through the tabs here we have this package build tab uh this is set up to build Lyra again uh and I can click on one of these jobs and drill down into it see all the various steps that uh were run as part of this this all of these build processes are scripted using build graph which is another tool that we've had in the engine for quite a few years at this point but uh we haven't provided any of the server infrastructure for being able to run it the idea now is that we can give uh a kind of golden path for being able to de velop projects like our samples and so on and that will integrate directly into horde so that you can you can build them and have a team working on some some similar sort of project in in no time at all um we can go into the details of any of these things and we can see that there are warnings in this one and so on there this really long log that's produced through it which is all nicely virtualized so you can just jump around it very quickly and get to the right uh the interesting bits but anyway um this package ler build here uh You See It produced a pack build top here which similar to the engine build that we saw before you can just step into it and look at the individual files and uh um yeah just just see all the outputs directly in line and uh just download it as a zip file if you want to to be able to uh use it in a play test or something like that the last bit which I was going to talk about is the remote exec is in the remote execution tab um so one one of the I mentioned before that one of our goals with horde was that we kept on seeing all of these different tools which kind of Reinventing the wheel uh to some degree to do with like uh if you have like say Jenkins for your build automation system and then you have something like incredib build or snd DBS they're both kind of managing a bunch of machines and deciding which machine should do some bit of work coordinating between them uh uh and deciding which bit of machine can do work at any particular time um and the sort of scale that they're working at is a bit different um when you're talking about a build automation system like Jenkins then all of the individual steps that you're running are probably quite long lived and uh they they keep our entire machine busy for I don't know like 10 minutes or an hour or two or something like that whereas uh if you're uh running some C++ compile you're spawning lots of little compiler processes and um each one of them contributes towards the the end results so it's a lot more fine grained um but we designed horde with a mind to sort of being providing a platform for being able to do this stuff in the general case so as well as using it for kind of core grain stuff like the build Farm itself we also have a remote execution tool on it which you can use for improving your C++ uh compilation times so now rather than having to compile everything on your local machine uh which is what's happening in this job here see it tooks 48 minutes to compile the unreal editor um it's quite a long time uh but if we enable the remote execution functionality uh which is using a tool called unreal build accelerator the build time drops down to uh 11 minutes and 57 seconds and what it's doing during that compile if I just go into the the log here you'll see it's spitting out that like uh it's compiling this CPP file this CPP file and there are lots of different remote executors attached to each one of these things so when it's doing that build then hord is reach reaching out to these other machines and saying you know you can help out you got some spare CPU Cycles right now you can help out building this CPP file so it sends off all of the um it virtualizes the um environment on that remote machine um or it virtualizes the environment of the host machine on the remote machine transfers all the CPP files over builds them remotely and then fetches them back to the uh the source machine once it's done um and we use this a lot now at Epic all of our products are built using this uh we have a massive Farm of at least 2,000 machines that are in the cloud which you used for it you don't have to use cloud machines you can just use uh regular um workstations or whatever um I did actually want to set up a a demo that used a Raspberry Pi to host the hord server because it's really not that um uh taxing uh all the the work that it needs to do um but it's a it's a super powerful technique and it's one that we're going to um uh we're going to sort of invest heavy on in the future at the moment we we're uh with 54 we're uh productizing this functionality that allows um Distributing C++ uh compilation using Unreal build accelerator and horde um we have internally uh a system which uses something which uses the same stuff inside the editor to do Shader compilation so rather than having to do all of that locally you can distribute it to other machines that have spare Cycles on your network and so on then expand on that for you a little bit B too like with with 54 release um you know we're touting um kind of the windows platform is is definitely ready to go you know we're we're calling a beta or 54 so anything Windows including you know your consoles Microsoft Xbox um PlayStations uh switch all kind of can compile through ubt and and uba um and we've got in kind of experimental state in pi4 is support for Mac OS and Linux platform natively um which and we're working with those internally as well so we're we're seeing you know lots of compile time boosts on all of our platforms internally running on on on horde you know fortnite and um you know we built unre five five 5.4 and released it using Unreal Bill accelerator so we've you know increased our comp compilation time there uh tremendously and it's been you know great great for us internally we're hoping lenes get to will test it out for us and let us know how it works for them too yeah absolutely um there's there's a lot of other functionality that we have in here as well that I'm not really going to touch on today so uh hoorde includes uh uh a system for if you have uh console devices if you're working on Playstation Xbox um or switch or something like that then uh it has a device manager so that you can have a shared pool of devices that um uh people can uh like borrow a kit from and then sort of put it back in afterwards and all the automated test functionality that runs on horde can also interact with that system and be able to check things out we have an analytics system in there as well so that um uh I don't have it set up here but there's a screenshot of it in inside the docs where um you can configure people's editors to send uh Telemetry data back to horde and and get some insights into what's the things that are slowing them down like how quickly it is to open certain Maps um those kind of getting a state for the the health of your team uh uh at a at a sort of macro level um through functionality that's already built into the editor um and probably a few other things as well that I'm I'm forgetting to mention we're we're starting internally we're tracking metrics on uba we want to know you know how eventually how quick to get a first helper for like things with uba any failures and kind of the distribution of like how many how much is a job being getting Road helpers and how much of is been executed locally um so we can kind of you know understand the health of our systems and like cook times or monitoring uh what cook times look like uh you can easily identify cook time regressions and and all those fun things so it's uh still pretty early days for as I say this has been in development for a long time internally epic but it's still pretty early days for us uh productizing it and giving it to you guys and uh we're really eager for the uh for any feedback you have about it uh even better we really eer for any requests or fixes that you find that are sort of outside of our golden path that uh we might run into so um we're really uh eager to get feedback from people to help us sort of shape it and Define what it's going to be uh in the future it's quite a we we've kind of tried to make it this kind of programmable platform more than anything else so there's more things that we can build on the top of it in the future and uh and hopefully we'll be seeing a lot more of it uh in the years to come anyway that's it for me all right fantastic I want just making sure I'm not going to interrupt anything Ryan did you have anything else that you wanted to add in okay also didn't want to just be like all right moving on while you're like wait no all right well thank you both for walking through that there's a lot of really good information there especially for um yeah I mean chat's freaking out so they're excited about it um lots of things that seems is going to be really help f for many of those particular Developers for their iteration usages all right well yall are up for it I think now we can go ahead and spin into our Q&A section here and I can just absolutely pepper you with a bunch of questions and we'll go through it a bit rapid fire here um I'm not going to make it too too long just in you know being conscious of y'all's time um you're very busy people so I'm going to go through try and make a sure I pick out the ones that I've seen pop up the most often but also for everyone watching if for whatever reason we can't get to your question if you had posted it um all of them are logged and we'll go through and see if we can't make sure that we can get some answers out to y'all in another format at some point so no worries your question will be answered in some capacity but we got to be a little cognizant of time here today so to start us off um I'll just go back to the beginning here and the first question I'll actually just answer it myself is about if there is a patch 5.4.1 in the pipeline 5.4.1 is actually out right now you can go get it and I recommend you do so there you go there's your answer go get that um then there also there's a 5.4.2 in the pipeline now as well yes thank you exactly um but that's later so we that's a tomorrow problem right all right first question here for yall though I'll go ahead and pause this over towards Chase and helie although obviously if anyone has anything else i''d like to add feel free to do so um a lot of people were curious for the modular control rigs if your character has to be pre-rigged and um skinned in order to actually get it set up for that uh I'll start it off um yeah well so modular controll doesn't handle skinning and Bone placement you can create bones within control rig and the modular control R editor um but weighting them that's all done through the skeletal editor which unfortunately I didn't dive into just because of time on here uh but we have a lot of great examples on that it's a new feature we brought into the engine in 5.3 is experimental and we marked it up to Beta in 5.4 uh so it's had a lot of really cool updates uh since 53 uh and that's where you would go and build your bones and weight your character then you take it into modular uh control rig and then continue on from there fantastic um next question here still um looks like for the control rig is there an x-ray view to see any controllers that may be inside the mesh why yes yes yes yeah we have I think it's called overlay uh you can enable it in the edit mode when you're in animation uh in the animation environment so when you sequencer you can enable that and you're going to see the controls shine through the mesh and there's also that's actually using a material and you can absolutely also build your own material and use that on the shape library to give it a different look and some other you know overlay that you may want very nice next question we've got here is will animation code interact with modular rig or is it just for manual control so Chas you want me to take this I think it's concerning runtime runtime yeah that's howed go for so I hope I I get this question correctly but basically yes you can use it for linear content creation like Chas was showing like use sequencer and create animation you can also run control rigs as part of animation blueprint and drive them procedurally we use this a lot in our internal projects for fix up kind of things like fix up shoulders those kind of problems so you'll build a rig and then procedurally drive it with um a a Locomotion system driving it for example it's absolutely something you could chain together um yeah fantastic uh is it possible to offset modular controls yes um I I guess what you're probably referring to is I guess taking the control and moving it to a new location uh after it's been built um yeah if you look in the uh depends on the module too uh you can click on the module uh itself go to the details panel uh and there's some settings in there usually to move the controls around uh specifically the shape uh if something isn't exposed there's no reason why you can't double click the module and if you know what you're doing you can go in there and expose it yourself too we kind of offer that that's a really nice uh flexibility of the system is that you can kind of edit it right on the Fly and uh if you need to very nice um next question I've got here for we really are full rapid fire right now this is aw uh next is retargeting now works with all skeletons but do you still need a retargeter for example cinti skeleton or those also an engine by default uh that one I would like to defer to I don't know um that would be a very specific question to uh Kieran Richie who is our uh engineer for the retargeter I can answer how we're going to do it on the game animation sample we're going to provide uh retargeting asset for the more common skeletons that we've released in multiple projects so u5 mannequin uifi u4 mannequin Echo meta human those kinds of things so they will be there awesome perfect perfect next question is can we do a mix of dual qualum and LBS uh you can so I believe in the function that we're shipping with the deforma graph that's actually not set up right now you kind of get one or the other uh but as they're built they are function so you can dive down in there and kind of modify it or take the code like a nude function and expose that that's kind how it's set up right now but definitely something we're looking uh towards being able to paint all of these deformers uh in specific areas to do exactly things like that fantastic all right then the last question that I think is is mostly aimed towards you so far um and it's a bit more uh more of an opinion piece than anything else I think but it's kind of fun what animation feature do you feel was the biggest Leap Forward in this release go for it helg you take this one I feel like this is this is a dangerous question I'm obviously very biased well I feel like looking at ufn um and less technical users I do feel even though that that's my primary piece of work the modor rigging is is really important because rigging is something that is perceived incredibly Technical and you know hard to approach and with this we're making it possible for many more people and you know much less less technical people to build characters so I feel like that has a big impact not saying that any of the other features aren't important and impressive but I feel like in terms of audience uh this is an important change wonderful what about you chase do you have an opinion on that matter or um similar to hel I have a lot of passion towards uh modular control rig spent a lot of time on you know constructing the modules and uh working together to make that whole system work uh but really to me it's the uh our entire animation ecosystem I mean all the tools have taken a step up and we're continuing to take them steps up on each release and how you can interface uh between all the tools like I mean all the work I did today and uh you know roughly half an hour uh if we're jumping between other software I mean everything I did today would taken immensely more time would taken hours uh you know just trying to get data across or you know something that go correctly uh so to me that's the real uh powerful part of uh what we've done in 54 is that we've really uh expanded what you can do within all of our tools yeah definitely awesome well thank you both so much for that and of course even though the rest of these are not necessarily directed at modular control rig that does not mean you are not allowed to speak so feel free to jump in at any point on some of these other questions as well um next we'll get into the ones that seem to be aimed mostly at motion matching so the first one is is motion motion matching I'm going to stumble over that at least four times I call it already um is it stable for mobile devices well a fortnite has been using motion matching on mobile since December so you will have to be careful about how big your databases are and do some manual tweaks we offer tools to look at that but yes it it runs it's stable for us hopefully it's stable for you but we definitely use it fantastic that was the best um like mic drop ever well yes because we already do it all right um next up I do also like I said want to be cognizant of everyone's time so if any of our guests need to drop any point while we're going through Q&A that's totally fine feel free to do so thank you for your time in the the meantime but we'll keep going through while we've got you um next question let's see will okay I'm going to redirect a little bit we'll come back to you Jose with a few more motion matching questions but I'm going to focus a little bit more on The Horde stuff real quick uh main one we've got here is will the 5.4 horde installer Etc moving forward work with 5.1 or any of the other previous uh versions of the engine yes it does absolutely we actually support uh there's one project still at Epic that's running on the U 427 release I believe we've got that's running on as well we we have U 4.27 and we have like our EOS and the epic game launcher or all u4 piece projects and those are every day working on H fantastic wonderful all right um okay now we'll ping pong back over that was the main one that I wanted to make sure I could ask both of you um moving back over to motion matching here let's see when doing motion matching for several different types of poses um for example if you had three different poses would you need to make three pose search databases or can you combine them uh I don't I don't think I understand the question very well because motion matching does it it bakes poses like individual poses of individual frames but you're working with animations so if it's three animations that make sense in the same database then put them in there are tooling like when I showed the Chooser versus database setup the idea is that you want to start by dropping everything in a single database and see if you get selection problems if you get selection problems either you tweak your schema to make your matching better and if that doesn't work out you separate into choosers and have some manual selection before the motion magic selection perfect all right let's see would it be possible to add different overlays in the motion matching motion matching sample there's number two in so we actually have a tech talk from GDC where we talked about the fornite layering setup in fortnite a our layering like we had one an AR B set and every almost every single weapon was layered dynamically on top of that an AR post the two things to pay attention for here is that single poses are somewhat easy to layer on top but if you are layering animation it gets complicated because motion matching it doesn't work with syn groups it it is it is a different concept so you need to find a separate way either with a separate blend stack where you're pushing your additives over and over or using the motion matching graph that I showed before fantastic next question here is how is motion matching performance compared to State machines in the ABP he could you repeat that one I don't think I understood absolutely uh how is motion matching performance compared to State machines in okay so your the selection uh we actually measured it to be faster than some of the previous cases that we had in fornite the sometimes if you have if you're searching 500 animations and you you are unlucky with your search it is going to perform worse but generally I've seen projects that optimize super optimize the saate machine and to get to that point and motion matching already being comparable it's pretty good I I'd recommend trying that and profiling like with everything awesome uh this next question here this is another um probably more an opinion uh piece than anything else from you but when would you recommend using motion motion matching we're at three I told you versus using blend spaces well number one you can use blend spaces in motion matching so that's a nice bonus I won't say that that that feature is probably not as production ready as everything else that is is around motion matching but generally the idea is this if you have like a specific place in that's blend space that you want to be at then motion matching is fine but if you want some like additive layering on top then no blend spaces like I can I can give an example here a lens I would recommend using a blend space at set of motion matching for that and that's what we do in the sample we have an added lean that lets you do the Leaning and when you reach a discrete threshold then we switch to an arc animation that's how I would recommend using both fantastic all right well with that those were the main ones I think for motion matching so now we'll get into a couple of rendering questions real quick uh first one here is with these new rendering features do you think it pays to migrate to substrate um substrate is not really production ready um so I part I guess part of the the answer would be their orthogonal um substrate is not really connected to to any of the features that I discussed today um but as far as moving over to substrate as a separate question um I I don't think we're currently recommending that yet it's still in development it's still in an experimental state so I don't think we recommend it for production use cases um it's there to experiment with and you know it it is functional we have we've showed it off um over I guess a year ago now in the in the electric dreams demo so uh I mean there there is something to work there but uh but yeah it's there's still some work left to be done to get it to the point where um the the kind of key thing that's that's holding it back um the the thing that we're looking for to get it to that point um is we want to make sure that there's no performance regressions and our our test case to to to show up to show that there is no performance regressions is that we'd be able to enable it in fortnite not necessarily to use the new feature set but just to move over to the new framework such that we can deprecate the old code and have everything running through the the new like substrate framework and then be able to start using its new features but just to make that sort of like Baseline if you're not exploiting any of the new stuff just the Baseline performance of it to be at exact parody and it's not quite there yet um so we haven't been able to do that switch and that's the reason why we haven't yet said um it's it's ready to go so I guess it depends a lot on your situation and what you're looking to use it for for how I would be able to answer that fair enough all right this next question um you may or may not have the answer for this one but we'll see um is there a reason that the displacement intensity was moved inside the material Tab versus it being able to be set as a parameter as they could with the old displacement I very much can answer that um the the reason why is I need to know um what that parameter is um in a fixed function Shader that is doing culling of patches um it needs to not be Shader driven logic it needs to be something that is just a number um and a number that can be just queried off of any material um that number that magnitude is controlling what the the Min and Max possible displacement that can happen off the surface so I can use that to determine what the bounding box or uh patches or sub patches that that have gotten tesselated for how big they are on screen what their bounding box would be so it can do frone calling or occlusion calling um I don't know what the exact displacement is because that would require running the Shader to know it and then you've got like a you know a chicken and egg problem I need to know I I wanted to be able to color those things before doing the work to tesate them and displace them and the only the only thing that I have to to work with as far as the the overall bounds is what that Min and Max possible is and that's also the reason why I stated earlier um that you should be very careful for what you set your magnitude for so that you don't set it to be a really large possible magnitude that gives you a full range of possible values that you'd use in displacement and then use only a small portion of them you really want to set that magn magnitude such that you're using the full like zero to one range of displacement um so that that is acting as a good actual bounds for your displacement function so that your bounding boxes are as tight as they possibly could be awesome then the next question for you is would you recommend nanite tessellation for things like cinematics and or non-playable experiences in games or do you feel it's better used for other media besides games uh I think it's even useful for games I just want to caution you as far as like what what the cost is there to hit like a 60 HZ console title um to that it's going to be it's going to have some expense that is more than if it was just a high poly nanite mesh that doesn't mean that it's necessarily so expensive that it can't run in real time or in a games context it's just it's not equivalent to if you just um did the like static uh displacement feature or like um sculpted out what that displacement was in a high poly mesh and made it a normal like nanite mesh it's going to be a bit more expensive to use the the dynamic uh tesselation and displacement like it has to evaluate the displacement um Shader like that's just part of the cost and then there is a additional cost relatively small but there's also a cost of doing the tessellation work um outside of just rendering the triangles which is what nor nanites normally doing so I guess I just rem recommend using it um where it's useful and not everywhere and just kind of like use it more in sort of special case situations but yeah the performance constraints you're doing something offline or you're doing it on high-end PC Hardware that's not uh like running on a PlayStation or something like that then you've got more compute power to to utilize you could probably use it in a lot more places a lot more aggressively so yeah I guess it's as as it always is in in game development or or real time rendering in general um just test like try things see how see what your frame rate is do basic profiling just do profile GPU see if the Nite um time is is really expensive and if it's if it's running well for you then you're good all right fantastic all right well with that I think that's probably a good place to call it there for today um again if there were any questions that you all had that are watching that we didn't get a chance to get too we will answer them um we'll just collect all of them that we had and we'll probably what I'll end up doing is follow up with a forum post that'll have um some answers just in one big old conglomeration for all of you to check out but with that I want to take a second to thank all of the guests for coming on today and chatting about the features and going over this overview with us of course as is inherent by the title of it it is an overview there is tons of stuff that came out in 5.4 so make sure that you check out the release notes to really dig into all the details of what happened but thank you all for taking the time to be here with us today and to chat with us and answer some questions all right well with that uh the little wrap up for everyone watching of course thank you for being here and for interacting and asking questions the show wouldn't be what it is without you and you being here to watch so thank you also for taking the time to be here with us if you missed any part of the stream there was tons of really good information in it no worries we post all of our streams in video format that can be viewed On Demand on both our twitch and YouTube channel at Unreal Engine you can also keep up with all the latest news and all that good stuff on both the Epic developer Community as well as our socials at Unreal Engine so make sure you keep up with stuff there and tomorrow we have another project Titan live stream project Titan is the massive I think now over 4,000 people developer project where everybody is just making one giant world alog together it's absolute chaos and a lot of fun if you'd like to see how progress is going on that you can check it out tomorrow at 11:00 a.m. EDT but with that that's everything I managed to do that without losing my breath so thank you all once again for coming to be here today and we'll see all the rest of you all later bye everybody bye I know bye thank you
Info
Channel: Unreal Engine
Views: 54,411
Rating: undefined out of 5
Keywords: Unreal Engine, Epic Games, UE4, Unreal, Game Engine, Game Dev, Game Development
Id: RuYHfVKfrMM
Channel Id: undefined
Length: 136min 20sec (8180 seconds)
Published: Thu May 02 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.